3

我花了一上午的时间来了解 ANTLR 的基础知识,才发现它只是 LL。我需要在我的语法中保留左递归,以便语法树具有从左到右的关联性。

编辑 2: 最近我需要另一个解析器生成器。虽然 MPEx 和 MPPG 工作,但配置起来有些冗长,所以我想我会再看一遍。这次我遇到了 Hime Parser Generator——在一两个小时内,我就有一个解析器将基本表达式转换为可以编译和调用的 LINQ 表达式。这很简单,我推荐它而不是 MPEx 和 MPPG。

编辑 1: GOLD Parser 可以满足我的需要,但它的源不可用,因此无法使用它。

MPlex 和 MPPG 是 Microsoft 的官方产品,分别是 Lex/Flex 和 Bison/Yacc。关于它们的文档并不多,它们也不是上述开源项目的完全克隆,但可以用这些来做我需要的事情。如果你不需要处理现实世界的政治,我推荐 GOLD,因为它有一个很好的调试 GUI 和一切,但如果你被迫开源或微软官方项目,MPLex 和 MPPG可能是要走的路。请注意,上述两个应用程序实际上只是 GPLEX 和 GPPG 的衍生产品。后两者可能比微软的衍生产品更新,因为我认为微软放弃了这个项目。我能找到的有关 Microsoft 衍生产品的唯一文档包含在 VS 2008 SDK 中的两个 PDF 文件中。微软拿走了pdf' 尽管随 VS 2010 SDK 一起提供了 exe,但还是解释了它们的用法。不过,看起来 pdf 和 exe 都不会随 2012 一起提供。

4

1 回答 1

2

生成 C# 代码的更流行的方法之一是:GOLD Parsing System (LALR)。

有关许多解析器生成器的比较,请参阅:http ://en.wikipedia.org/wiki/Comparison_of_parser_generators

于 2012-07-19T18:52:40.577 回答