簡體   English   中英

ANTLR4在導入時找不到語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM