antlr4导入maven eclipse组合不工作可以';无法找到或加载语法

antlr4导入maven eclipse组合不工作可以';无法找到或加载语法,eclipse,maven,maven-plugin,antlr4,Eclipse,Maven,Maven Plugin,Antlr4,与 ANTLR 4.7 Antlr4.7Maven插件 Eclipse Neon 4.6.2 我正在尝试使用ANTLR4的语法导入功能。 看 以iri语法为例 该语法基本上是试图将文本分为三部分: 分析器 雷克瑟 进口基本lexer零件 此时,我收到错误消息: 无法找到或加载语法LexBasic 我查过了 并向 并在以下网站上撰写了一篇维基文章: 然后,我将LexBasic.g4文件放入src/main/antlr4/imports目录并 错误依然存在。仅当我将LexBa

  • ANTLR 4.7
  • Antlr4.7Maven插件
  • Eclipse Neon 4.6.2
我正在尝试使用ANTLR4的语法导入功能。 看

以iri语法为例

该语法基本上是试图将文本分为三部分:

  • 分析器
  • 雷克瑟
  • 进口基本lexer零件
  • 此时,我收到错误消息:

    无法找到或加载语法LexBasic

    我查过了

    并向

    并在以下网站上撰写了一篇维基文章:

    然后,我将LexBasic.g4文件放入src/main/antlr4/imports目录并 错误依然存在。仅当我将LexBasic.g4放入src/main/antl4时 在命令行上,事情会很顺利。但这似乎与当时的文件所说的有所不同

    在 我发现一条评论说构建助手maven插件不再需要了。我还是得试试这个

    在过去几天的测试中,我对不同的pom.xml配置有很多怪癖。我会收到如下错误消息:

    • 无法找到或加载语法LexBasic
    • 对未定义规则的引用
    或者eclipse环境将开始在一个无结束循环中从.g4文件重新生成java源文件。我必须从菜单中调用maven build来停止这样的循环

    我仍然不确定使用解析器lexer和导入的lexer文件设置项目的正确方法是使用antlr4、maven和eclipse

    • 设置此项的正确方法是什么?
    • 在哪里可以找到示例项目?

    • 沃尔夫冈,我现在正处于类似的任务当中。我不知道进口选项。谢谢你。通过使用中引用的Maven配置,我能够像使用import语句一样成功地编译所有内容。然而,我认为问题在于Antlr4IDE插件本身。语法可以编译,但Eclipse应该识别导入。也可以在上面的帖子中查看Sam的评论。我知道他是ANTLR的一名贡献者,他的见解是正确的:也许我(和你)正在努力做的事情不值得付出努力。我会告诉你我还发现了什么。干杯。

      我对ANTLR 4.7、ANTLR v4 Maven插件、ANTLR 4 IDE Eclipse插件和Eclipse Oxygen也有同样的问题

      如果您在Eclipse的problems视图中看到错误消息
      找不到或加载语法
      ,它来自ANTLR 4 IDE Eclipse插件。因此,如果您遵循了的指导原则(例如,您将语法/词法文件放在
      src/main/antlr4
      目录下),这很好,您的maven项目应该编译无误。我从你的问题中了解到,你也是这样。为了消除eclipse插件的错误消息,我还需要将与源目录相同的目录添加到我的项目中(即,转到
      project settings/Java Build Path/(source tab)
      ,并将
      src/main/antlr4/…(yourgram.g)
      文件夹添加到源文件夹中

      更新

      我试图编译您的github repo,尽管缺少一些依赖项,但您的pom似乎很好。我还注意到您在示例中使用了
      org.antlr.v4.runtime.tree.gui.TreeViewer
      ,该示例自antlr 4.5.1以来不可用,因此您可以使用早期的antlr版本(例如4.5),或取消对此代码的注释。我为您创建了一个拉取请求,以便您可以查看我的更改


      另一个注意事项(当我在玩你的项目时)是,antlr4ide插件会在每个语法文件(取决于它)中的每一个小更改生成LexBasic.g4 lexer,这看起来很烦人。我建议在项目设置中禁用该工具(
      ANTLR4/tool
      )。无论如何,您都将通过maven编译该项目。因此,您仍然可以使用antlr4ide的基本功能(例如语法高亮显示、索引)对于该项目,但它不会为每个小更改重新生成语法。

      感谢您的研究。您的设置与我的类似。主要问题仍然是可能的无休止循环,我无法找出原因。这个“无休止循环”听起来很有趣,所以我仔细查看了您的项目。查看我在更新的答复。