[英]ANTLR4 does not find grammar on import
我正在嘗試將ANTLR4語法拆分為多個文件,以便我可以更輕松地對其進行測試,我在Java項目中使用gradle作為構建工具。
兩種語法都可以通過單獨正確地編譯,但是當我將導入添加到主語法中時,出現下一個編譯錯誤
錯誤(110):kanekotic / specflow / rider / SpecflowFeature.g4:3:7:找不到或加載語法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.+"
}
所有的開源代碼都在下面的鏈接中: 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"
}
另請參見此gradle線程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.