Я новичок в Antlr4 и уже несколько дней ломаю голову над поведением, которое я просто не понимаю. У меня есть следующая комбинированная грамматика, и я ожидаю, что она завершится ошибкой и сообщит об ошибке, но это не так:
grammar MWE;
parse: cell EOF;
cell: WORD;
WORD: ('a'..'z')+;
Если я подам ему ввод
a4
Я ожидаю, что он не сможет его проанализировать, потому что я хочу, чтобы он соответствовал всей входной строке, а не только ее части, как это обозначено EOF
. Но вместо этого он не сообщает об ошибке (я прослушиваю ошибки с помощью прослушивателя ошибок, реализующего интерфейс IAntlrErrorListener
) и дает мне следующее дерево синтаксического анализа:
(parse (cell a) <EOF>)
Почему это?