【发布时间】:2017-04-03 04:25:31
【问题描述】:
我刚刚开始使用 ANTLR,并想尝试使用 plsql.g4 语法测试解析一些简单的 PL/SQL 语句。我遵循Getting Started with ANTLR v4 中使用的格式。
以下命令执行没有问题:
antlr4 plsql.g4
java org.antlr.v4.Tool plsql.g4
javac plsql*.java
在入门示例中,他们运行以下命令:
grun Hello r -tree
其中“Hello”是语法的名称,“r”是其产生式规则之一。语法表明 'sql_script' 产生规则由零个或多个单元语句或 sqlplus 命令组成,后跟输入流的结尾:
sql_script
: (unit_statement | sql_plus_command)* EOF
;
所以我尝试像这样调用 PL/SQL 解析器:
grun plsql sql_script -tree
但我收到以下错误:
Can't load plsql as lexer or parser
调用此语法的解析器以生成简单 PL/SQL 语句的解析树的正确方法是什么?我在 Windows 机器上使用 JDK 8。这是一个screenshot,显示了我的终端窗口的内容。
【问题讨论】:
-
我像你一样执行了所有命令,一切正常!当我删除
plsqlLexer.class文件时,我设法重现错误。你确定在plsqlLexer.class和plsqlParser$*.class文件所在的目录下执行grun plsql sql_script -tree命令吗? -
是的。这是一个screenshot,显示了我的终端窗口的内容。
-
在截图上:为什么
ls命令列出的所有plsqlParser$*.class文件都用单引号'括起来? -
@Quepas 我不确定。我认为这只是 Windows 命令提示符的一个怪癖。如果我在 PowerShell 中使用相同的命令,它会在不带单引号的情况下显示它们。
标签: java oracle parsing plsql antlr4