1
Murano Aniello
Fond. LP - Seconda Lezione 1
Fondamenti dei linguaggi di programmazione
Fondamenti dei linguaggi di Fondamenti dei linguaggi di
programmazione programmazione
Aniello Murano
Aniello Murano
UniversitUniversitààdegli Studi di Napolidegli Studi di Napoli
“
“Federico IIFederico II””
Murano Aniello
Fond. LP - Seconda Lezione 2
Semantica Operazionale del linguaggio imperativo IMP Semantica Operazionale del Semantica Operazionale del
linguaggio imperativo IMP
linguaggio imperativo IMP
2
Murano Aniello
Fond. LP - Seconda Lezione 3
Introduzione
Il linguaggio IMP è detto imperativo perché l’esecuzione di un programma comporta l’esecuzione esplicito di comandi che modificano lo stato
IMP è descritto da regole che specificano come valutare le sue espressioni e come eseguire i suoi comandi.
Tali regole forniscono una semantica operazionale di IMP
Murano Aniello
Fond. LP - Seconda Lezione 4
Sintassi di IMP
La forma degli elementi di Aexp, Bexp e Com viene specificata tramite regole di formazione, espresse in una variante della BNF(Bakus-Naur Form)
3
Murano Aniello
Fond. LP - Seconda Lezione 5
Grammatica BNF (Bakus-Naur Form)
Murano Aniello
Fond. LP - Seconda Lezione 6
Regole di costruzione
4
Murano Aniello
Fond. LP - Seconda Lezione 7
Due livelli
Murano Aniello
Fond. LP - Seconda Lezione 8
Regole per generare espressioni
5
Murano Aniello
Fond. LP - Seconda Lezione 9
Tutto questo è sufficiente?
Murano Aniello
Fond. LP - Seconda Lezione 10
Albero di derivazione
6
Murano Aniello
Fond. LP - Seconda Lezione 11
Semantica operazionale
Murano Aniello
Fond. LP - Seconda Lezione 12
Stati
7
Murano Aniello
Fond. LP - Seconda Lezione 13
Valutazione delle espressioni
Aexp si valuta in interi, rispetto ad un dato stato
Con <a, σ> denotiamo una espressione aritmetica a che deve essere valutata nello stato σ
¾ La coppia <a, σ> è una configurazione
Per dire che l’espressione a valutata nello stato σ si ridue a n usiamo
<a, σ> → n
¾ Il simbolo “ → ” è una relazione di transizione
Specifica il comportamento di una macchina astratta:
¾ Quando forniamo in input alla macchina una coppia espressione (a) stato (σ), la macchina da in output il valore n
¾ Questo può essere pensato come una transizioneda una configurazione a un valore finale.
Murano Aniello
Fond. LP - Seconda Lezione 14
Terminologia
8
Murano Aniello
Fond. LP - Seconda Lezione 15
Semantica operazionale di Aexp (1)
Murano Aniello
Fond. LP - Seconda Lezione 16
Semantica operazionale di Aexp (2)
9
Murano Aniello
Fond. LP - Seconda Lezione 17
Semantica operazionale di Aexp (3)
Murano Aniello
Fond. LP - Seconda Lezione 18
Semantica operazionale di Aexp (4)
10
Murano Aniello
Fond. LP - Seconda Lezione 19
Interpretazione delle regole
Ogni regola di valutazione ha una premessa (scritta sopra la linea) e una conclusione (scritta sotto la linea)
Siccome le regole specificano il significato delle espressioni in modo operazionale, si dice che esse definiscono una semantica operazionale di tali espressioni
Alcune regole non hanno premesse. Queste regole, vengono anche chiamate assiomi come la regola seguente
h n,σ i → n
Murano Aniello
Fond. LP - Seconda Lezione 20
Albero di derivazione
Sia a ≡ (Init + 5 ) + (7 + 9) nello stato σ
0Init una locazione tale che σ
0(init)=0
<Init, σ
0> → 0 <5,σ
0> → 5 <7,σ
0> → 7 <9,σ
0> → 9
<Init + 5,σ
0> → 5 <7 + 9,σ
0> → 16
<(Init + 5) + (7 + 9),σ
0> → 21
Tale struttura viene detta albero di derivazione La conclusione della derivazione si chiama derivata
Si noti come le regole forniscono anche un algoritmo per la
valutazione di espressioni aritmetiche basato sulla ricerca di un
albero di derivazione.
11
Murano Aniello
Fond. LP - Seconda Lezione 21
Equivalenza in Aexp
Murano Aniello
Fond. LP - Seconda Lezione 22
Intermissione
12
Murano Aniello
Fond. LP - Seconda Lezione 23
Semantica operazionale di Bexp(1)
Murano Aniello
Fond. LP - Seconda Lezione 24
Semantica operazionale di Bexp(2)
13
Murano Aniello
Fond. LP - Seconda Lezione 25
Semantica operazionale di Bexp(3)
Murano Aniello
Fond. LP - Seconda Lezione 26
Semantica operazionale di Bexp(4)
14
Murano Aniello
Fond. LP - Seconda Lezione 27
Intermissione
Murano Aniello
Fond. LP - Seconda Lezione 28
Comandi
Valutazione: Il ruolo dei programmi (e quindi dei comandi) è quello di essere eseguiti per cambiare lo stato.
Quando si esegue un programma IMP, sia assume che lo stato (iniziale σ
0) associ valore 0 ad ogni locazione (“variabile”). In pratica σ
0(X)=0. Successivamente l’esecuzione può terminare in uno stato finale oppure divergere
<c, σ> denota una configurazione di comando e denota la possibilità di eseguire il comando c a partire dallo stato σ
La valutazione di un comando è formalmente definita da una funzione da un comando e uno stato ad un nuovo stato.
<c, σ> → σ’
15
Murano Aniello
Fond. LP - Seconda Lezione 29
Semantica Operazionale di Com (1)
Per esempio, < X:=5, σ > → σ’, indica che lo stato σ’ si ottiene dallo stato σ, aggiornandolo in modo che la locazione X contenga il valore 5
Murano Aniello
Fond. LP - Seconda Lezione 30
Semantica Operazonale di Com (2)
16
Murano Aniello
Fond. LP - Seconda Lezione 31
Osservazione
Con questa notazione si può scrivere
<X:=5,σ> = σ[5/X]
Murano Aniello
Fond. LP - Seconda Lezione 32
Semantica Operazonale di Com (3)
17
Murano Aniello
Fond. LP - Seconda Lezione 33
Semantica Operazonale di Com (4)
Murano Aniello
Fond. LP - Seconda Lezione 34
Semantica Operazonale di Com (5)
18
Murano Aniello
Fond. LP - Seconda Lezione 35
Equivalenza in Com (1)
Murano Aniello
Fond. LP - Seconda Lezione 36