Yacc相当于Java

我正在使用Java编写一个编译器设计项目。 完成词法分析(使用jflex),我想知道哪种类似yacc的工具最适合(最有效,最容易使用等)进行语法分析以及原因。

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

在Java世界中,似乎有更多的人倾向于使用ANTLR或JavaCC这样的递归下降解析器。

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

在过去,我已经将leLer和解析器用于ANLTR,JFlex主页说它可以与ANTLR互操作。 我不会说ANTLR的在线文档非常棒。 我最终投资了“最终的ANTLR参考” ,这有很大帮助。

GNU Bison有一个Java界面,

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

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

还有jacc。

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

它与jFlex接口良好

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

另一个选择是GOLD Parser 。

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

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