Skip to content

jurgenei/gradle-antlr-plsql-plugin

Repository files navigation

Gradle ANTLR PL/SQL Plugin

Plugin Portal Java Gradle License: MIT

gradle-antlr-plsql-plugin provides preconfigured XML AST task support for PL/SQL parsing workflows.

It builds on name.jurgenei.gradle.antlr and offers task defaults tailored for PlSqlLexer/PlSqlParser use cases.

Use Cases

  • Convert large PL/SQL corpora to XML AST for lineage extraction
  • Validate parser compatibility in CI against benchmark SQL files
  • Run parser checks with sensible defaults and minimal Gradle setup
  • Keep conversion as first-class Gradle tasks (repeatable and automatable)

Install

plugins {
    id 'name.jurgenei.gradle.antlr.plsql' version '0.1.1'
}

Plugin Portal page: https://plugins.gradle.org/plugin/name.jurgenei.gradle.antlr.plsql

Legacy id remains available for compatibility:

plugins {
    id 'name.jurgenei.grammars.plsql' version '0.1.1'
}

What the Plugin Adds

  • XmlAstPlsqlGradleTask task type
  • plsqlXmlAst pre-registered task
  • Runtime classpath and classes dependency wiring when java plugin is present

Default task conventions:

  • grammar = plsql
  • parserClassName = name.jurgenei.parsers.PlSqlParser
  • lexerClassName = name.jurgenei.parsers.PlSqlLexer
  • startRule = script
  • includes = ['**/*.sql', '**/*.pks', '**/*.pkb', '**/*.pls']

Quick Start

plugins {
    id 'java'
    id 'name.jurgenei.gradle.antlr.plsql' version '0.1.1'
}

tasks.named('plsqlXmlAst', name.jurgenei.grammars.plsql.XmlAstPlsqlGradleTask) {
    sourceDirectory.set(layout.projectDirectory.dir('src/test/resources/plsql'))
    destinationDirectory.set(layout.buildDirectory.dir('xmlast-plsql'))
    targetExtension.set('.xml')
    continueOnError.set(true)
}

Run:

./gradlew plsqlXmlAst

Common Workflow

./gradlew clean check plsqlXmlAst

Supporting tasks commonly used in this repository:

  • generateLexerSources
  • generateParserSources
  • compileAntlrSources
  • verifyGrammarSources
  • xmlast (wrapper task for sample conversions)

Repository Rename

This project follows the renamed repository convention from grammar modules to Gradle plugin naming:

  • previous: https://github.com/jurgenei/antlr-grammars-plsql
  • current: https://github.com/jurgenei/gradle-antlr-plsql-plugin

Development

./gradlew clean test
./gradlew publishToMavenLocal

Troubleshooting

  • ClassNotFoundException for parser/lexer classes:
    • Ensure compileAntlrSources ran
    • Ensure runtime classpath includes generated classes
  • Parse starts but no output files:
    • Verify sourceDirectory and includes
    • Set force = true for a full pass
  • Start rule issues:
    • Confirm parser entry method exists (default is script)

About

gradle-antlr-plugin extention - Oracle PlSql grammar

Topics

Resources

License

Stars

Watchers

Forks

Contributors