Ich benutze Antlr4 und Java7-Grammatik (source) zum Ändern einer Eingabe-Java-Quelldatei. Genauer gesagt verwende ich die TokenStreamRewriter-Klasse, um einige Token zu modifizieren. Der folgende Code ist ein Beispiel, das zeigt, wie die Token modifiziert werden:ANTLR4: TokenStreamRewriter-Ausgabe hat kein richtiges Format (entfernt Leerzeichen)
public class TestListener extends JavaBaseListener {
private TokenStreamRewriter rewriter;
rewriter = new TokenStreamRewriter(tokenStream);
rewriter.replace(ctx.getStart(), ctx.getStop(), "someText");
}
Wenn ich den veränderten Quellcode zu drucken, die weißen Leerzeichen und Tabulatoren werden entfernt und das neue Format der Quelldatei ist wie folgt:
importjava.util.ArrayList; publicclassMain {publicstaticvoidmain (String [] args {MyTimertimer = newMyTimer();}}.
ich verwende extractor.getText() für sie zurück Drucken
Ist das ein Problem der Grammatik verwendet oder sollte ich ein anderes m verwenden ethod aus der TokenStreamRewriter-Klasse?
Vielen Dank für Ihre schnelle Antwort. Die vorgeschlagene Änderung in der Datei (Java.g4) hat gut funktioniert. –