ANTLR 4.5 - Nicht übereinstimmende Eingabe 'x' erwartet 'x'

Ich habe angefangen, ANTLR zu verwenden und habe festgestellt, dass es mit seinen Lexer-Regeln ziemlich launisch ist. Ein äußerst frustrierendes Beispiel ist das folgende:

grammar output;

test: FILEPATH NEWLINE TITLE ;

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

Diese Grammatik passt nicht zu:

c: \ test.txt
x

Oddly wenn ich ändereTITLE seinTITLE: 'x' ; es schlägt diesmal immer noch fehl und es wird eine Fehlermeldung ausgegeben, die besagt, dass die Eingabe 'x' nicht übereinstimmt und 'x' erwartet, was sehr verwirrend ist. Noch seltsamer, wenn ich die Verwendung von @ ersetTITLE imtest mitFILEPATH das Ganze funktioniert (obwohlFILEPATH entspricht mehr als ich erwartet habe, daher ist es im Allgemeinen keine gültige Lösung für mich.

Ich bin sehr verwirrt darüber, warum ANTLR so extrem seltsame Fehler macht und dann plötzlich ohne ersichtlichen Grund arbeitet, wenn Dinge durcheinander gebracht werden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage