2008-09-30 45 views

回答

12

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

+2

看来你是对的。我刚刚在网上的某个地方读到:“If-then-else不能在上下文无关的优先/无谓语法中明确指定,例如EBNF” – ilitirit 2008-09-30 15:40:57

11

你将不得不微调BNF,但TinyPG是一个伟大的工具。

+0

尼斯找不到。谢谢。 – ilitirit 2008-10-03 12:25:44

+0

Tiny PG非常好,谢谢你的提示。 – Skurmedel 2009-08-14 14:37:21

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

2

IronMeta是一个C#实现Alex Warth的OMeta;它是一个packrat PEG(解析表达式语法;使用偏向选择),因此语法比使用yacc-like LALR系统时更清晰。