Iguales (no es un token) en una gramática antlr. ¿Qué significa esto?
Pregunta
¿Qué hace el basename =
construcción en la siguiente regla?
tabname:
(ID'.')? basename = ID
;
Hay esta sola aparición de basename
en la gramática.
Gracias
Solución
Uso iguales en que la sintaxis crea una llamada basename
variable que se puede hacer referencia en acciones:
tabname:
(ID '.')? basename=ID {
if ($basename.equals("CAT"))
System.out.println("CAT found");
};
Otros consejos
Se utiliza para las variables de nombre.
Esto puede ser muy útil si desea ejecutar algún código durante el analizador.
Considere el ejemplo calculadora 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());}
;
Aquí decimos cuando comparemos un árbol que tiene un signo más o ESTRELLA simbólico seguido de 2 expresiones, vamos a igualar las expresiones y los nombramos a
y b
respectivamente.
Después vamos a utilizar aquellas variables que emparejados en un comunicado de Java. Esta declaración está contenida dentro de los corchetes {
y }
. Aquí utilizamos las declaraciones de Java para hacer realidad el cálculo.