antlr - ANTLR 和 JavaCC 哪个更好?

标签 antlr javacc

关注点是文档/可学习性、Eclipse 集成、工具、社区支持和性能(大致按此顺序)。

最佳答案

您不应排除以下几种选择:

  • JParsec是一个解析器组合器框架,允许您完全从代码构建解析器。
  • Scala's parser combinator framework解决类似的问题;然而,Scala 的语法使所有这些都更具可读性。
  • 还有 John Metsker 为他的书 Building Parsers With Java 完成的解析器组合器框架。 ;我不记得图书馆具体在哪里了,但至少以前在互联网上流传过。它解决了同样的问题:您不必在单独的非 Java 文件中定义语法和标记定义;相反,这一切都是Java。
  • Fortress,Sun 多年来一直致力于开发的编程语言,现在似乎是基于此工具包构建的:Rats 。我没有太多信息,但我认为如果他们将其用于新的编程语言,它可能有一些有趣的功能。

总的来说,我的印象是代码生成器的时代已经结束了。如果我是你,我会使用 Scala 的解析器组合器工具包。基本上,任何支持 Scala 的 IDE 也“支持”这个解析器组合器框架。性能很好,AFAICT。

顺便说一句,ANTLR 作为 Eclipse 插件有相当不错的 IDE 支持(但也许 IntelliJ 中也有一些东西 - 我不记得了。)所以,如果您选择定义词法分析器的经典方法并且如果您的语言之外的解析器,那么我认为 ANTLR 应该是您的选择。它在 Java 开发人员中拥有最大的关注度,有工具支持,并且有 ANTLR 作者的一本很棒的书。我认为其他任何工具包都无法做到这一点。

关于antlr - ANTLR 和 JavaCC 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382211/

相关文章:

antlr - 如何使用跳过规则跳过 "and"?

java - 为什么 JavaCC 无法在我的 Mac 上运行以及如何修复它?

java - 涉及两个扩展的选择冲突 :

java - JavaCC 中的 Epsilon 定义

java - 方法specialStateTransition(int, IntStream)的代码超过65535字节

java - 如何使用 ANTLR 获取直到文件末尾的所有内容?

JavaCC:如何处理包含常用单词的标记

error-handling - AST具有固定节点而不是antlr中的错误节点

dynamic - 使用ANTLR的动态类型语言示例