我有一个遗留项目,其中使用了ANTLR3和ANTLR4语法。我们希望将ant构建系统更新为gradle。有一个支持ANTLR2 2/3/4的antlr级插件,但是很明显,它一次只支持这三个中的一个(取决于所添加的依赖项)。
在我们的项目中,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
}发布于 2019-05-07 19:46:45
目前,antlr插件不支持多个版本。解决办法是使用JavaExec任务调用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 runAntlr4antlr3与configurations.antlr3和"org.antlr.Tool“。sourceSets.main.javahttps://stackoverflow.com/questions/51921617
复制相似问题