我在使用语言解析器工具antlr的项目时遇到了问题。首先,当我创建项目并安装 antlr4 时,它已成功与语法文件 ECMAScript.g4 集成,但是一旦我添加了 antlr3 框架并在此下还有一个语法文件 JSDeobfucs.g,之后我尝试将其集成到现有项目中,然后项目停止构建并且不再创建词法分析器、解析器、侦听器等的文件, 什么输出编译错误:
[错误] 文件 'C:\Users\Dima\Desktop\Projects\C#\JsAstVisitor\JsAstVisitor\obj\Debug\ECMAScriptBaseListener.cs' 未找到。[错误]文件 'C:\Users\Dima\Desktop\Projects\C#\JsAstVisitor\JsAstVisitor\obj\Debug\ECMAScriptLexer.cs' 未找到。[错误]文件 'C:\Users\Dima\Desktop\Projects\C#\JsAstVisitor\JsAstVisitor\obj\Debug\ECMAScriptListener.cs' 未找到。[错误]文件 'C:\Users\Dima\Desktop\Projects\C#\JsAstVisitor\JsAstVisitor\obj\Debug\ECMAScriptParser.cs' 未找到。
对于Visual Studio 2017中的集成antlr3,我遵循了下一个说明。
虽然奇怪的是,没有为Visual Studio 2017创建类似的指令,因此目标构建的项目antlr不仅取决于antlr框架版本
。,但在Visual Studio版本上。以及,在最新版本的Visual Studio antlr 3和4中不支持图形nuget包管理器,但只有通过nuget管理器控制台我才能安装它们。这是指向我的项目的链接(我无法在此处将存档附加到项目中,因为我认为不支持所有文件类型的堆栈溢出(。
因此,请说我:
这里可能有什么问题?
如何解决?
真的是在一个C#中的Visual Studio吗 投影两个不同版本的 ANTLR 冲突和意志冲突 彼此???
如果两个版本的 antlr 在单个版本中发生冲突 项目,那么现在如何做 antlr4 再次在我当前的工作中工作 至少项目,同时我不会做项目 最初,如果这可能当然是???
附言我在这里发现了 C# 目标中 antlr 源代码生成的类似问题:
使用 ANTLR 通过 C# 解析C++
正如我了解我可以使用 IKVM 的内容,但我不明白:它如何帮助我解决 C# 项目中 antlr 集成的常见问题。无论如何,请帮助我。
我遇到了同样的问题,这解决了它- "您需要右键单击解决方案资源管理器中的语法文件,然后选择"属性"。在属性窗口中,配置以下项目。
构建操作:Antlr4
自定义工具:MSBuild:编译
自定义工具命名空间:您希望生成的类位于其中的命名空间的完整名称。ANTLR 语言支持扩展根据为 C# 项目配置的根命名空间以及语法所在的项目中的子文件夹来配置此字段。
参考 - https://github.com/tunnelvisionlabs/antlr4cs