当前位置: 首页 > 知识库问答 >
问题:

Antlr4 maven插件在不同的目录中找不到语法文件

柯波
2023-03-14

我正在使用antlr4 maven插件构建使用antlr4的maven项目:

     <groupId>org.antlr</groupId>
     <artifactId>antlr4-maven-plugin</artifactId>
     <version>4.0</version>

我从一个语法文件开始,得到了我的pom。xml设置,一切都很好。

然后,我决定将语法拆分为逻辑部分,因此使用了几个语法文件,但它们位于不同的目录中(因此生成的代码将放在单独的包中),但仍然位于同一根src/main/antlr4目录下。

我在“顶层”语法文件中使用import语句来导入其他必需的文件。

但是现在maven在尝试构建时给我以下错误:

[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR

为什么antlr找不到我正在导入的其他文件?

谢谢Ryan。

共有2个答案

窦伟
2023-03-14

对于ANTLR 4.0版本,没有对跨多个目录的导入执行任何测试。

由于当前语法导入机制提供的好处有限(IMO),这目前是一个非常低优先级的功能。目前,通过使用导入共享语法文件将不允许您共享生成的解析器或它们生成的解析树的代码。多年来,我一直在数十种产品(包括商业发行版)上使用ANTLR,我从未发现复合语法能带来更多的好处而不是麻烦。(请注意,我在这里谈论的是import语句。将lexer和parser语法分离到同一目录中的不同文件中通常是有益的,也是我首选的工作方式。)

史淳
2023-03-14

我遇到了相同的问题,并通过以下配置解决了该问题:

<libDirectory>${basedir}/src/main/antlr4/yourGrammarDirectory</libDirectory>

看这里:如何在Antlr4中导入语法以使用maven构建

 类似资料:
  • 问题内容: 我坚信这只是一种语法-但是我不知道为什么我的代码: 将无法正常工作-它显然可以进入“ testfilefolder”文件夹,并告诉我该文件在那里,即未找到错误消息“ file2.txt”。因此它可以找到它来告诉我找不到它… 但是,我得到了这段代码: 奖金-这是做我想做的事情的好方法吗(从文件中读取并计算单词的出现频率)?这是我使用Python的第一天(尽管我有很多编程经验。) 我必须说

  • 问题内容: 我正在尝试编译Java文件,但收到此错误消息: 这表明javac找不到类BrightcoveAPI。我不知道问题出在哪里,因为它在同一目录中: 问题答案: 您需要在类路径中包含(当前目录): 一些注意事项: 在默认的类路径中,但是如果您用于指定一个显式的类路径,则仅当您指定它时才包括它。 这个答案的先前版本添加到了类路径的末尾,但是aioobe说它通常放在首位,这很有意义,因此我进行了

  • 很多教程都提到一个类--PsiClass,但我在我的项目中找不到这个类。我的构建。分级如下: 我的想法版本: IntelliJ IDEA 2019.3.1(社区版)构建#ic-193.5662.53,构建于2019年12月18日运行时版本:11.0.5+10-b520.17x86_64 VM:OpenJDK 64位服务器VM by JetBrains S.R.O macOS 10.15.3 GC:

  • 喂, 我尝试使用doxygen从一组文件夹生成代码文档。我的文件夹结构是这样的: 然后在配置文件中我在“default”配置文件中有以下设置(在这里的文档和其他问题中有说明): 我正在Linux Ubuntu(12.04LTS)上使用Doxygen1.8.4。 提前感谢您的提示和提示。

  • 问题内容: 我有一个目录结构如下的项目: 我应该如何编写一个可以在part / src中(或在任何地方)的makefile来在部分c / c ++源文件中完成/链接?/ src? 我可以做一些事情-I $ projectroot / part1 / src -I $ projectroot / part1 / inc -I $ projectroot / part2 / src … 如果那行得通,

  • 我将一个名为的文件夹放在存储java文件的同一目录中。 我试图找到文件夹,但得到一个找不到的错误。 打印