Antlr PLSQL语法没有正确解析包名?

时间:2016-06-15 06:27:40

标签: parsing antlr

Here是PLSQL的Antlr语法文件。

然而,这并不完全正确。例如,我有一个以:

开头的包
CREATE OR REPLACE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME AS

从前面的语法文件生成的解析器不会解析SCHEMA_NAME.PACKAGE_NAME package_namepackage_name是Antlr解析器规则)。

要解决这个问题,我已经改变了这个

package_name
    : id
    ;

到此

package_name
    : id ('.' id)?
    ;

我也试过

package_name
    : id ('.' id_expression)?
    ;

但它们都没有奏效。 Antlr仍然不会在.PACKAGE_NAME中包含最后一个package name部分。

为什么这不起作用?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

此类包装定义:

package_name
    : id ('.' id_expression)?
    ;

适用于下一个PL / SQL查询:

CREATE OR REPLACE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME AS END;

我想你最后忘记了END和分号。

此外,如果您发现了错误,请向官方ANTLR语法存储库添加问题或提取请求,因为此PL / SQL语法未完成,因为评论中已经提到过。