我正在尝试用Maven构建一个ANTLR项目,项目结构就像
src/main +
|-antlr4
|-fo/bar
|-G1.g4
|-G2.g4
|-imports
Run Code Online (Sandbox Code Playgroud)
其中G1进口G2如:
grammar G1;
import G2;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用Maven构建时,我收到以下错误:
[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR, args=[G2, fo\bar\G1.g4], e=null, fileName='null', line=-1, charPosition=-1}
Run Code Online (Sandbox Code Playgroud)
它的工作原理没有问题,如果我把G1.g4和G2.g4直属antlr4目录.在我看来,当将Grammar文件放在一个包中时,它需要在import语句中使用特殊语法.
我注意到Antlr4 maven插件无法在不同目录中找到语法文件的问题,但在这里,语法在一个目录中.
小智 11
我认为你需要G2.g4import package(src/main/antlr4/imports)中的语法,但你会复制你的语法.要避免这种情况,请更改ANTLR插件的导入设置,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.1</version>
<!-- vvv key part here vvv -->
<configuration>
<libDirectory>${basedir}/src/main/antlr4/fo/bar</libDirectory>
</configuration>
<!-- ^^^ key part here ^^^ -->
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
请注意配置libDirectory.
| 归档时间: |
|
| 查看次数: |
1867 次 |
| 最近记录: |