Pari (non un token) in una grammatica ANTLR. Cosa significa questo?
Domanda
Che cosa significa la basename =
costrutto nel seguente regola?
tabname:
(ID'.')? basename = ID
;
C'è questa singola occorrenza di basename
nella grammatica.
Grazie
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.