我使用antlr4 maven插件来构建使用antlr4的maven项目:
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.0</version>
我从一个语法文件开始,并得到了我的pom.xml设置,一切都很好。
然后我决定将我的语法分成逻辑部分,因此在不同的目录中使用了几个语法文件(因此生成的代码将被放入不同的包中),但仍然在同一根src / main / antlr4目录下。< / p>
我在我的&#34; top&#34;中使用了import语句。级别语法文件,用于导入其他所需文件。
但是现在maven在尝试构建时给了我以下错误:
[ERROR] Message{errorType=CANNOT_FIND_IMPORTED_GRAMMAR
为什么不能找到我要导入的其他文件?
感谢, 莱恩。
答案 0 :(得分:4)
我遇到了同样的问题,并通过以下配置解决了问题:
<libDirectory>${basedir}/src/main/antlr4/yourGrammarDirectory</libDirectory>
答案 1 :(得分:1)
对于ANTLR 4.0版本,未对多个目录中的导入执行测试。
由于当前语法导入机制提供的有限效益(IMO),目前这是一个非常低优先级的功能。目前,使用导入共享语法文件将不允许您共享生成的解析器或它们生成的解析树的代码。我已经在数十种产品(包括商业版本)上使用ANTLR多年了,而且我没有一次发现复合语法提供比麻烦更多的好处。 (请注意,我在这里讨论import
语句。将词法分析器和解析器语法分隔到同一目录中的单独文件中通常是有益的,也是我首选的工作方式。)