Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用Eclipse开普勒在组合语法中导入antlr4 lexer语法_Java_Maven_Antlr4_Eclipse Kepler - Fatal编程技术网

Java 无法使用Eclipse开普勒在组合语法中导入antlr4 lexer语法

Java 无法使用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 :

鉴于:

简单。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 : 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