Следующая грамматика не работает должным образом с Antlr4.5 и Java 1.8.45 (IDE: IntelliJ Ultimate 14.1.4):
grammar PlayerAIShots;
file : row row EOF ;
row : START (randomshot)? SPACE direction Dot (LineBreak | EOF);
randomshot: RANDOM ;
direction : DIRECTION ;
RANDOM : 'randomly' ;
DIRECTION : ('to the left'|'to the right'|'central') ;
START : 'The opponent shoots' ;
SPACE : ' ' ;
Dot : '.' ;
// line break
LineBreak : '\r'?'\n' | '\r';
WS : [\t\r\n]+ -> skip ; // skip tabs, newlines
Если позволить сгенерированному лексеру и синтаксическому анализатору оценить результаты:
строка 1:22 не соответствует вводу «случайно», ожидая НАПРАВЛЕНИЕ
В используемых данных (текстовый файл) правильно обрабатывалась вторая строка, но, как и в приведенном выше сообщении об ошибке, не первая. Вот используемый текстовый файл:
The opponent shoots randomly to the left.
The opponent shoots to the right.
При удалении этих ПРОБЕЛов в определении "строка" ошибка не возникает. Почему?