3
我很新ANTLR,試圖解析一個簡單的PL/SQL函數。如果這是一個愚蠢的問題,我很抱歉。NoViableAltException當分析字符串文字與ANTLR
function MyFunc return boolean is
begin
IF :USER_ID_P IS NULL THEN
:USER_ID_P := 'PUBLIC';
END IF;
return (TRUE);
end;
是應該抓住它
語法摘錄:
atom
: variable_or_function_call (PERCENT attribute)?
| SQL PERCENT attribute
| string_literal
| numeric_atom
| boolean_atom
| NULL
| LPAREN expression RPAREN
;
string_literal
: QUOTED_STRING
;
QUOTED_STRING
: ('n')? '\'' ('\'\'' | ~('\''))* '\''
;
它獲得了「原子」的規則,然後給出了這樣的錯誤:
NoViableAltException: line 6:0 no viable alternative for input 'END'
的字符串被拾起,如果我將以下內容添加到「原子」規則中:
| '\'PUBLIC\''
你如何測試?使用ANTLRWorks的解釋器(或使用ANTLR IDE Eclipse)?在這種情況下,再次嘗試使用ANTLRWorks的調試器:它很可能與'string_literal'匹配:ANTLRWorks的解釋器相當麻煩。但是,調試器很好用。 –
我在Eclipse中使用ANTLR IDE。感謝您的提示,我會嘗試ANTLRWorks。 – user897210
沒問題。一定要使用調試器(菜單:'Run-> Debug',或者'CTRL + D'),而不是解釋器。 –