4

我正在使用 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 找不到我正在导入的其他文件?

谢谢,瑞恩。

4

2 回答 2

5

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

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

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

于 2013-10-30T10:31:56.697 回答
1

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

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

于 2013-06-13T15:11:14.137 回答