Generazione del Codice


 

Esercizio 10

Si abbia un linguaggio di istruzioni. Tra le istruzione è l'istruzione loop-exitwhen-endloop, delle forma

loop S1; ...; Sk exitwhen B; Sk+1; ...; Snendloop   con n > 0.

Es. loop x := x-1; exitwhen x = 0; y := y * x endloop

Si consideri l'insieme degli alberi astratti che rappresentano istruzioni. Si vuole una procedura che visitando in preordine un albero generi per effetto laterale il codice a tre indirizzi per l'istruzione rappresentata dall'albero. Si scriva solo il pezzo di procedura che riguarda il caso loop-exitwhen-endloop supponendo di avere già gli altri casi (non exitwhen B che può comparire solo all'interno del costrutto loop-exitwhen-endloop). Si supponga di poter invocare una procedura Bool che ricevendo il puntatore a un albero che rappresenta un booleano genera il codice relativo e restituisce "la lista dei veri" e la "lista dei falsi".
 
 


 
 
Ultimo aggiornamento 3 Maggio 1999