解析器生成器在给定BNF语法的情况下输出C#?

时间:2008-09-30 15:32:03

标签: c# parsing bnf

我正在寻找能够构建解析器(在C#中)的工具,如果我给它一个BNF语法(例如http://savage.net.au/SQL/sql-2003-2.bnf

这样的发电机是否存在?

5 个答案:

答案 0 :(得分:13)

Visual Studio SDK实际上附带了词法分析器和解析器生成工具。这些被称为MPPG和MPLex,是Managed Babel包的一部分。虽然将它们与SDK捆绑在一起的目的是为Visual Studio开发语言扩展,但它们完全可用于创建通用的AST发射解析器。

MPLex和MPPG基于GPLEXGPPG(昆士兰科技大学的项目),并以类似于Lex和Yacc的方式使用。 SDK还包含MSBuild操作,用于使解析器生成成为常规构建过程的一部分。

这是一个播放MPLex和MPPG的截屏视频:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx

答案 1 :(得分:12)

通常BNF语法太模糊了。 ANTLR可能对您正在寻找的东西有益。

答案 2 :(得分:11)

您必须稍微调整BNF,但TinyPG是一个很棒的工具。

答案 3 :(得分:3)

另请看一下Irony:

http://irony.codeplex.com/

似乎很有希望

答案 4 :(得分:2)

IronMeta是Alex Warth OMeta的C#实现;它是一个packrat PEG(解析表达式语法;使用有偏见的选择),所以语法比使用类似yacc的LALR系统更清晰。