Мой компилятор использует Dypgen. Это пользовательский анализатор GLR с большим количеством обогащений, поэтому он может анализировать многие языки. Бутстрап-грамматика - это EBNF (он поддерживает * + и? Непосредственно в ваших постановках). Он достаточно мощный, чтобы динамически загружать расширения, что делает мой компилятор: основная часть моего языка программирования динамически загружается при запуске компилятора.
Dypgen написан в Ocaml и генерирует код Ocaml.
Существует сингл C++ GLR под названием Elkhound, который достаточно силен для синтаксического анализа большей части C++.
Однако для ваших реальных требований вам не нужно серьезно разбираться в синтаксическом анализе: регулярный механизм соответствия выражению, вероятно, достаточно хорош. Googles re2 может быть подходящим (обеспечивает большую функциональность PCRE, намного быстрее и с интерфейсом C++).
Хотя это менее точно, это достаточно хорошо, потому что вы можете потребовать, чтобы встроенная документация придерживалась некоторых простых форматов. Большинство существующих встроенных документов уже делают это именно по этой причине.
Простые генераторы парсера для обработки * больше * языков? Генераторы парсеров причины сложны, чтобы справиться со множеством осложнений, которые, как кажется, привносят многие языки. –
См. Ответы на вопрос SO Source of Parsers for Programming Languages –