解析器生成器在给定BNF语法的情况下输出C#?
时间:2020-03-06 14:55:43 来源:igfitidea点击:
我正在寻找一种工具,如果我给它一个BNF语法(例如,http://savage.net.au/SQL/sql-2003-2.bnf),它将能够构建一个解析器(在C#中)。
是否存在这样的生成器?
解决方案
通常,BNF语法过于模棱两可。 ANTLR可能对我们正在寻找的东西有好处。
我们将需要稍微调整BNF,但是TinyPG是一个很棒的工具。
实际上,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