在使用Maven构建时如何在Antlr4中导入语法?

时间:2013-08-08 10:46:37

标签: maven antlr

我正在尝试使用Maven构建一个ANTLR项目,项目结构就像

src/main +
      |-antlr4
             |-fo/bar
                   |-G1.g4
                   |-G2.g4
             |-imports

其中G1进口G2如:

grammar G1;
import G2;

但是,当我使用Maven构建时,我收到以下错误:

[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR, args=[G2, fo\bar\G1.g4], e=null, fileName='null', line=-1, charPosition=-1}

如果我将G1.g4G2.g4直接放在antlr4目录下,则无效。在我看来,当将语法文件放在一个包中时,它需要在import语句中使用特殊语法。

我注意到问题Antlr4 maven plugin cannot find grammar files in different directories,但在这里,语法位于一个目录中。

1 个答案:

答案 0 :(得分:11)

我认为你需要导入包中的G2.g4语法(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>

请注意配置libDirectory

相关问题