我正在寻找一个能够构建解析器(使用C#)的工具,如果我给它一个BNF语法(例如http://savage.net.au/SQL/sql-2003-2.bnf)给定BNF语法输出C#的分析器发生器?
这样的生成器是否存在?
我正在寻找一个能够构建解析器(使用C#)的工具,如果我给它一个BNF语法(例如http://savage.net.au/SQL/sql-2003-2.bnf)给定BNF语法输出C#的分析器发生器?
这样的生成器是否存在?
通常BNF语法太模棱两可了。 ANTLR可能会对你正在寻找的东西有好处。
Visual Studio SDK实际上附带了词法分析器和分析器生成工具。这些被称为MPPG和MPLex,并且是Managed Babel包的一部分。虽然将它们捆绑在SDK中的目的是为Visual Studio开发语言扩展,但它们完全可用于创建通用的AST发布解析器。
MPLex和MPPG基于GPLEX和GPPG(昆士兰科技大学的项目),并以与Lex和Yacc类似的方式使用。 SDK还包含MSBuild操作,用于使解析器生成成为常规生成过程的一部分。
这里是展示在行动MPLex和MPPG截屏:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx
看来你是对的。我刚刚在网上的某个地方读到:“If-then-else不能在上下文无关的优先/无谓语法中明确指定,例如EBNF” – ilitirit 2008-09-30 15:40:57