Генератор синтаксического анализа, который выводит C # с учетом грамматики BNF?[закрыто]
Вопрос
Я ищу инструмент, который сможет создать синтаксический анализатор (на C #), если я дам ему грамматику BNF (например. http://savage.net.au/SQL/sql-2003-2.bnf)
Существует ли такой генератор?
Решение
Обычно грамматики BNF слишком двусмысленны.ANTLR, вероятно, подойдет для того, что вы ищете.
Другие советы
Тот Самый Пакет SDK для Visual Studio на самом деле поставляется с инструментами генерации lexer и parser.Они называются MPPG и MPLex и являются частью Управляемый Вавилонский Столб посылка.Хотя целью их объединения с SDK является разработка языковых расширений для Visual Studio, они идеально подходят для создания общих анализаторов, использующих AST.
MPLex и MPPG основаны на GPLEX и GPPG (проекты Квинслендского технологического университета) и используются аналогично Lex и Yacc.SDK также содержит действия MSBuild, позволяющие сделать генерацию синтаксического анализатора частью обычного процесса сборки.
Вот скринкаст, показывающий MPLex и MPPG в действии:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx
Вам придется немного подправить BNF, но TinyPG это отличный инструмент.
Железный металл является реализацией на C # Алекса Варта ОМета;это привязка к пакету (синтаксический анализ грамматики выражения;использует предвзятый выбор), поэтому грамматики могут быть чище, чем при использовании системы LALR, подобной yacc.