1 / 11

Semantica operazionale

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.

xandy
Télécharger la présentation

Semantica operazionale

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 l’evoluzione del sistema durante la computazione delle istruzioni del programma.

  2. 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à anch’esso esteso. Exp::= Exp Op Exp | Num | ‘(‘Exp’)’ Op::= + | - | * | / Num::= ... Espresioni semplici

  3. Il sistema di transizioni per le espressioni semplici Semantica di Exp: Sexp < exp, Texp, exp> • exp {E | E Exp}  {n | n} • T exp {n | n} • exp Eexpn E’expn’n[op]n’ = m E op E’expm Eexpn (E)expn n expn (Expop) (Exp()) (ExpNum)

  4. Esempio: calcolo di 25-3*7 25 - 3 * 7 exp{ (expop), 25 expnum25, 3*7 exp { (expop), 3 expnum 3, 7 expnum 7 3 [*] 7 = 21 } 21 25>21 , 25 [-] 21 = 4 } 4

  5. Semantica Operazionale: Espressioni con identificatori di costanti • 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. • 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 = 138,16 allorche’ Pigreco=3,14 = 138,226 allorche’ Pigreco=3,1415 2 * Pigrego * 22

  6. 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. Un linguaggio d’espressioni con identificatori di costanti Una grammatica G Exp::= Exp Op Exp | Num | ‘(‘ Exp ‘)’ | Ide Op::= + | - |* | / Num::= … Ide::= ... I domini per questa semantica: Ide: gli identificatori validi del C Val: Int Float

  8. Frame 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 ). • applicazione (d) = c dDom, cCod • w è il frame sempre indefinito (cioè  x Dom w(x)= 

  9. Frame In questa semantica i frame sono funzioni Ide ->Val Esempi: 1={<Pigreco,3.14>, <Euro,1936>} e 2={<Pigreco,3.1415>} • Esempi di applicazione delle funzioni 1, 2: 1(Pigreco)=3.14 j2(Pigreco)=3.1415 j1(Euro)= 1936 j2(Euro)=  9/22/2014 9

  10. Semantica di espressioni con identificatori di costanti In questo caso lo stato è semplicemente un frame Semantica di Exp: Sexp < exp, Texp, exp> • exp {<E,j> | E Exp, j{Ide Val}  {n | n} • T exp {n | n} • exp <E,j>expn <E’,j> expn’n[op1]n’ = m <E op1 E’,j> expm <E,j> expn <(E),j> expn <n,j> expn j(x)= n <x,j> expn (Exp+|-) (Exp()) (ExpNum) (ExpIde)

  11. Esempio:calcolo di 2*Pigreco*22 <2 * Pigreco * 22, j{Pigreco=3}> exp{ (exp*|/), 2 expnum2 , Pigreco * 22 exp { (exp*|/), Pigreco exp{ (expIde), j(Pigreco)=3 } 3 22 expnum 22 3 [*] 22 = 66 } 66 2 [*] 66 = 132 } 132

More Related