ANTLR 2不生成AST文件

时间:2019-02-21 20:24:00

标签: java gradle antlr antlr2

我得到了一个废弃的专有Java代码库的压缩文件,该代码库使用ANTLR 2.7.6生成了词法分析器,解析器和AST。在压缩包中有一个文件夹,其中包含其他内容

  • Name.g
  • NameAST.class
  • NameAST.java
  • NameLexer.class
  • NameLexer.java
  • NameLexer.smap
  • NameParser.class
  • NameParser.java
  • NameParser.smap

我想做的是用一个整洁的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"
}

0 个答案:

没有答案