Я новичок в ANTLR, пытаюсь разобрать простую функцию PL / SQL.Приношу свои извинения, если это глупый вопрос.
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'
Строка будет поднята, если я добавлю в правило «atom» следующее:
| '\'PUBLIC\''