6

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

4

1 回答 1

6

如果您在 v3 或更早版本中使用了 AST 构造和树解析,则最大的打击将是。那里差别很大。您不再有 AST 生成(它现在生成解析树)或 Tree Walkers(您现在使用解析器侦听器或解析树访问者)。

我还没有看到迁移指南,但是如果您正在浏览 v4 文档并且当前使用 AST 或 Tree Walkers,请查看关于 Parse Trees、Listeners 和 Visitor 的 v4 部分。

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

我强烈建议您购买 Ter 的书The Definitive ANTLR4 Reference,然后通读一遍。它提供了您需要的大部分细节,尽管您仍然想尝试一下。

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

于 2013-05-07T05:17:05.790 回答