如果我给它一个 BNF 语法(例如http://savage.net.au/SQL/sql-2003-2.bnf),我正在寻找一个能够构建解析器(在 C# 中)的工具
这样的发电机存在吗?
如果我给它一个 BNF 语法(例如http://savage.net.au/SQL/sql-2003-2.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
您将不得不稍微调整 BNF,但TinyPG是一个很棒的工具。