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 дает такие чрезвычайно странные ошибки, а затем неожиданно работает без видимой причины, когда перетасовывает вещи вокруг.