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代码。
另一个选择是GOLD Parser 。
与许多替代方案不同,GOLD解析器根据语法生成解析表,并将它们放在二进制非可执行文件中。 然后,每种受支持的语言都有一个引擎,它读取二进制表并解析源文件。
我没有专门使用Java实现,但使用了Delphi引擎,效果相当不错。