如何从Antlr4 4.2(C#)升级到最新版本(4.4?)

时间:2014-07-25 21:14:04

标签: antlr4

在ANTLR下载页面上,它指出最新版本的ANTLR是4.4。从同一页面上的C#Target部分,单击“ANTLR 4 C#Target(最新版本)”,我将看到4.3目标版本GitHub页面,其中包含Readme.md的链接,单击此链接后会生成404。

问题1:虽然下载页面说明了C#4.4的最新版本,但我通过NuGet获得的版本是4.3。这是否意味着4.4不适用于C#?

问题2:在哪里可以找到与我从NuGet获得的代码生成的代码生成工具(即Antlr 4.3)?

我们尝试使用antlr-4.4-complete.jar进行代码生成 - 我们在构建脚本中替换了之前的jar(antlr4-csharp-4.0.1-SNAPSHOT-complete.jar),现在我们得到:“error (31):从版本4.4“开始,ANTLR无法生成CSharp_v4_5代码(我们之前没有得到)。我们还尝试了antlr-4.3-complete.jar并得到了类似的结果。

我们需要利用最新版本?

1 个答案:

答案 0 :(得分:1)

首先,我更正了发行说明中Readme.md的链接。感谢您指出,虽然通知维护者的更可靠的方法是file an issue directly for the project

其次,C#目标不是基于antlr.org上发布的ANTLR版本,而是基于我创建的项目的分支,以优化性能和(尤其)与解析高度复杂的语法相关的内存开销。这些工具使用不同的序列化格式,不可互换。

C#代码生成器通过NuGet分发,如自述文件中所述。

ANTLR 4.4与ANTLR 4.3的主要区别如下:

  1. 包含其他目标(与C#目标无关,因为运行时库不是C#,也使用其他序列化格式)
  2. 该工具中对用户影响最小的错误修复(它会抛出异常,而不是在代码生成时报告特定类型语法错误的错误)
  3. 修复了指定未知目标时发生的错误(也不适用于C#目标,因为MSBuild集成会自动选择正确的目标语言)
  4. 基于此,C#目标的4.3版本在功能上等同于4.4。我等着发布" 4.4"版本,直到我可以解决其他性能问题和功能,这些问题和功能不适用于参考版本。特别是,我正在研究以下内容: