Задача прочитать файл формата смахивающего на лисп.
При этом незнакомые блоки (нечто заключенное в скобки) нужно просто игнорировать.
Типичный пример: мы знаем и понимаем «(text ‘title’)», а на вход подали модернизированный вариант «(text ‘title’ (font ‘ariel’))».
Сейчас парсер реализован на bison/flex и валится на неописанной конструкции «font».
Вопрос 1: можно ли настроить bison/flex чтобы получить желаемый результат?
Вопрос 2: какие еще библиотеки хорошо справляются с подобными задачами?
Здравствуйте, Gregory Liokumovich, Вы писали:
GL>Задача прочитать файл формата смахивающего на лисп.
GL>При этом незнакомые блоки (нечто заключенное в скобки) нужно просто игнорировать.
GL>Типичный пример: мы знаем и понимаем «(text ‘title’)», а на вход подали модернизированный вариант «(text ‘title’ (font ‘ariel’))».
GL>Сейчас парсер реализован на bison/flex и валится на неописанной конструкции «font».
GL>Вопрос 1: можно ли настроить bison/flex чтобы получить желаемый результат?
GL>Вопрос 2: какие еще библиотеки хорошо справляются с подобными задачами?
boost.spirit
Подкупает то, что всё встроено в код — никаких внешних описаний грамматик, внешних утилит и т.д.
Если чо-нить не очень сложное, то вполне подходит
antlr
Очень крутой и мощный парсер
Когда искал парсеры о нём слышал в основном только хорошее
Но придётся убить достаточно времени на изучение и встраивание всего этого дела в процесс сборки