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 |