Java 无法使用Eclipse开普勒在组合语法中导入antlr4 lexer语法
鉴于: 简单。g4Java 无法使用Eclipse开普勒在组合语法中导入antlr4 lexer语法,java,maven,antlr4,eclipse-kepler,Java,Maven,Antlr4,Eclipse Kepler,鉴于: 简单。g4 grammar Simple; import SimpleLexer; prog : entry+ EOF; entry : a semi tail; semi : ':'; tail : TAIL; a : 'a'; W:; lexer grammar SimpleLexer; TAIL : [a-z]+; SimpleLexer.g4 grammar Simple; import SimpleLexer; prog : entry+ EOF; entry :
grammar Simple;
import SimpleLexer;
prog : entry+ EOF;
entry : a semi tail;
semi : ':';
tail : TAIL;
a : 'a';
W:;
lexer grammar SimpleLexer;
TAIL : [a-z]+;
SimpleLexer.g4
grammar Simple;
import SimpleLexer;
prog : entry+ EOF;
entry : a semi tail;
semi : ':';
tail : TAIL;
a : 'a';
W:;
lexer grammar SimpleLexer;
TAIL : [a-z]+;
它们都在“src/main/antlr4”下的同一个包中
Maven插件:
...
org.codehaus.mojo
构建助手maven插件
1.8
生成源
添加源
目标/生成源/antlr4
org.antlr
antlr4 maven插件
4.2
antlr4
org.eclipse.m2e
生命周期映射
1.0.0
org.antlr
antlr4 maven插件
[4.2,)
antlr4
真的
antlr eclipse插件的版本:
ANTLR 4 SDK Feature 0.1.1.201401151138 antlr4ide.sdk.feature.group
Eclipse版本:
Version: Kepler Service Release 2
Build id: 20140224-0627
eclipse在Simple.g4中的import语句中给出的错误是:
can't find or load grammar 'SimpleLexer' from 'Simple.g4'
环境适用于单文件语法。您不需要build helper maven插件来添加生成的文件夹,因为插件将自己添加。在Eclipse中,您可能需要在Eclipse项目中手动添加目标/生成/文件夹。这是antlr4 maven插件的一个不足之处。是的,删除帮助器插件现在有一个更有希望的错误:
error(113):Simple.g4:3:7:组合语法“Simple”和导入的lexer语法“SimpleLexer”都生成“SimpleLexer”
。建议?ANTLR 4.2应完全支持m2e,无需任何额外配置。您可以删除构建助手maven插件
和整个插件管理
块。添加这个特性是。没错,已经导入并运行了语法,没有任何警告或错误。多谢了,这是故事的一半。eclipse插件实际上使用了antlr 4.1,并在save上自动运行Build,这使得情况更加奇怪,并且隐藏了在控制台中运行maven或作为纯maven eclipse su使用时的实际结果因此,我也删除了eclipse antlr4插件。除此之外,导入的lexer应该在src/main/antlr4/imports中,我将lexer名称从SimpleLexer重命名为其他名称,因为antlr试图生成具有重复名称的java文件。因此,不要命名语法,例如G.g4和GLexer.g4,这将生成错误113