plsql antlr

Cómo usar plsql-parser(ANTLR)



(1)

Me gustaría comprobar la sintaxis de consulta PL / SQL en las pruebas automatizadas, y parece que https://github.com/porcelli/plsql-parser podría ser útil para eso. Sin embargo, no estoy averiguando cómo instalarlo y usarlo.

Tenga en cuenta que esto es para un proyecto de Ruby, pero soy razonablemente competente en Java. Espero que haya alguna manera de ejecutar la verificación a través de la consola, pasar el SQL y recuperar cualquier información de error, incluida la línea / columna.

Gracias.


  • Descargue la herramienta ANTLR ver 3.5.1
  • Descargue los códigos fuente desde aquí (ya que esta versión fue portada a 3.5.1)
  • Usa la herramienta para compilar las fuentes de poarsers / no-ast subdir
  • 1ra compilación PLSQLLexer.g
  • 2.º compila PLSQLParser.g del subdir no-ast
  • el uso de este código de muestra como un ejemplo:

import org.antlr.runtime.ANTLRNoCaseFileStream; import org.antlr.runtime.CommonTokenStream; import org.antlr.runtime.RecognitionException; import br.com.porcelli.parser.plsql.PLSQLLexer; import br.com.porcelli.parser.plsql.PLSQLParser; public static void parse(String file) { try { PLSQLLexer lex = new PLSQLLexer(new ANTLRNoCaseFileStream(file)); CommonTokenStream tokens = new CommonTokenStream(lex); PLSQLParser parser = new PLSQLParser(tokens); /*start_rule_return AST =*/ parser.data_manipulation_language_statements(); System.err.println(file +": " + parser.getNumberOfSyntaxErrors()); if(parser.getNumberOfSyntaxErrors() != 0) { //System.exit(1); } } catch (RecognitionException e) { System.err.println(e.toString()); } catch (IOException e) { System.err.println(e.toString()); } catch (java.lang.OutOfMemoryError e) { System.err.println(file + ":"); System.err.println(e.toString()); } catch (java.lang.ArrayIndexOutOfBoundsException e) { System.err.println(file + ":"); System.err.println(e.toString()); } }