4

我正在尝试使用 NuGet 让 Antlr 工作。

我试图引用的 Antlr.Runtime.dll 的当前版本是 3.1.3.42154。

问题是,当我尝试构建 Lexer 和 Parser .cs 文件时,我收到很多关于缺少类型的构建错误。

GrammarRuleAttribute例如,找不到该类。我查看了 Antlr.Runtime.dll 并且该类不存在。但是,如果您查看GitHub 上的 Antlr 项目,您会发现它GrammarRuleAttribute确实应该在 Antlr.Runtime.dll 中。

这是一个错误还是我错过了什么?

4

2 回答 2

4

这是一个对时间敏感的问答,因为 ANTLR 的 C# 目标(Johannes Luber 的 CSharp2 和我自己的 CSharp3)随时间而变化。我知道 CSharp2 目标最近遇到了一些正在处理的问题。在撰写本文时,CSharp3 目标的当前版本是 3.3.1。

这是CSharp3 目标文档的链接,其中包括几个指向 ANTLR 工具的 C# 端口、CSharp3 运行时、MSBuild 支持和 Visual Studio 的一些工具的下载链接。随着新版本的发布,我会定期更新此文档。

编辑:如果您在打开语法文件时遇到显示问题或异常消息,您应该从 Extension Manager 卸载 ANTLR 3、StringTemplate 和 Extensibility Framework 扩展,并按照链接文档中的说明重新安装它们。我已经更新了扩展来解决这个问题。

于 2011-02-23T02:19:02.160 回答
0

我在使用 CSharp2 或 CSharp3 时遇到了这个问题。我在 ANTLRWorks 1.5rc1 中构建。

原来与ANTLR版本有关。我使用 NuGet 安装了官方包,它是 3.1.x。删除它并安装非官方的 3.4.1 包后,它工作了。

在我的测试语法中,还有一个与 HIDDEN 频道有关的小问题。将其更改为隐藏(如 Antlr3.Runtime 中所定义)解决了该问题

于 2012-12-13T00:58:05.117 回答