我正在使用antlr4 maven插件来构建我的maven项目,该项目使用antlr4:
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.0</version>
我从一个语法文件开始,得到了我的pom.xml设置,一切都很顺利。
然后我决定把我的语法分成逻辑部分,因此使用了几个语法文件,但在不同的目录下(因此生成的代码将放在单独的包中),但仍然都在同一个根目录下src/main/antlr4。
我在我的"top"级语法文件中使用import语句来导入其他所需的文件。
但是现在maven在尝试构建时给我以下错误:
[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR
为什么antlr找不到我正在导入的其他文件?
谢谢,瑞安。
我遇到了同样的问题,并通过以下配置解决:
<libDirectory>${basedir}/src/main/antlr4/yourGrammarDirectory</libDirectory>
看这里:如何在Antlr4中导入语法以使用maven构建
对于ANTLR 4.0版本,没有对跨多个目录的导入执行测试。
由于当前语法导入机制提供的有限好处(IMO),这目前是一个非常低优先级的特性。目前,通过使用导入共享语法文件不允许您共享生成的解析器或它们生成的解析树的代码。多年来,我一直在几十种产品(包括商业版本)上使用ANTLR,而且我从来没有发现复合语法带来的好处大于麻烦。(注意,我在这里谈论的是import
语句。将词法分析器和解析器语法分离到同一目录下的单独文件中通常是有益的,也是我喜欢的工作方式。