【问题标题】:How to upgrade from Antlr4 4.2 (C#) to latest verion (4.4?)如何从 Antlr4 4.2 (C#) 升级到最新版本 (4.4?)
【发布时间】:2014-07-26 08:09:37
【问题描述】:

在 ANTLR 下载页面上,它指出 ANTLR 的最新版本是 4.4。在同一页面的 C# Target 部分,单击“ANTLR 4 C# Target (Latest Release)”将我带到 4.3 Target Release 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),现在我们得到:“错误(31): ANTLR 无法生成版本 4.4 的 CSharp_v4_5 代码”(我们之前没有得到)。我们还尝试了 antlr-4.3-complete.jar 并得到了类似的结果。

我们需要什么来利用最新版本?

【问题讨论】:

    标签: antlr4


    【解决方案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 集成会自动选择正确的目标语言)

    基于此,C# 目标的 4.3 版本在功能上等同于 4.4。我正在等待发布“4.4”版本,直到我可以解决不适用于参考版本的其他性能问题和功能。特别是,我正在做以下工作:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多