La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1/8/20141 Semantica operazionale La semantica ha lo scopo di definire il significato di un programma, la semantica operazionale raggiunge tale scopo definendo.

Presentazioni simili


Presentazione sul tema: "1/8/20141 Semantica operazionale La semantica ha lo scopo di definire il significato di un programma, la semantica operazionale raggiunge tale scopo definendo."— Transcript della presentazione:

1 1/8/20141 Semantica operazionale La semantica ha lo scopo di definire il significato di un programma, la semantica operazionale raggiunge tale scopo definendo il comportamento del sistema (calcolatore) mentre esegue il programma. Il comportamento del programma viene definito utilizzando un sistema di transizioni in cui –le configurazioni devono permettere di definire lo stato del sistema, –le configurazioni terminali rappresentano i risultati, –le transizioni descrivono levoluzione del sistema durante la computazione delle istruzioni del programma.

2 1/8/20142 Un sistema di transizioni per espressioni semplici Il sistema di transizioni che descrive la semantica di un linguaggio di programmazione (anche se non completo),è piuttosto complesso, per cui verrà introdotto per passi; Inizieremo con semplice linguaggio di espressioni che può essere descritto da un sistema di transizione molto semplice via via estenderemo il linguaggio, con nuovi meccanismi e di conseguenza il sistema di transizioni verrà anchesso esteso. Exp::= Exp Op Exp | Num | (Exp) Op::= + | - | * | / Num::=... Espresioni semplici

3 Il sistema di transizioni per le espressioni semplici Semantica di Exp: S exp exp {E | E Exp} {n | n } T exp {n | n } exp E exp n E exp n n [op] n = m E op E exp m E exp n (E) exp n n exp n (Exp op ) (Exp () ) (Exp Num )

4 * 7 exp { (exp op ), exp { (exp op ), 25 exp num 25, 25 exp num 25, 3*7 3*7 exp { (exp op ), exp { (exp op ), 3 exp num 3, 3 exp num 3, 7 exp num 7 7 exp num 7 3 [*] 7 = 21 } 3 [*] 7 = 21 } > 21, 25 [-] 21 = 4 } 25 > 21, 25 [-] 21 = 4 } 4 Esempio: calcolo di 25-3*7

5 Semantica Operazionale: Espressioni con identificatori di costanti Riferire una quantità mediante un nome è utile ed è prassi comune in molti formalismi. Riferire una quantità mediante un nome è utile ed è prassi comune in molti formalismi. Le variabili in matematica sono dei nomi (identificatori) ai quali è associato un valore. Nei linguaggi funzionali i valori legati agli identificatori sono costanti. Le variabili in matematica sono dei nomi (identificatori) ai quali è associato un valore. Nei linguaggi funzionali i valori legati agli identificatori sono costanti. Nei linguaggi di programmazione di tipo imperativo gli identificatori con associato il valore sono un meccanismo fondamentale per la definizione dei programmi. Esistono identificatori costanti e modificabili Nei linguaggi di programmazione di tipo imperativo gli identificatori con associato il valore sono un meccanismo fondamentale per la definizione dei programmi. Esistono identificatori costanti e modificabili 2 * Pigrego * 22 = 138,16 allorche Pigreco=3,14 = 138,226 allorche Pigreco=3,1415

6 1/8/20146 Identificatori In ogni linguaggio è necessario definire dei nomi, nei L.P. i nomi vengono chiamati identificatori ed hanno una particolare sintassi, generalmente: Ide::=Lettera Carattere* Lettera::=A|B|C|…|Z|a|b|…|z, Carattere::=Lettera|Cifra|Simbolo, Cifra::=0|1|2|…|9, Simbolo::=-|$|%|:|<|…, Alcuni simboli non sono ammessi

7 1/8/20147 Un linguaggio despressioni con identificatori di costanti Exp::= Exp Op Exp | Num | ( Exp ) | Ide Op::= + | - |* | / Num::= … Ide::=... Una grammatica G I domini per questa semantica: Ide: gli identificatori validi del C Val: Int Float

8 1/8/20148Frame i Un frame è un insieme di coppie {(d,c) |d Dom, c Cod} I frame ( i ) sono rappresentazioni estensionali di funzioni parziali. Un frame è un insieme di coppie {(d,c) |d Dom, c Cod} Per tutti gli elementi d del dominio per cui non esiste (d,c) la funzione è indefinita (cioe vale ). Per tutti gli elementi d del dominio per cui non esiste (d,c) la funzione è indefinita (cioe vale ). applicazione (d) = c d Dom, c Cod applicazione (d) = c d Dom, c Cod è il frame sempre indefinito (cioè x Dom (x)= è il frame sempre indefinito (cioè x Dom (x)=

9 1/8/20149Frame In questa semantica i frame sono funzioni Ide ->Val Esempi: 1={, } e 2={ } 1={, } e 2={ } Esempi di applicazione delle funzioni 1, 2: Esempi di applicazione delle funzioni 1, 2: 1(Pigreco)=3.14 1(Pigreco)=3.14 2(Pigreco)= (Pigreco)= (Euro)= (Euro)= (Euro)= 2(Euro)=

10 Semantica di espressioni con identificatori di costanti Semantica di Exp: S exp Semantica di Exp: S exp exp { | E Exp, {Ide Val} exp { | E Exp, {Ide Val} {n | n } {n | n } T exp {n | n } T exp {n | n } exp exp exp n exp n n [op1] n = m exp n exp n n [op1] n = m exp m exp m exp n exp n (x)= n (x)= n exp n exp n (Exp +|- ) (Exp () ) (Exp Num ) (Exp Ide ) In questo caso lo stato è semplicemente un frame

11 exp { (exp *|/ ), exp { (exp *|/ ), 2 exp num 2, 2 exp num 2, Pigreco * 22 Pigreco * 22 exp { (exp *|/ ), exp { (exp *|/ ), Pigreco Pigreco exp { (exp Ide ), exp { (exp Ide ), (Pigreco)=3 } (Pigreco)=3 } 3 22 exp num exp num 22 3 [*] 22 = 66 } 3 [*] 22 = 66 } [*] 66 = 132 } 2 [*] 66 = 132 } Esempio:calcolo di 2*Pigreco*22


Scaricare ppt "1/8/20141 Semantica operazionale La semantica ha lo scopo di definire il significato di un programma, la semantica operazionale raggiunge tale scopo definendo."

Presentazioni simili


Annunci Google