gpt4 book ai didi

plsql - 如何使用 plsql-parser (ANTLR)

转载 作者:行者123 更新时间:2023-12-01 04:21:34 36 4
gpt4 key购买 nike

我想在自动化测试中检查 PL/SQL 查询语法,看起来 https://github.com/porcelli/plsql-parser 可能对此有用。我并不容易找到我将如何安装和使用它。

请注意,这是针对 Ruby 项目的,但我相当擅长 Java。我希望有某种方法可以通过控制台运行检查,传入 SQL,并获取任何错误信息,包括行/列。

谢谢。

最佳答案

  • 下载 ANTLR 工具 ver 3.5.1
  • here 下载源代码(因为此版本已移植到 3.5.1)
  • 使用该工具从 poarsers/no-ast 子目录
  • 编译源代码
  • 第一次编译 PLSQLLexer.g
  • 从 no-ast 子目录
  • 第二次编译 PLSQLParser.g
  • 使用此示例代码作为示例:
  •     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());
    }
    }

    关于plsql - 如何使用 plsql-parser (ANTLR),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637991/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com