我有一个带有 Antlr3 语法文件的 C# 解决方案,我正在尝试升级到 Anltr4。事实证明语法是最简单的部分(它变得更好,大小也减少了三分之一!)。事实证明,生成解析器是棘手的部分。
在旧的解决方案中,我只是在语法文件更改时运行 AntlrWorks 来更新词法分析器和解析器 .cs 文件。词法分析器和解析器与语法直接包含在同一项目中,因此解析器周围的框架可以直接使用它们。
对于 C# 的 Antlr4 目标,我注意到(至少默认情况下)生成的解析器 C# 类的输出路径位于中间目录中,例如obj\调试。这意味着我无法在同一个项目中直接使用解析器。如果我希望生成的源在我的 sln 中可用,我是否应该更改输出路径?我不想把它放在我的 sln 中吗?
我尝试为解析器生成创建一个单独的项目,即包含only语法文件。当使用 Antlr4 目标构建此项目时,可以从需要解析器类的项目中引用生成的程序集。但是,如果该项目包含在解决方案中,我仍然无法在 Visual Studio 中获得任何智能感知,因为它的智能感知基于加载项目的源文件,因此它仍然不太可用。我可以让它正常工作的唯一方法是构建然后卸载解析器项目,并让其他项目将其作为程序集文件而不是项目引用。
EDIT:
查看 antlr-interest 列表后,我发现此线程表明智能感知的问题可能是 Resharpers 的错误。如果是这种情况,那么我的问题是如何在我的解决方案中继续使用 Antlr4 和 Resharper?https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg
我找到了 Resharper 的扩展:ReSharper.ExternalCode.
Antlr 提示:添加obj\Debug
在 Resharper -> 代码检查 -> 外部代码并重新加载解决方案。
这对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)