在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并得到了类似的结果。
我们需要利用最新版本?
答案 0 :(得分:1)
首先,我更正了发行说明中Readme.md的链接。感谢您指出,虽然通知维护者的更可靠的方法是file an issue directly for the project。
其次,C#目标不是基于antlr.org上发布的ANTLR版本,而是基于我创建的项目的分支,以优化性能和(尤其)与解析高度复杂的语法相关的内存开销。这些工具使用不同的序列化格式,不可互换。
C#代码生成器通过NuGet分发,如自述文件中所述。
ANTLR 4.4与ANTLR 4.3的主要区别如下:
基于此,C#目标的4.3版本在功能上等同于4.4。我等着发布" 4.4"版本,直到我可以解决其他性能问题和功能,这些问题和功能不适用于参考版本。特别是,我正在研究以下内容:
baseContext
选项,shown here用于Java 8语法