我正在努力让Antlr使用NuGet工作。
我想要引用的Antlr.Runtime.dll的当前版本是3.1.3.42154。
问题在于,当我尝试构建我的Lexer和Parser .cs文件时,我会收到很多关于缺少类型的构建错误。
e.g。无法找到班级GrammarRuleAttribute
。我在查看Antlr.Runtime.dll并且该类不存在。但是,如果您查看GitHub上的Antlr项目,那么您可以看到GrammarRuleAttribute
确实应该在Antlr.Runtime.dll中。
这是一个错误还是我错过了什么?
答案 0 :(得分:4)
这是一个时间敏感的Q / A,因为ANTLR的C#目标(Johannes Luber的CSharp2和我自己的CSharp3)随时间而变化。我知道CSharp2目标最近有一些问题正在处理中。在撰写本文时,CSharp3目标的当前版本是3.3.1。
这是CSharp3 target documentation的链接,其中包含指向ANTLR工具的C#端口的几个下载链接,CSharp3运行时,MSBuild支持以及Visual Studio的一些工具。我发布新版本时会定期更新本文档。
编辑:如果在打开语法文件时遇到显示问题或异常消息,则应从Extension Manager卸载ANTLR 3,StringTemplate和Extensibility Framework扩展,并按照说明重新安装它们在链接的文档中。我已更新扩展程序以解决问题。
答案 1 :(得分:0)
使用CSharp2或CSharp3时出现此问题。我正在ANTLRWorks 1.5rc1中构建。
原来它与ANTLR版本有关。我使用NuGet安装了官方软件包,它是3.1.x.删除它并安装非官方3.4.1包后,它工作。
在我的测试语法中,仍有一个与HIDDEN频道有关的小问题。将其更改为隐藏(如Antlr3.Runtime中所定义)解决了问题