我工作在Java编译器的设计项目。 词法分析完成后(使用JFLEX),我想知道这yacc工具将是最好的(最有效,最容易使用的,等等)做语法分析和原因。
Answer 1:
如果你特别希望YACC类似的行为(表驱动的),我知道只有一个是CUP 。
在Java世界中,似乎越来越多的人对递归下降解析器像瘦ANTLR或JavaCC的 。
和效率是很少需要选择一个解析器生成器。
Answer 2:
在过去,我用ANLTR两个词法和语法分析器,以及JFlex的网页上说,它可以用ANTLR互操作。 我不会说ANTLR的在线文档是巨大的。 我结束了在投资“权威ANTLR的参考” ,这帮助很大。
Answer 3:
GNU野牛有一个Java接口,
http://www.gnu.org/software/bison/manual/html_node/Java-Bison-Interface.html
你可以用它去生成Java代码。
Answer 4:
还有JACC。
JACC即将接近YACC,你可以得到,但它是用纯Java实现,并生成Java解析器。
它与JFLEX接口以及
http://web.cecs.pdx.edu/~mpj/jacc/
Answer 5:
另一种选择将是GOLD分析器 。
与许多替代品,黄金解析器产生从语法分析表,并将它们放在一个二进制,非可执行文件。 每个支持的语言则有一个发动机,其读取二进制表和分析你的源文件。
我没有用Java实现具体,但使用相当不错的成绩了德尔福的发动机。
文章来源: Yacc equivalent for Java