我得到了一个废弃的专有Java代码库的压缩文件,该代码库使用ANTLR 2.7.6生成了词法分析器,解析器和AST。在压缩包中有一个文件夹,其中包含其他内容
我想做的是用一个整洁的Gradle项目替换手动生成的ANTLR代码和难看的构建脚本。因此,我将.g文件放入我的项目中,并包含了Gradle ANTLR plugin。
但是,当我运行Gradle构建时,在build/generated-src
中不会生成NameAST.java文件,从而导致编译时丢失符号错误。
我到处搜索,我唯一能找到的是应该设置buildAST
,并且Name.g实际上包含以下内容。
options {
buildAST=true;
...
我的语法文件根据文档存储在src/main/antlr/pkgname
中,并且生成的代码最终存储在正确的位置。我无法共享语法文件,但是由于我有一个可以正常工作的JAR文件,并且提供了已编译的代码,因此我认为它们是正确的。
为什么ANTLR无法生成AST文件?
InteliJ当前生成的build.gradle
文件看起来像这样
plugins {
id 'java'
id 'antlr'
id 'org.jetbrains.kotlin.jvm' version '1.3.11'
}
group 'Projectname'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
antlr "antlr:antlr:2.7.6"
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}