Когда вы «работаете над новым языком» и пытаетесь получить справочный BNF правильно, вы, вероятно, не хотите смещать вашу справочную грамматику в сторону какого-либо конкретного генератора синтаксического анализатора.Одна из проблем написания тестовой грамматики для Bison (LALR (1)) или ANTLR (LL *) заключается в том, что вы делаете именно это.Вы также не хотите зацикливаться на том, «как я кодирую правила BNF таким образом, чтобы заставить его фактически анализировать», предположительно, потому что вы заинтересованы в работе над грамматикой, а не в работе генератора парсеров.
Так что я бы порекомендовал использовать генератор контекстно-свободных анализаторов.Это позволит вам написать грамматику в наиболее естественной форме с минимальными усилиями.Это может означать отказ от «текстового редактора», «окна тестирования редактора», ... но по моему опыту (проверьте мою биографию переполнения стека) использование генератора неконтекстного синтаксического анализатора полностью перекрывает эти тонкости.Edit-save-parse просто не требует больших усилий.
Я понимаю, что у Bison есть опция GLR, которая обеспечивает генерацию синтаксического анализатора без контекста, и с открытым исходным кодом, так что это может быть сделано только длятестирование грамматики.
Наш инструментарий реинжиниринга программного обеспечения DMS является коммерческим и также содержит синтаксический анализатор GLR, который использовался для реализации более 30 + полных языков, включая C, C ++ и COBOL вряд диалектов, а также более современные языки, такие как Python, Ruby, PHP, ....
Разница между DMS и Bison заключается в том, что DMS разработан для поддержки всех аспектов построения полного языкаанализатор / переводчик (Unicode lexing, анализ GLR с отчетами об ошибках и их восстановлением, автоматическое построение дерева, построение таблицы символов, анализ управления и потока данных, преобразования, prettyprinting, ...).Если вы хотите серьезно оценить свой «новый язык», вам, в конечном счете, придется все это делать, и Бизон - лишь маленький шаг на этом пути.DMS будет нести вас весь путь.