Wie kann man in antlr4 lexer eine Regel haben, die alle verbleibenden "Wörter" als unbekanntes Token auffängt?

Ich habe eine AntlR4-Lexer-Grammatik. Es gibt viele Regeln für Wörter, aber ich möchte auch, dass ein unbekanntes Token für jedes Wort erstellt wird, mit dem andere Regeln nicht übereinstimmen können. Ich habe so etwas:

Whitespace : [ \t\n\r]+ -> skip;
Punctuation : [.,:;?!];
// Other rules here
Unknown : .+? ; 

Der jetzt generierte Matcher fängt '~' als unbekannt ab, erstellt jedoch 3 '~' unbekannte Token für die Eingabe '~~~' anstelle eines einzelnen '~~~' Tokens. Was soll ich tun, um Lexer anzuweisen, Wortmarken für unbekannte aufeinanderfolgende Zeichen zu generieren? Ich habe auch versucht "Unbekannt:.;" und "Unbekannt:. +;" ohne ergebnisse.

BEARBEITEN: In den aktuellen AntLR-Versionen. +? Fängt jetzt die restlichen Wörter ein, so scheint das Problem gelöst zu sein.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage