30

我正在使用 Java 进行编译器设计项目。词法分析已完成(使用 jflex),我想知道哪种类似 yacc 的工具最适合(最有效、最容易使用等)进行句法分析以及为什么。

4

5 回答 5

21

如果您特别想要类似 YACC 的行为(表驱动),我唯一知道的是CUP

在 Java 世界中,似乎越来越多的人倾向于像ANTLRJavaCC这样的递归下降解析器。

效率很少是选择解析器生成器的理由。

于 2009-10-28T19:37:50.060 回答
5

过去,我将 ANLTR 用于词法分析器和解析器,JFlex 主页说它可以与 ANTLR 互操作。我不会说 ANTLR 的在线文档很棒。我最终投资了 “The Definitive ANTLR reference”,这对我有很大帮助。

于 2009-10-28T19:35:04.327 回答
5

GNU Bison 有一个 Java 接口,

http://www.gnu.org/software/bison/manual/html_node/Java-Bison-Interface.html

您可以使用它生成 Java 代码。

于 2009-10-28T19:37:07.253 回答
3

还有雅克。

Jacc 与 yacc 差不多,但它是用纯 java 实现的,并生成一个 java 解析器。

它与 jFlex 的接口很好

http://web.cecs.pdx.edu/~mpj/jacc/

于 2012-11-13T00:05:12.943 回答
2

另一种选择是GOLD Parser

与许多替代方案不同,GOLD 解析器从语法生成解析表,并将它们放在二进制、非可执行文件中。然后,每种支持的语言都有一个引擎,可以读取二进制表并解析您的源文件。

我没有专门使用 Java 实现,但使用了 Delphi 引擎,结果相当不错。

于 2009-10-28T20:01:57.660 回答