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.
|