Generazione del Codice

Esercizio 1

Si abbia un linguaggio di istruzioni S con l'assegnamento di espressioni (costruite da identificatori con il solo operatore di somma e parentesi) e la selezione della forma if B then S else S fi (con B identificatore o uguaglianza di identificatori). Si supponga che le istruzioni oltre che un effetto laterale abbiano anche un valore (il valore da assegnare nel caso dell'assegnamento, il valore associato all'istruzione selezionata nel caso della selezione) e quindi possano essere trattate come espressioni e comparire come tali. Un esempio è

A:=B+if C=D then E:=F+G elseL:=H+M fi

dove si vuole che a seconda dell'uguaglianza o no di C e D venga assegnato F+G ad E oppure H+M ad L e il valore venga sommato a B ed assegnato ad A. Questo è anche il valore dell'istruzione di assegnamento.
 

  1. Si dia una grammatica e uno di traduzione discendente che generi il codice per effetti laterali. Si facciano puntare i salti ai seguiti fisici cosicché S abbia come unico attributo il nome della variabile cui è associato il suo valore.
  2. Si dia una grammatica e uno di traduzione ascendente.

 
 
  
Ultimo aggiornamento 17 Maggio 2001