Warum kann ich SetText-Funktion nicht in Parser-Regeln verwenden?ANTLR4 setText-Funktion funktioniert nicht mit Parser-Regeln
Zum Beispiel:
normalClassDeclaration
: classModifier* 'class' Identifier typeParameters? superclass? superinterfaces? classBody
{
$Identifier.setText("TEST");
}
;
Wenn ich den Parser und Lexer mit dieser Grammatik erzeugen, der Parser kennt nicht die Funktion setText. Wenn ich dies in den Lexer Regeln zu tun, ist es kein Problem, und er wird bei jeder Kennung „TEST“
Identifier
: JavaLetter JavaLetterOrDigit*
{
setText("V");
}
;
Aber er sollte nur dann ändern, die Kennung, wenn seine eine Klasse/Funktion/Variablenbezeichner ändern.
Danke. War sehr hilfreich. – vizero
Sie sind willkommen – Yevgeniy