当前位置: 首页 > 知识库问答 >
问题:

ANTLR4在导入时找不到语法

栾英资
2023-03-14

我正在尝试将我的ANTLR4语法拆分到多个文件中,这样我可以更容易地测试它们,我正在使用gradle作为java项目中的构建工具。

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;

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

共有1个答案

艾哲
2023-03-14

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

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

另见此梯度线程。

 类似资料:
  • 具有 ANTLR 4.7 我正在尝试使用ANTLR4的语法导入功能。看见 https://github.com/BITPlan/com.bitplan.antlr 以iri语法为例https://github.com/BITPlan/com.bitplan.antlr/tree/master/src/main/antlr4/com/bitplan/iri 这种语法基本上是试图分裂https://g

  • 我现在得到了... lexer语法的导入似乎正在加载。以下文件提供了该问题。 AQLCommentTest.G4 如何检查是否以及如何实际应用了antlr4导入语句?

  • 我试图将一个lexer语法导入到另一个lexer语法中。导入的语法使用不同的模式(在XMLLexer示例中,mode INSIDE和PROC_INSTR)。 如果我将导入的部分内联到主lexer定义中,解析器就可以工作,但我希望使用导入功能来进行干净的分离。(不是针对XML/HTML示例,而是在另一种情况下。) 是否有可能让它工作使用进口或这是一个ANTLR4的限制?

  • 我正在尝试用Maven构建一个ANTLR项目,项目结构如下所示 其中G1导入G2,类似于: 然而,当我使用Maven构建时,我得到以下错误: 如果我将和直接放在目录下,则不会有问题。在我看来,当把语法文件放在一个包中时,它需要在import语句中使用特殊的语法。 我注意到了一个问题,Antlr4 maven插件无法在不同的目录中找到语法文件,但在这里,语法在一个目录中。

  • 我必须使用谷歌云语音API在Xamarin.iOS应用程序中实现语音转换文本功能。 首先,我尝试使用google.cloud.speech.v1 Nuget包,但是gRPC库似乎不能与Xamarin一起工作(https://github.com/gRPC/gRPC/issues/1620,https://forums.Xamarin.com/discussion/94534/how-to-use-

  • 我有一个描述表达式的语法(原文,对吗?)。我想在其他语言中使用这种语言。 例如,其他语言. g4: 如果我使用,那么它会生成一个有效的解析器,但它不会生成或使用,而是生成和使用。这意味着我无法创建接受“ExpressionContext”并在其他项目中重用它们的方法。 ANTLR4有什么特性可以让它工作吗? 换句话说,我不想“导入”语法表达式,而是解析器和词法分析器。