1
Here是PLSQL的Antlr语法文件。Antlr PLSQL语法无法正确解析包名?
但是,它并不完全正确。例如,我有开头的软件包:
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
部分。
为什么这不起作用?我怎样才能解决这个问题?
如果其余的规则有任何迹象,你实际上需要':id('。'id_expression)?'(尽管这不应该改变在这种情况下被识别的东西)。 –
@JeroenMostert我也尝试过。那也行不通。 – Utku
我会说,它不工作,因为它是Antlr3语法的一个端口。它尚未完成。这个语法的另一个问题是,它试图一次解析PL/SQL,SQL和DDL语言。但是这些语法应该在下面使用不同的Lexer。 – ibre5041