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