当前位置:  开发笔记 > 编程语言 > 正文

什么更好,ANTLR或JavaCC?

如何解决《什么更好,ANTLR或JavaCC?》经验,为你挑选了5个好方法。

关注的是文档/可学习性,eclipse集成,工具,社区支持和性能(大致按此顺序).



1> Wilfred Spri..:

有几种选择你不应该排除:

JParsec是一个解析器组合框架,允许您完全从代码构造解析器.

Scala的解析器组合框架解决了类似问题; 但是,Scala的语法使所有这些都更具可读性.

然后还有John Metsker完成的解析器组合框架,用于他的书" 用Java构建解析器" ; 我不记得图书馆究竟在哪里,但它至少在互联网上漂浮着.它解决了同样的问题:您没有在单独的非Java文件中定义语法和标记定义; 相反,它都是Java.

Fortress,编程语言Sun已经开发多年了,现在似乎建立在这个工具包上:Rats.我没有太多的信息,但我认为如果他们将它用于他们的新编程语言,它可能有一些有趣的功能.

总的来说,我得到的印象是代码生成器的年代已经结束.如果我是你,我会使用Scala的解析器组合工具包.基本上,任何支持Scala的IDE也"支持"这个解析器组合框架.表现很好,AFAICT.

顺便说一句,ANTLR有一个相当不错的IDE支持,作为一个Eclipse插件(但也许在IntelliJ中也有一些东西 - 我不记得了.)所以,如果你选择经典的方法来定义你的词法分析器和解析器你认为,你的语言,ANTLR应该是你的选择.它是Java开发人员中最大的头脑,有工具支持,ANTLR的作者有一本很好的书.我不认为任何其他工具包可以声称.



2> Daniel..:

关于你提到的问题,我建议JavaCC是一个更好的选择.Java开发人员学习的速度更快,更容易(语法与普通Java非常相似),文档全面,Eclipse集成也足够.



3> jamesh..:

ANTLR功能更全面:它是一个更加丰富的盒子编译器编译器 - lexing,解析,AST,树转换和代码生成.

对于JavaCC,它更像是一个Parser生成器而不是一个编译器编译器.AST支持是通过另一个名为JJTree的lib提供的.



4> Charlie Mart..:

首先,在实践中对你来说真正重要的是你的眼睛是多么方便直观的符号.

话虽如此,我已经完成了ANTLR和JavaCC的项目,并发现ANTLR对于大多数事情都是非常重量级的.


同意,ANTLR似乎有更好的工具支持,但JavaCC生成简洁的代码,平均编译低于50K,没有外部.jar依赖.

5> SingleNegati..:

ANTLR对JavaCC的一个具体优势是它具有Java以外语言的生成器.这可能会使您的语言更容易移植到其他地方.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有