Какое программное обеспечение генератора синтаксических анализаторов работает на C#, анализирует языки с левой рекурсией и может генерировать абстрактное синтаксическое дерево?

Я провел утро, разбираясь с основами ANTLR, чтобы выяснить, что это только LL. Мне нужно сохранить левую рекурсию в моей грамматике, чтобы синтаксическое дерево имело ассоциативность слева направо.

РЕДАКТИРОВАТЬ 2: Недавно мне был нужен другой генератор синтаксического анализатора. Хотя MPLex и MPPG работали, их было довольно долго настраивать, поэтому я подумал, что еще раз посмотрю. На этот раз я наткнулся на Hime Parser Generator - примерно через час или два у меня был парсер, преобразующий базовые выражения в выражения LINQ, которые можно было скомпилировать и вызвать. Это глупо просто, и я рекомендую его поверх MPLex и MPPG.

РЕДАКТИРОВАТЬ 1: GOLD Parser делает то, что мне было нужно, но его источник недоступен, поэтому его использование запрещено.

MPLex и MPPG являются официальными продуктами Microsoft, такими как Lex/Flex и Bison/Yacc соответственно. На них не так много документации, и они не совсем клоны упомянутых проектов с открытым исходным кодом, но с ними можно было делать то, что мне было нужно. Если вам не приходится иметь дело с реальной политикой, я бы порекомендовал GOLD, так как он имеет приятный графический интерфейс для отладки и все такое, но если вы вынуждены использовать либо проекты с открытым исходным кодом, либо официальные проекты Microsoft, MPLex и MPPG может быть, путь. Обратите внимание, что указанные два приложения действительно являются производными от GPLEX и GPPG. Последние два могут быть более современными, чем производные от Microsoft, так как я думаю, что Microsoft отказалась от проекта. Единственная документация, которую я смог найти для производных от Microsoft, содержится в двух PDF-файлах в VS 2008 SDK. Microsoft взяла PDF-файл, объясняющий их использование, несмотря на то, что выполнила exe с VS 2010 SDK. Похоже, что ни PDF, ни исполняемые файлы не будут поставляться с 2012 года, хотя.

1 ответ

Решение

Одним из наиболее популярных из них, генерирующих код на C#, может быть: Система синтаксического анализа GOLD (LALR).

Для сравнения многих генераторов синтаксического анализатора см.: http://en.wikipedia.org/wiki/Comparison_of_parser_generators

Другие вопросы по тегам