Here是PLSQL的Antlr语法文件。
然而,这并不完全正确。例如,我有一个以:
开头的包CREATE OR REPLACE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME AS
从前面的语法文件生成的解析器不会解析SCHEMA_NAME.PACKAGE_NAME
package_name
(package_name
是Antlr解析器规则)。
要解决这个问题,我已经改变了这个
package_name
: id
;
到此
package_name
: id ('.' id)?
;
我也试过
package_name
: id ('.' id_expression)?
;
但它们都没有奏效。 Antlr仍然不会在.PACKAGE_NAME
中包含最后一个package name
部分。
为什么这不起作用?我该如何解决这个问题?
答案 0 :(得分:1)
此类包装定义:
package_name
: id ('.' id_expression)?
;
适用于下一个PL / SQL查询:
CREATE OR REPLACE PACKAGE BODY SCHEMA_NAME.PACKAGE_NAME AS END;
我想你最后忘记了END
和分号。
此外,如果您发现了错误,请向官方ANTLR语法存储库添加问题或提取请求,因为此PL / SQL语法未完成,因为评论中已经提到过。