Currently implementiere ich eine ANTLR4 generiert BaseListener<Void>
.ANTLR4 -> Lexer Symbole Zugriff von Besuchern
Wenn ich brauche zu prüfen, ob ein Token eine oder andere ist, mache ich Dinge wie:
@Override
public Void visitTerminal(TerminalNode node) {
if (";".equals(node.getText()))
this.prepareQuery();
else if (",".equals(node.getText()))
this.prepareQuery();
return super.visitTerminal(node);
}
Gibt es eine Möglichkeit diese ";"
, ","
zu vermeiden? Ich bin so herausfinden, da ich erklärt habe dies als LEXER Regeln für meine Grammatik-Token:
SCOL : ';';
COMMA : ',';
Kann ich so etwas wie Lexer.SCOL(...)
schreiben oder Lexer.COMMA.equals(...)
:
Sorry, aber ich bin nicht ganz in der Lage zu herauszufinden, was ist 'node.getSymbol(). getType()' 'int' zurückgegeben Wert Beziehung dort ist entsprechend' ";" oder '", "'. Was hat der Wert "int"? Wie kann ich "" ersetzen?. Equals (...) 'using' node.getSymbol(). GetType() ' – Jordi
Oh, ich nahm an, Sie wissen, dass ein Lexer Lexer-Symbole aus dem Text generiert, wie dies ist eines der ersten Dinge, die Sie lernen, wenn Sie mit Parsern arbeiten. –