Generazione del Codice


 

Esercizio 17

Si consideri il linguaggio di concatenazioni di assegnamenti a variabili di termini e di uguaglianze di termini descritto dalla grammatica seguente:

L ::= L ; S
L ::= S
S ::= id := P
S ::= id := P = P
P ::= P * id
P ::= id

Si supponga di avere nella tabella dei simboli i tipi degli identificatori che possono essere o interi o booleani. Si scriva uno schema per l'analisi discendente che generi il codice a tre indirizzi che assegna a una variabile di tipo intero il valore di un termine intero e a una variabile booleana "vero" o "falso" a seconda che l'uguaglianza tra termini interi valga oppure no, verificando la compatibilità dei tipi e calcolando come attributo del non terminale L "OK" oppure "ERRORE", a seconda che L sia corretto oppure ci siano errori di tipo.
 
 


 
 
Ultimo aggiornamento 3 Maggio 1999