ANTLR 4.5 - Несоответствующий ввод 'x', ожидающий 'x'

Я начал использовать ANTLR и заметил, что он довольно изменчив с его правилами лексера. Крайне разочаровывающий пример:

grammar output;

test: FILEPATH NEWLINE TITLE ;

FILEPATH: ('A'..'Z'|'a'..'z'|'0'..'9'|':'|'\\'|'/'|' '|'-'|'_'|'.')+ ;
NEWLINE: '\r'? '\n' ;
TITLE: ('A'..'Z'|'a'..'z'|' ')+ ;

Эта грамматика не будет соответствовать что-то вроде:

C: \ test.txt
x

Странно, если я изменюсьTITLE бытьTITLE: 'x' ; в этот раз он все еще не работает, выдавая сообщение об ошибке «несоответствующий ввод« x », ожидающий« x »», что очень запутанно. Еще более странно, если я заменю использованиеTITLE вtest сFILEPATH все работает (хотяFILEPATH будет соответствовать больше, чем я ожидаю, поэтому в общем случае это не является правильным решением для меня).

Я очень озадачен тем, почему ANTLR дает такие чрезвычайно странные ошибки, а затем неожиданно работает без видимой причины, когда перетасовывает вещи вокруг.

Ответы на вопрос(1)

Ваш ответ на вопрос