Yacc相当于Java

时间:2009-10-28 19:23:10

标签: java yacc

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

5 个答案:

答案 0 :(得分:18)

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

在Java世界中,似乎有更多人倾向于递归下降解析器,如ANTLRJavaCC

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

GNU Bison有一个Java接口,

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

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

答案 3 :(得分:3)

还有jacc。

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

它与jFlex接口良好

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

答案 4 :(得分:2)

另一种选择是GOLD Parser

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

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