Я просматриваю документацию Boost.Spirit X3, которую я смог найти, - что мало ... и думаю, что я хотел бы использовать это для моего следующего проекта синтаксического анализа. Примечательно, что я никогда не использовал Boost.Spirit Classic или V2, но использовал flex/bison и ANTLR.Состояние начала анализатора Spirit X3?
Формат Я ищу для синтаксического анализа, в самом общем смысле, выглядит следующим образом:
unimportant
foo
bar
# BEGIN
parse this
...
# END
ignore this
Где только текст между «# НАЧАТЬ» и «# END» разбирается и все остальное полностью игнорируется. Я пытаюсь найти эффективный способ сделать это в синтаксисе X3. Некоторые идеи, которые у меня были:
- Используйте основные функции поиска строк, чтобы ограничить диапазон синтаксического анализа. Это кажется худшим вариантом, так как текст будет обрабатываться несколько раз, а не за один проход.
- Посмотрите на Spirit.Lex. Снова я с трудом нахожу любой достойный материал для чтения на Spirit.Lex, но похоже, что Лекс обеспечивает лексерские состояния начала, которые будут традиционным способом обработки этой работы. В стороне, так как X3 является C++ 14-based, а Spirit.Lex построен поверх lexertl, есть ли опция конфигурации или способ использования Spirit.Lex с модернизированным lexertl14?
- Возможно, существует какой-то осмысленный способ справиться с этим в X3? Поскольку грамматика на самом деле чрезвычайно проста, я думаю, что отдельный лексер переборщил.
искать [] и опускать [], кажется, соответствующие инструменты, которые непосредственно выполняют то, о чем я просил. Спасибо. – Zac