Java ANTLR4在导入时找不到语法

Java ANTLR4在导入时找不到语法,java,parsing,gradle,antlr,antlr4,Java,Parsing,Gradle,Antlr,Antlr4,我正试图将我的ANTLR4语法分割成多个文件,以便更容易地测试它们,我正在java项目中使用gradle作为构建工具 这两种语法都可以通过单独的方式正确编译,但当我将导入添加到主语法时,会出现下一个编译错误 错误(110):kanekotic/specflow/rider/SpecflowFeature.g4:3:7:无法找到或加载语法SpecflowScenario 继承的语法如下所示: grammar SpecflowScenario; @header { package kane

我正试图将我的ANTLR4语法分割成多个文件,以便更容易地测试它们,我正在java项目中使用gradle作为构建工具

这两种语法都可以通过单独的方式正确编译,但当我将导入添加到主语法时,会出现下一个编译错误

错误(110):kanekotic/specflow/rider/SpecflowFeature.g4:3:7:无法找到或加载语法SpecflowScenario

继承的
语法如下所示:

grammar SpecflowScenario;

@header {
    package kanekotic.specflow.rider;
}

scenario
    : 'Scenario: ';
grammar SpecflowFeature;

import SpecflowScenario;

@header {
    package kanekotic.specflow.rider;
}

file returns [List<String> values]
    @init { $values = new ArrayList<String>(); }
    : 'Feature: ' EOF;
plugins {
    id "org.jetbrains.intellij" version "0.1.10"
}

apply plugin: 'org.jetbrains.intellij'
apply plugin: 'java'
apply plugin: 'antlr'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

intellij {
    version '143.2370.31'
    pluginName 'Specflow Rider'
}

group 'kanekotic.specflow.rider'
version '0.1'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    antlr "org.antlr:antlr4:4.5"
    testCompile 'junit:junit:4.12'
    testCompile "org.mockito:mockito-core:2.+"
} 
main
语法如下所示:

grammar SpecflowScenario;

@header {
    package kanekotic.specflow.rider;
}

scenario
    : 'Scenario: ';
grammar SpecflowFeature;

import SpecflowScenario;

@header {
    package kanekotic.specflow.rider;
}

file returns [List<String> values]
    @init { $values = new ArrayList<String>(); }
    : 'Feature: ' EOF;
plugins {
    id "org.jetbrains.intellij" version "0.1.10"
}

apply plugin: 'org.jetbrains.intellij'
apply plugin: 'java'
apply plugin: 'antlr'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

intellij {
    version '143.2370.31'
    pluginName 'Specflow Rider'
}

group 'kanekotic.specflow.rider'
version '0.1'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    antlr "org.antlr:antlr4:4.5"
    testCompile 'junit:junit:4.12'
    testCompile "org.mockito:mockito-core:2.+"
} 

所有开源代码都在下一个链接中:

默认情况下,Antlr插件使用
src/main/Antlr
作为lib目录。由于要包含的语法文件位于
kanekotic/specflow/rider
中,请在gradle文件中使用以下代码包含此位置:

generateGrammarSource {
    arguments << "-lib" << "src/main/antlr/kanekotic/specflow/rider"
}
generateGrammarSource{

参数文件
SpecflowScenario.g4
中的语法是否在同一文件夹中?也许还可以发布gradle文件的一部分。@user3151902感谢您的回复,是的,它们位于同一目录中,您可以在编辑中看到我的gradle。还添加了repo作为其开放源代码。感谢您为我指出解决方案。我会接受一个小改动,因为文件不在
src/main/antlr
中,而是在
'src/main/antlr/kanekotic/specflow/rider'
中,所以答案可能应该是
'src/main/antlr/'
,而且我相信
src/main/antlr
是默认的库路径,就好像移到了它实际工作的根目录一样。谢谢你的观点把它删掉!我相应地编辑了我的答案。