Que construit basename =
dans la règle suivante?Égal (pas un jeton) dans une grammaire ANTLR. Qu'est-ce que ça veut dire?
tabname:
(ID'.')? basename = ID
;
Il y a cet événement unique de basename
dans la grammaire.
Merci
Que construit basename =
dans la règle suivante?Égal (pas un jeton) dans une grammaire ANTLR. Qu'est-ce que ça veut dire?
tabname:
(ID'.')? basename = ID
;
Il y a cet événement unique de basename
dans la grammaire.
Merci
Utilisation égaux dans cette syntaxe crée une variable appelée basename
qui peut ensuite être référencé dans les actions:
tabname:
(ID '.')? basename=ID {
if ($basename.equals("CAT"))
System.out.println("CAT found");
};
Il est utilisé pour nommer les variables.
Cela peut être très utile si vous voulez exécuter du code pendant l'analyseur.
Prenons l'exemple de la calculatrice java:
expr returns [float r]
{
float a,b;
r=0;
}
: #(PLUS a=expr b=expr) {r = a+b;}
| #(STAR a=expr b=expr) {r = a*b;}
| i:INT {r = (float)Integer.parseInt(i.getText());}
;
Ici, nous disons quand nous correspondre à un arbre qui a un PLUS ou STAR jeton de suivi de 2 expressions, nous égalerons les expressions et les nommer respectivement a
et b
. Après, nous allons utiliser les variables que nous avons mises en correspondance dans une instruction Java. Cette déclaration est contenue dans les parenthèses {
et }
. Ici, nous utilisons les instructions java pour faire le calcul.
bonne réponse Kaleb :) – chollida