Analisi Statica

Esercizio 5

Si consideri un linguaggio di concatenazioni di istruzioni. Le istruzioni possono essere blocchi o altre istruzioni (un blocco consiste di una dichiarazione di variabili che possono essere di tipo intero e reale e di una concatenazione di istruzioni). Si vuole uno schema deterministico discendente che calcoli per ogni istruzione un attributo di profondità e un attributo di occupazione. La profondità è pari al numero di blocchi in cui l'istruzione è racchiusa. L'occupazione è per il blocco la massima (si suppone una realizzazione con recupero delle celle non più usate) tenendo conto che interi occupano due byte e reali quattro, le altre istruzioni zero. Nel caso seguente:
begin var a,b,c: integer; S; 
begin var d: real; S' end;
begin var e: integer; S"; S'" end
end;
SIV

supponendo che le istruzioni S, S', S", S''', SIV non siano blocchi ci si aspetta per il blocco più esterno attributi 0,10, per l'istruzione S attributi 1,0, per il blocco successivo attributi 1,4, per l'istruzione S' attributi 2,0, per il blocco successivo segue attributi 1,2, per le istruzioni S", S''' attributi 2,0, per l'istruzione SIV attributi 0,0. Non si faccia uso di strutture dati globali.
 
 


 
  
Ultimo aggiornamento 3 Maggio 1999