9

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

这样的发电机存在吗?

4

5 回答 5

13

通常 BNF 语法太模棱两可了。ANTLR 可能对您正在寻找的东西有好处。

于 2008-09-30T15:35:07.250 回答
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

于 2009-04-13T21:14:37.733 回答
11

您将不得不稍微调整 BNF,但TinyPG是一个很棒的工具。

于 2008-10-01T11:18:18.777 回答
3

也看看讽刺:

http://irony.codeplex.com/

看起来很有希望

于 2011-10-18T20:54:46.967 回答
2

IronMeta是 Alex Warth 的OMeta的 C# 实现;它是一个 Packrat PEG(解析表达式语法;使用有偏见的选择),因此语法比使用类似 yacc 的 LALR 系统时更简洁。

于 2012-12-04T16:54:51.497 回答