Änderungen Java.g4prüfen, ob Verfahren hat einen Kommentar mit antlr
Anfang der Datei
grammar Java;
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}
Ende der Datei in Buch als getan
//
// Whitespace and comments
//
WS : [ \t\r\n\u000C]+ -> channel(WHITESPACE) ; // channel(1)
COMMENT : '/*' .*? '*/' -> channel(COMMENTS) ; // channel(2)
LINE_COMMENT : '//' ~[\r\n]* -> channel(COMMENTS) ; // channel(2)
Der Versuch, Kommentare und Leerzeichen auf verschiedene Kanäle senden "The Definitive ANTLR 4 Referenz" Kapitel 12.1 Broadcasting Tokens auf verschiedenen Kanälen
auf antlr4 Java.g4 folgende Fehler Ausführung sind
java org.antlr.v4.Tool Java.g4
warning(155): Java.g4:1017:35: rule WS contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1019:40: rule COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1021:45: rule LINE_COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
ich sehen, was nicht falsch dargestellt?
fügt einen neuen Fehler hinzu [Fehler (164): Java.g4: 42: 0: benutzerdefinierte Kanäle werden in kombinierten Grammatiken nicht unterstützt] – nkvnkv
In diesem Fall sollten Sie Lexer und Parser auf verschiedene Dateien trennen: JavaLexer und JavaParser. –