我有一个带有Antlr3语法文件的C#解决方案,我正在尝试升级到Anltr4。事实证明,语法很容易(它变得更好,大小只有三分之一!)。生成解析器结果是棘手的部分。
在旧的解决方案中,我只是在语法文件发生变化时运行AntlrWorks来更新词法分析器和解析器.cs文件。词法分析器和解析器直接包含在与语法相同的项目中,因此解析器周围的框架可以直接使用它们。
使用C#的Antlr4目标,我注意到(至少在默认情况下)生成的Parser C#类的输出路径位于中间目录中,例如OBJ \调试。这意味着我无法在同一个项目中直接使用解析器。如果我希望生成的源可以在我的sln中使用,我是否应该更改输出路径?我不希望它在我的sln中吗?
我尝试为解析器生成创建一个单独的项目,即一个只包含 语法文件的项目。当使用Antlr4目标构建此项目时,可以从需要解析器类的项目中引用生成的程序集。但是,如果这个项目包含在解决方案中,我仍然没有在visual studio中获得任何intellisense,因为它将intellisense基于加载项目的源文件,所以它仍然不太可用。我能使其正常工作的唯一方法是构建然后卸载解析器项目,并让其他项目将其作为程序集文件而不是项目引用。
编辑:
在查看antlr-interest列表后,我发现这个帖子表明intellisense的问题可能是Resharpers故障。如果是这种情况,那么我的问题是如何在我的解决方案中继续使用Antlr4和Resharper? https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg
答案 0 :(得分:12)
我找到了Resharper的扩展程序:ReSharper.ExternalCode。
Antlr提示:在Resharper中添加obj\Debug
- >代码检查 - >外部代码和重新加载解决方案。
它对我有用。
答案 1 :(得分:11)
有一种简单的方法可以充分利用Antlr 4和Visual Studio。你有一个单独的语法项目和实施项目,但你错过了几个步骤。
按照以下步骤使Intellisense正常工作
答案 2 :(得分:4)
您遇到了ReSharper的已知错误。 ANTLR 3和ANTLR 4 C#构建集成是可靠的,并使用Microsoft与其他语言和代码生成任务一起使用的长期模式。您的选择是:
选项1当然是最便宜的,并且最有可能为您的项目提供可靠的长期支持。