Domanda

Che cosa significa la basename = costrutto nel seguente regola?

tabname:
   (ID'.')? basename = ID
;

C'è questa singola occorrenza di basename nella grammatica.

Grazie

È stato utile?

Soluzione

Utilizzando eguali in quanto crea una sintassi chiamato basename variabile che può essere poi applicata in azioni:

tabname:
    (ID '.')? basename=ID {
        if ($basename.equals("CAT"))
            System.out.println("CAT found");
    };

Altri suggerimenti

E 'utilizzato per le variabili di nome.

Questo può essere molto utile se si desidera eseguire del codice durante il parser.

Si consideri l'esempio calcolatrice 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());}
;

Qui diciamo quando abbiniamo un albero che ha un segno più o STAR Token seguito da 2 espressioni, ti offriamo le espressioni e il nome li a e b rispettivamente.

Dopo che useremo queste variabili abbiamo abbinato in un comunicato Java. Questa affermazione è contenuta all'interno delle parentesi { e }. Qui usiamo le istruzioni Java effettivamente fare il calcolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top