Здравствуйте, pzhy, Вы писали:
P>Дефайн, этот конечно. Но если код не ваш, то да, менять опасно.
Да падало оно без этого дефайна пару раз просто, ЕМНИП.
P>Но в вашем коде парсера, большая часть кода не представлена, если она писалась, не только для этого, то конечно игра стоит свечь.
Да там всего что-то в районе 1100 строк получилось, из них наверное треть — комменты в виде старого спирит-парсера.
P>Если нет и неудовлетворяет спирит, то есть много других библиотек для ХМЛ. Но для более сложных, в плане грамматики, или контестного вызова функторов, мне кажется писать свой велосипед себе дороже. ИМХО.
Не-не-не. Требовалась полная совместимость с парсером из boost.serialization — чтобы после его замены все, что пользователи успели насохранять нашей программой, прочиталось. Поэтому сторонние библиотеки сразу отпали. Свое писалось пару дней и дня три — неделю отлаживалось — на поиск подходящей библиотеки я бы наверняка больше потратил, без каких-либо гарантий достижения нужного результата.
А контекстный вызов функторов делается при таком подходе на раз, я же как раз пример привел. Что касается сложных грамматик или быстрого разбора, то не о них речь — спирит же заявляется как recursive descent parser generator. Ну а рекурсивный спуск и без него тривиально пишется.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.