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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top