antlr - 将 ANTLR v3 语法迁移到 ANTLR v4

标签 antlr

我们有一个为 antlr V3 编写的语法,我想迁移到 antlr v4。有没有迁移指南。我还想知道对现有 V3 语法的修改,以便我们很好地利用 v4 的功能。

最佳答案

如果您在 v3 或更早版本中使用 AST 构造和树解析,将会受到最大的打击。有很大的不同。您不再有 AST 生成(它现在生成解析树)或 Tree Walker(您现在使用解析器监听器或解析树访问者)。

我还没有看到迁移指南,但是如果您正在浏览 v4 文档并且当前使用 AST 或 Tree Walker,请查看有关解析树、监听器和访问者的 v4 部分。

大多数其他更改都是为了使编写解析器更容易,但如果您不小心,有些更改可能会给您带来一些麻烦。例如,您现在可以编写左递归规则,但是如果您依赖于某个优先级(例如在表达式语法中),您需要仔细匹配一些模式,以便 ANTLR4 编译器理解正确的优先级。

我强烈建议得到 Ter 的书,The Definitive ANTLR4 Reference只需通读一遍即可。它提供了您需要的大部分细节,尽管您仍然想玩一下。

我刚刚开始为 Eclipse 编写一个非常简单的 ANTLR4 插件,我希望尽快发布它。它需要更多的测试,但到目前为止它是一个基本的构建器。下一步是创建一个编辑器...

关于antlr - 将 ANTLR v3 语法迁移到 ANTLR v4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410784/

相关文章:

java - Gradle Antlr插件失败无法使用Antlr 3.5.2初始化类org.antlr.tool.ErrorManager

antlr - ANTLR语法中[\p{Lu}]的含义

java - 是否有任何使用 ANTLR 或类似语言实现的简单语言?

java - ANTLR 可以生成最终的解析器类吗?

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

java - antlr4 - 任何文本和关键字

visual-studio-2010 - 如何抑制自动生成文件的 stylecop/fxcop/Visual Studio 代码分析?

java - ANTLR 命题逻辑评估器

c++ - 限制对C++目标的递归

java - ANTLR myParser.java 未生成