Csharp/C#教程:Antlr4 C#目标和生成文件的输出路径分享


Antlr4 C#目标和生成文件的输出路径

我有一个带有Antlr3语法文件的C#解决方案,我正在尝试升级到Anltr4。 事实certificate语法是容易的部分(它变得更好,并且大小的三分之一!)。 生成解析器结果是棘手的部分。

在旧的解决方案中,我只是运行AntlrWorks来更新语法文件更改时的词法分析器和解析器.cs文件。 词法分析器和解析器直接包含在与语法相同的项目中,因此解析器周围的框架可以直接使用它们。

使用C#的Antlr4目标,我注意到(至少默认情况下)生成的Parser C#类的输出路径位于中间目录中,例如obj Debug。 这意味着我不能直接在同一个项目中使用解析器。 如果我希望生成的源可以在我的sln中使用,我是否应该更改输出路径? 我不希望它在我的sln?

我尝试为解析器生成创建一个单独的项目,即包含语法文件的项目。 当使用Antlr4目标构建此项目时,可以从需要解析器类的项目中引用生成的程序集。 但是,如果这个项目包含在解决方案中,我仍然没有在visual studio中获得任何intellisense,因为它将intellisense基于加载项目的源文件,因此它仍然不太可用。 我能使其正常工作的唯一方法是构建然后卸载解析器项目,并让其他项目将其作为程序集文件而不是项目引用。

编辑:

在查看antlr-interest列表后,我发现这个线程表明intellisense的问题可能是Resharpers故障。 如果是这种情况,那么我的问题是如何在我的解决方案中继续使用Antlr4和Resharper? https://groups.google.com/forum/#!topic/antlr-discussion/QSuJXphaBDg

您遇到了ReSharper的已知错误。 ANTLR 3和ANTLR 4 C#构建集成是可靠的,并使用Microsoft与其他语言和代码生成任务一起使用的长期模式。 你的选择是:

  1. 停止使用ReSharper
  2. 让ReSharper的作者解决缺乏对此function的支持,或
  3. 修改ANTLR 4目标以解决ReSharper中的限制问题,这将在构建中引入其他问题,这些问题可能会或可能不会被您接受。

选项1当然是最便宜的,并且最有可能为您的项目提供可靠的长期支持。

我找到了Resharper的扩展: ReSharper.ExternalCode 。

Antlr提示:在Resharper中添加objDebug – >代码检查 – >外部代码和重新加载解决方案。

它对我有用。

有一种简单的方法可以充分利用Antlr 4和Visual Studio。 你有一个单独的语法项目和实施项目,但你错过了几个步骤。

请按照以下步骤使Intellisense正常工作

上述就是C#学习教程:Antlr4 C#目标和生成文件的输出路径分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  • 在您的解决方案中,设置您的项目结构如下:
  • 实施项目
  • 编写并编译语法。
  • 在“生成文件的链接”文件夹中,右键单击该文件夹,然后单击“添加” – >“现有项”
  • 浏览到Grammar Project obj Debug并选择所有生成的解析器文件。
  • 下一步很重要。 在添加按钮上有一个小的下拉箭头。 单击下拉箭头,然后单击“添加为链接”。
  • Intellisense现在可以用于生成的解析器类,甚至不必禁用ReSharper。
  • 本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

    ctvol管理联系方式QQ:251552304

    本文章地址:https://www.ctvol.com/cdevelopment/1021381.html

    (0)
    上一篇 2022年1月6日
    下一篇 2022年1月6日

    精彩推荐