ANTLR4 在导入时找不到语法
ANTLR4 does not find grammar on import
我正在尝试将我的 ANTLR4 语法拆分成多个文件以便我可以更轻松地测试它们,我在 java 项目中使用 gradle 作为构建工具。
两种语法通过单独编译正确但是当我将导入添加到我的主语法时我得到下一个编译错误
error(110): kanekotic/specflow/rider/SpecflowFeature.g4:3:7: can't find or load grammar SpecflowScenario
inherited
语法如下:
grammar SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
scenario
: 'Scenario: ';
并且 main
语法看起来像:
grammar SpecflowFeature;
import SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
file returns [List<String> values]
@init { $values = new ArrayList<String>(); }
: 'Feature: ' EOF;
我做错了什么?这是不允许的吗?
编辑:
gradle.build
看起来像:
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.+"
}
所有开源代码都在下一个link中:https://github.com/kanekotic/Specflow.Rider/tree/antlr4_multiple_grammar
Antlr 插件默认使用 src/main/antlr
作为 lib 目录。由于要包含的语法文件位于 kanekotic/specflow/rider
中,请在 gradle 文件中使用以下代码来包含此位置:
generateGrammarSource {
arguments << "-lib" << "src/main/antlr/kanekotic/specflow/rider"
}
我正在尝试将我的 ANTLR4 语法拆分成多个文件以便我可以更轻松地测试它们,我在 java 项目中使用 gradle 作为构建工具。
两种语法通过单独编译正确但是当我将导入添加到我的主语法时我得到下一个编译错误
error(110): kanekotic/specflow/rider/SpecflowFeature.g4:3:7: can't find or load grammar SpecflowScenario
inherited
语法如下:
grammar SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
scenario
: 'Scenario: ';
并且 main
语法看起来像:
grammar SpecflowFeature;
import SpecflowScenario;
@header {
package kanekotic.specflow.rider;
}
file returns [List<String> values]
@init { $values = new ArrayList<String>(); }
: 'Feature: ' EOF;
我做错了什么?这是不允许的吗?
编辑:
gradle.build
看起来像:
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.+"
}
所有开源代码都在下一个link中:https://github.com/kanekotic/Specflow.Rider/tree/antlr4_multiple_grammar
Antlr 插件默认使用 src/main/antlr
作为 lib 目录。由于要包含的语法文件位于 kanekotic/specflow/rider
中,请在 gradle 文件中使用以下代码来包含此位置:
generateGrammarSource {
arguments << "-lib" << "src/main/antlr/kanekotic/specflow/rider"
}