ANTLR 2 не создает файл AST - PullRequest
       7

ANTLR 2 не создает файл AST

0 голосов
/ 21 февраля 2019

Мне дали архив заброшенной проприетарной кодовой базы Java, которая использует ANTLR 2.7.6 для генерации лексера, парсера и AST.В архиве есть папка, которая содержит среди прочего

  • Name.g
  • NameAST.class
  • NameAST.java
  • NameLexer.класс
  • NameLexer.java
  • NameLexer.smap
  • NameParser.class
  • NameParser.java
  • NameParser.smap

То, что я пытаюсь сделать, это заменить вручную сгенерированный код ANTLR и некрасивые сценарии сборки на аккуратный проект Gradle.Поэтому я поместил файлы .g в свой проект и включил плагин Gradle ANTLR .

Однако, когда я запускаю сборку Gradle, в build/generated-src файл NameAST.java не генерируется., приводя к пропущенным ошибкам символов при компиляции.

Я искал вокруг, и единственное, что я могу найти, это то, что должен быть установлен buildAST, и действительно, Name.g содержит следующее.

options {
    buildAST=true;
    ...

Мои файлы грамматики хранятся в src/main/antlr/pkgname согласно документации, и сгенерированный код оказывается в правильном месте.Я не могу поделиться файлами грамматики, но так как у меня есть рабочий JAR и предоставленный скомпилированный код, я предполагаю, что они правильные.

Почему ANTLR не генерирует файлы AST?

The build.gradle файл, сгенерированный в настоящее время InteliJ, выглядит следующим образом

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"
}
...