«EBNF как лексер» бессмысленно. Но остальную часть вашего вопроса можно интерпретировать так: «Могу ли я получить синтаксический анализатор, управляемый EBNF, для создания AST в форме JSON?»
Конечно.
Большинство генераторов парсеров принимают (E)BNF и "parse". Большинство из них не производят AST автоматически; они заставляют программиста определять, как каждое правило должно генерировать узлы дерева. Они не будут работать для вашей задачи.
Некоторые генерируют AST как структуры данных автоматически, используя только BNF и исходный файл: ANTLR4 (я думаю) и наш набор инструментов для реинжиниринга программного обеспечения DMS. Ни один из них не создает JSON напрямую, но в обоих случаях должно быть просто написать (один раз) общий обходчик дерева, который выплевывает JSON.
BNF DMS будет обрабатывать любую контекстно-свободную грамматику, используя просто правила BNF. ANTLR4 обрабатывает большинство грамматик, но имеет ограничения на то, что вы можете писать (например, некоторые виды левой рекурсии запрещены), и требует от вас добавления дополнительной информации, устраняющей неоднозначность, если грамматика не является LL(1).
DMS будет экспортировать XML напрямую. См. этот пример.
person
Ira Baxter
schedule
15.11.2013