我们有一个为 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/