gradle 构建如何处理 antlr3 和 antlr4 语法?
How can a gradle build handle both antlr3 and antlr4 grammars?
我有一个遗留项目,其中使用了 ANTLR3 和 ANTLR4 语法。我们想将 ant
构建系统更新为 gradle
。有一个antlr plugin for gradle支持ANTLR2/3/4。但是,显然它一次只支持这三个中的一个(取决于添加的依赖项)。
在我们的项目中,antlr3 文件的后缀为 .g
而 antlr4 语法的后缀为 .g4
.
是否有插件选项或替代插件允许我同时使用两个 ANTLR 版本的语法?
感谢任何提示。
plugins {
id 'java-library'
id 'antlr'
}
dependencies {
// ...
// If both are mentioned, then "X.g" is also treated as antlr4
antlr "org.antlr:antlr:3.5.2" // use ANTLR version 3
antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
}
目前antlr插件不支持多版本。解决方法是使用 JavaExec
任务来调用 antlr3 或 antlr4。这是一种方法。
- 创建配置以使用 gradle 依赖管理来检索 antlr3 或 antlr4。
configurations{
antlr3,
antlr4
}
dependencies {
antlr3 "org.antlr:antlr:3.5.2"
antlr4 "org.antlr:antlr4:4.7.1"
compile "org.antlr:antlr-runtime:3.5.2"
compile "org.antlr:antlr4-runtime:4.7.1"
}
- 定义任务。
task runAntlr4(type:JavaExec) {
//see incremental task api, prevents rerun if nothing has changed.
inputs.dir "src/main/antlr4/"
outputs.dir "$projectDir/build/generated/antlr/main/"
classpath = configurations.antlr4
main = "org.antlr.v4.Tool"
args = [ "-verbose", "-visitor",
"-o", "$projectDir/build/generated/antlr/main/",
"-package", <my-package>,
"src/main/antlr4/MyLanguage.g4"]
}
compileJava.dependsOn runAntlr4
antlr3
与 configurations.antlr3
和 "org.antlr.Tool" 的模拟。
- 将输出目录添加到
sourceSets.main.java
我有一个遗留项目,其中使用了 ANTLR3 和 ANTLR4 语法。我们想将 ant
构建系统更新为 gradle
。有一个antlr plugin for gradle支持ANTLR2/3/4。但是,显然它一次只支持这三个中的一个(取决于添加的依赖项)。
在我们的项目中,antlr3 文件的后缀为 .g
而 antlr4 语法的后缀为 .g4
.
是否有插件选项或替代插件允许我同时使用两个 ANTLR 版本的语法?
感谢任何提示。
plugins {
id 'java-library'
id 'antlr'
}
dependencies {
// ...
// If both are mentioned, then "X.g" is also treated as antlr4
antlr "org.antlr:antlr:3.5.2" // use ANTLR version 3
antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
}
目前antlr插件不支持多版本。解决方法是使用 JavaExec
任务来调用 antlr3 或 antlr4。这是一种方法。
- 创建配置以使用 gradle 依赖管理来检索 antlr3 或 antlr4。
configurations{
antlr3,
antlr4
}
dependencies {
antlr3 "org.antlr:antlr:3.5.2"
antlr4 "org.antlr:antlr4:4.7.1"
compile "org.antlr:antlr-runtime:3.5.2"
compile "org.antlr:antlr4-runtime:4.7.1"
}
- 定义任务。
task runAntlr4(type:JavaExec) {
//see incremental task api, prevents rerun if nothing has changed.
inputs.dir "src/main/antlr4/"
outputs.dir "$projectDir/build/generated/antlr/main/"
classpath = configurations.antlr4
main = "org.antlr.v4.Tool"
args = [ "-verbose", "-visitor",
"-o", "$projectDir/build/generated/antlr/main/",
"-package", <my-package>,
"src/main/antlr4/MyLanguage.g4"]
}
compileJava.dependsOn runAntlr4
antlr3
与configurations.antlr3
和 "org.antlr.Tool" 的模拟。- 将输出目录添加到
sourceSets.main.java