gradle - 如何使用Gradle通过导入构建ANTLR 3语法?

标签 gradle antlr

我有一个基本语法(FooBase.g)和两个包含它的语法:

lexer grammar FooVariantA;
import base = FooBase;
...

lexer grammar FooVariantB;
import base = FooBase;
...

如果我将所有三个文件都放入src/main/antlr中,则将编译基本语法,这当然会失败:不应编译它,因为它引用了仅在“最终” FooVariantAFooVariantB语法中定义的某些规则。

但是,似乎我也无法像Maven一样创建src/main/antlr/imports子目录,因为Gradle ANTLR插件从不出现在这里:

error(7): cannot find or open file: FooBase.g; reason: java.io.FileNotFoundException: /home/test/test/src/main/antlr/FooBase.g (No such file or directory)



如何只编译两个最终语法,仍然能够找到导入的基本语法?

最佳答案

结果很简单:

generateGrammarSource {
    exclude ('**/*Base.g')
}

关于gradle - 如何使用Gradle通过导入构建ANTLR 3语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347820/

相关文章:

c# - 如何将字符串转换为其等效的 LINQ 表达式树?

android - Unity proguard:任务 ':transformClassesAndResourcesWithProguardForRelease'的执行失败

c# - 解析SQL查询并提取列名和表名

c - antlr 为 c 生成 ast 并解析 ast

maven - 像kotlin-gradle-plugin一样,如何将kotlin-js-library更新到1.1.3?

antlr - ANTLR 词法分析器中的特殊字符处理

java - 如何在ANTLR中找到children上下文的children?

android - 任务 ':app:transformClassesAndResourcesWithProguardForRelease' Android 执行失败

gradle - 我如何运行或创建一个Gradle任务来运行所有子项目并在多项目构建中建立根目录?

gradle - Flutter 应用程序卡在 "Running Gradle task ' assembleDebug'...”