Semantica operazionale dei linguaggi di Programmazione Oggetti sintattici e oggetti semantici Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P. Mancarella e F. Turini Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.1/51
Oggetti sintattici Nella prima parte del corso abbiamo visto alcuni strumenti per definire formalmente dei linguaggi Abbiamo visto come le regole di una grammatica libera dal contesto non ambigua diano una struttura ben precisa ad ogni stringa de linguaggio Tale struttura è ricorsiva se il linguaggio non è banale (finito) Tale struttura è completamente rappresentata dall albero di derivazione Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.2/51
Oggetti sintattici Abbiamo più volte sottolineato il fatto che le stringhe di un linguaggio sono di base oggetti simbolici puri Non hanno un significato particolare associato, a parte quello di essere stringhe formate con certi simboli Siamo noi che diamo loro un significato a seconda del contesto in cui le usiamo Tale significato lo chiameremo semantica del linguaggio Possiamo assegnare infinite semantiche ad uno stesso linguaggio! Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.3/51
Funzioni di valutazione semantica In un contesto informale il significato di una parola o di una frase può essere ambiguo Nel nostro ambito vogliamo la massima precisione Assegneremo la semantica in maniera formale Definiremo in maniera rigorosa delle funzioni che associano ad ogni stringa del linguaggio il relativo significato Il significato sarà un elemento di un certo dominio semantico Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.4/51
Domini semantici Se gli oggetti sintattici sono definiti precisamente, altrettanto vogliamo per gli oggetti semantici Utilizzeremo come domini semantici gli oggetti matematici: Insiemi con relative operazioni: numeri naturali con +,,... Funzioni parziali o totali fra domini semantici Strutture: pile di funzioni, alberi,...... Le funzioni di valutazione semantica saranno definite in maniera formale Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.5/51
Stringhe di cifre Facciamo il primo esempio di funzione di valutazione semantica Consideriamo gli elementi della categoria sintattica Num Sono stringhe formate da cifre decimali Qual è il loro significato? A noi risulta naturale pensare ai numeri naturali, perché questa è la semantica che quasi sempre viene assegnata loro Ma tali stringhe sono solo una possibile rappresentazione dei numeri naturali! Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.6/51
Stringhe di cifre Formalmente ciò che lega una stringa di cifre decimali a un numero naturale è una funzione che associa ad ogni stringa un certo numero naturale Questa funzione è un esempio di funzione di valutazione semantica: lega oggetti sintattici a elementi di un certo dominio semantico Vediamo come può essere definita formalmente tale funzione Sappiamo che il sistema di numerazione in base dieci funziona in questo modo: La stringa 134 rappresenta il numero 1 10 2 + 3 10 1 + 4 10 0 = 1 100 + 3 10 + 4 1 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.7/51
Formalizziamo Indichiamo con n,n,... elementi della categoria sintattica Num, cioè stringhe generate dalla grammatica Num ::= Num Cif Cif Cif ::= 0 1... 9 Indichiamo con n,n,... numeri naturali: IN = {0,1,2,3,4,5,...} Definiamo una funzione η:num IN che lega ad ogni stringa il numero naturale denotato Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.8/51
Definizione di η La funzione η può essere convenientemente definita in maniera ricorsiva utilizzando la struttura ricorsiva a sinistra suggerita dalla grammatica: η(0) = 0 η(1) = 1... η(9) = 9 η(nc) = (η(n) 10) + η(c) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.9/51
Altre rappresentazioni I numeri naturali possono avere un numero infinito di rappresentazioni sintattiche! Ad esempio possiamo utilizzare una notazione binaria in cui i simboli sono le lettere dell alfabeto {z,u} La grammatica che usiamo è: Binary ::= Bit Binary Bit Bit ::= z u Possiamo definire in maniera analoga alla precedente una funzione che associa a queste stringhe un numero naturale: η :Binary IN Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.10/51
Altre rappresentazioni Basta associare a z il numero 0, ad u ul numero 1 e poi utilizzare il sistema binario di rappresentazione: zuzz rappresenta 0 2 3 +1 2 2 +0 2 1 +0 2 0 = 4 η (z) = 0 η (u) = 1 η (xb) = (η (x) 2) + η (b) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.11/51
Applicazione di η η (zuzz) = (η (zuz) 2) + η (z) = (η (zuz) 2) +0 = (((η (zu) 2) + η (z)) 2) +0 = (((η (zu) 2) +0) 2) +0 = (((((η (z) 2) + η (u)) 2) +0) 2) +0 = (((((0 2) +1) 2) +0) 2) +0 = ((((0 +1) 2) +0) 2) +0 = (((1 2) +0) 2) +0 = ((2 +0) 2) +0 = (2 2) +0 = 4 +0 = 4 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.12/51
Espressioni Definiamo formalmente l associazione fra espressioni aritmetiche e loro valore La definizione formale di questa funzione di valutazione semantica sarà il primo passo verso il nostro obiettivo finale Ci concentreremo attentamente su tutte le fasi di questo esempio Nel seguito infatti lo schema di definizione sarà sempre lo stesso Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.13/51
Sintassi Abbiamo già visto come si scrive una grammatica per le espressioni con operatori a cui è assegnata una precedenza e una regola di associatività Tali regole si riflettono sull albero di derivazione che rappresenta precisamente la struttura della stringa. Ad esempio 9 + 3 16: E E + T T T * F F F Num Num Num Num Cif Cif Cif Cif 6 9 3 1 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.14/51
Sintassi La risoluzione dell ambiguità della grammatica e la gestione delle regole di precedenza e di associatività rendono l albero di derivazione complesso In realtà basterebbe una rappresentazione più semplice per rappresentare la struttura della stringa Quello che faremo da adesso in poi è utilizzare un albero di derivazione semplificato chiamato albero sintattico L albero sintattico non è dettagliato come l albero di derivazione ed esprime solo ciò che serve ai fini della definizione della semantica Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.15/51
Albero sintattico Ad esempio l albero sintattico corrispondente all albero di derivazione della stringa 9 + 3 16 introdotta prima è: Exp Exp + Exp 9 Exp * Exp 3 16 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.16/51
Albero sintattico Nell albero sintattico sono indicati solo gli operandi e gli operatori La struttura dei sottoalberi esprime le regole di precedenza e associatività Tutto il resto è omesso Da un albero di derivazione è semplice ottenere il corrispondente albero sintattico Si può dire che l albero sintattico è una rappresentazione compatta dell albero di derivazione Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.17/51
Convenzione Da ora in poi useremo solo alberi sintattici come oggetti sintattici Assumeremo che ai nostri sistemi di transizioni vengano sempre passati alberi sintattici ottenuti semplificando alberi di derivazione In questo modo semplifichiamo i sistemi di transizioni che si concentrano solo sul problema della definizione della semantica Chi fornisce gli alberi sintattici si occuperà dei problemi relativi alla scrittura della grammatica giusta, problemi prettamente sintattici Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.18/51
Grammatiche semplici Alla luce di questa convenzione facciamo anche un altra operazione di semplificazione Non usiamo grammatiche complicate introdotte per gestire i problemi di ambiguità e precedenza/associatività Per specificare la sintassi ci basterà scrivere grammatiche semplici, anche ambigue Questo perché comunque i problemi di queste grammatiche sono risolti alla fonte: ci viene passato un albero sintattico Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.19/51
Grammatica semplice Daremo semantica precisamente all albero sintattico, considerando solamente gli operandi, gli operatori e la struttura di questo Quindi per specificare la sintassi delle espressioni ci basterà utilizzare questa grammatica: Exp ::= Num (Exp) Exp Op Exp Op ::= + - * / % Chi ci fornisce gli alberi sintattici si sarà preoccupato di eliminare l ambiguità e di aver espresso nell albero stesso la struttura della stringa in accordo alla precedenza/associatività Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.20/51
Convenzione di scrittura Risulterà comodo, per la chiarezza dell esposizione, poter rappresentare un albero sintattico in maniera lineare, cioè senza disegnare l albero Per far questo aggiungeremo alle stringhe delle parentesi quadre che indicheranno la struttura dell albero... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.21/51
Convenzioni di scrittura Ad esempio, per indicare l albero sintattico: Exp Exp + Exp 9 Exp * Exp 3 16 scriveremo la stringa 9 + [3 16] Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.22/51
Metavariabili Utilizzeremo i simboli E,E,E 1,E 2,... per denotare alberi sintattici della categoria sintattica Exp In questo caso quindi la scrittura E Exp denota che E è un albero sintattico, non una stringa Ometteremo queste premesse nelle regole, poiché usiamo metavariabili Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.23/51
Matching Per il matching bisogna tener conto della struttura: E+E fa match con 9 + [3 16] ponendo E = 9 ed E = 3 16 9 + [3 16] non fa match con E E poiché l albero 9 + [3 16] non ha al primo livello l operatore Un albero che fa match con E E potrebbe essere [([9 + 3])] 16 Si noti che le parentesi hanno al loro interno l albero 9 + 3, che è a tutti gli effetti un sottoalbero dell albero ([9 + 3]) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.24/51
Calcolo del valore Abbiamo tutti gli ingredienti per definire un sistema di transizioni che calcola il valore di una espressione Naturalmente sarà un sistema big-step che utilizza come base per la ricorsione la relazione di sottoalbero degli alberi sintattici Le regole saranno guidate dalla sintassi: ogni caso sintattico della grammatica semplificata avrà una regola semantica Nelle configurazioni non ci saranno stringhe, ma alberi sintattici Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.25/51
Configurazioni Le configurazioni del sistema sono le seguenti Γ exp T exp = {E E Exp} {n n IN} = {n n IN} Come abbiamo visto in precedenza, poiché il sistema è definito nello stile big-step non abbiamo bisogno di configurazioni intermedie Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.26/51
Configurazioni Si noti come ad una configurazione contentente un oggetto sintattico (l albero sintattico) il sistema associa una configurazione terminale formata da un oggetto di un dominio semantico (un numero naturale) Questo sistema sarà la base con cui definiremo la funzione di valutazione semantica delle espressioni aritmetiche Dalla grammatica vediamo che per ora le espressioni hanno come operandi solo stringhe di Num Partiamo con la prima regola che tratta il caso base... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.27/51
Regole per exp Una espressione il cui albero sintattico è formato solo da una stringa di cifre n, elemento della categoria sintattica Num, ha come valore il numero naturale denotato da n In questo caso supponiamo che il sistema sia in grado di ottenere il numero dalla rappresentazione, ad esempio usando la funzione η definita sopra La regola di exp per questo caso sintattico non ha premesse: n exp n (exp n ) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.28/51
Regole per exp? E+E exp? Vediamo la regola (exp + ) che gestisce il caso sintattico Exp +Exp La configurazione di input richiede che venga passato un albero sintattico in cui al primo livello ci sia l operatore + applicato a due sottoalberi E ed E Per calcolare il valore di tutta l espressione abbiamo bisogno del valore delle espressioni che sono nei sottoalberi... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.29/51
Regole per exp E exp n? E+E exp? Per calcolare il valore dell espressione rappresentata dal sottoalbero E applichiamo la ricorsione L ipotesi induttiva ci garantisce che il sistema è in grado di effettuare il calcolo sull albero E poiché questo è un albero più piccolo dell albero che si sta trattando Inoltre l ipotesi induttiva garantisce che se il calcolo viene effettuato allora il risultato, che chiamiamo n, è corretto Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.30/51
Regole per exp E exp n E exp n E+E exp? Facciamo una chiamata ricorsiva anche sul sottoalbero destro E per ottenere il valore n Non ci resta che applicare l operatore semantico di somma tra numeri naturali per ottenere il valore dell espressione E+E Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.31/51
Regole per exp E exp n E exp n m = n +n E+E exp m Chiamiamo m il valore della somma e poniamolo come configurazione di arrivo Facciamo ora una precisazione sugli operatori e sulla loro rappresentazione Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.32/51
Operatori e loro rappresentazione Anche per gli operatori, come per i numeri, bisogna distinguere tra rappresentazione sintattica e operatore vero e proprio Nella regola precedente abbiamo utilizzato il + sia come simbolo di alfabeto che come operatore binario fra numeri naturali Nell albero sintattico E +E il + è un mero simbolo, la semantica può assegnargli un qualsiasi significato Nell equazione m = n +n il + è il ben noto operatore di somma tra numeri naturali Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.33/51
Operatori e loro rappresentazione Formalmente è buona regola usare due simboli diversi o degli accorgimenti tipografici per distinguerli In questo caso facciamo un eccezione a questa regola, ma per altri operatori faremo la distinzione Quando uno stesso simbolo, come in questo caso il +, viene usato per rappresentare diversi oggetti bisogna fare attenzione al suo uso In genere si capisce dal contesto il significato da attribuirgli di volta in volta Se questo non è vero allora conviene distinguere i simboli o specificare di volta in volta il significato Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.34/51
Regole per exp E exp n E exp n m = n n E*E exp m Questa regola (exp ) si occupa del caso sintattico Exp Exp Essa opera allo stesso modo di (exp + ): fa due chiamate ricorsive e un calcolo In questo caso abbiamo distinto il simbolo dall operatore di prodotto fra numeri naturali vero e proprio, rappresentato con Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.35/51
Regole per exp E exp n E exp n? E / E exp? Questa regola (exp div ) si occupa del caso sintattico Exp/Exp Come operatore useremo div, che fa la divisione intera fra numeri naturali: il risultato è un numero naturale e l operazione ha un resto Una volta che abbiamo ottenuto i valori delle espressioni dei sottalberi si presenta un problema Se il valore n è 0 l operatore div non è applicabile! Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.36/51
Regole per exp E exp n E exp n n 0 m = n div n E / E exp m Dobbiamo inserire nelle premesse una condizione logica che escluda questo caso, cioè n 0 A questo punto possiamo andare avanti e applicare l operatore div per ottenere il risultato m Ma cosa succede al sistema se il valore di n è proprio 0? Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.37/51
Configurazioni Bloccate Supponiamo di mettere il sistema nella configurazione 4/0 Che valore ci aspettiamo per questa espressione? Chiaramente non possiamo aspettarci nessun numero naturale se interpretiamo il simbolo / come la divisione intera! La regola che abbiamo scritto ha una premessa che esclude la sua applicabilità nei casi in cui il divisore sia 0 Non essendoci altre regole che gestiscono questo caso quello che abbiamo è che il sistema si blocca Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.38/51
Configurazioni Bloccate Abbiamo visto che una configurazione γ di un sistema di transizioni si dice bloccata se non è terminale e se non esiste nessuna configurazione γ tale che γ γ Questo è proprio il caso di tutte le configurazioni che contengono alberi sintattici in cui in qualche sottoalbero c è una divisione per un espressione che ha valore 0 Es: 4/0, 3 + [53/0], 4 [25/[([2 2])]],... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.39/51
Configurazioni bloccate Alla luce di questo fatto dobbiamo rivedere l ipotesi induttiva Quello che possiamo veramente assumere è che, dato un sottoalbero E dell albero che stiamo gestendo, la chiamata ricorsiva del sistema se non si blocca allora è in grado di restituire il valore associato alla espressione rappresentata dal sottoalbero Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.40/51
Configurazioni bloccate Quindi in ogni regola in cui nelle premesse usiamo la ricorsione può succedere che il sistema si blocchi provocando, a sua volta, il blocco della regola in questione Ad esempio il sottoalbero 3/0 dell albero 2 [3/0] provocherà il blocco di tutta la configurazione 2 [3/0] gestita dalla regola (exp ) Anche la regola per %, che rappresenta l operatore che dà il resto della divisione intera, può provocare dei blocchi... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.41/51
Regole per exp E exp n E exp n n 0 m = n mod n E % E exp m In questa regola (exp mod ) trattiamo il caso sintattico Exp % Exp L operatore semantico è rappresentato con mod Anche in questo caso c è bisogno della premessa che esclude i casi in cui il divisore sia 0 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.42/51
Regole per exp E exp n E exp n? E-E exp? In questa regola (exp ) si presenta un altro problema: che succede se n è più grande di n? Tutto dipende dal dominio semantico che vogliamo utilizzare Se come dominio semantico usiamo l insieme IN allora in questi casi il sistema si deve bloccare Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.43/51
Regole per exp E exp n E exp n n n m = n n E-E exp m Se invece usassimo l insieme dei numeri interi allora potremmo trattare i numeri negativi Per semplicità prendiamo IN e facciamo bloccare il sistema Si noti che, come per +, anche al simbolo diamo un doppio significato Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.44/51
Regole per exp E exp n (E) exp n Questa regola (exp () ) semplicemente esprime il fatto che il valore di un espressione tra parentesi è uguale al valore dell espressione dentro la parentesi Si noti che la ricorsione è applicata correttamente poiché l albero E è un sottoalbero dell albero (E) Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.45/51
Derivazione Facciamo un esempio di derivazione che usa le regole viste: 25-15 / 2 exp { (exp ), (exp n ): 25 exp 25, (d1): 15 / 2 exp 7, 25 7, 25 7 = 18 } 18 E utilizzata una sottoderivazione (d1)... Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.46/51
Derivazione (d1): Vediamo la sottoderivazione (d1) attivata dalla derivazione principale: 15 / 2 exp { (exp div ), (exp n ): 15 exp 15, (exp n ): 2 exp 2, 2 0, 15 div 2 = 7 } 7 Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.47/51
Derivazione ad albero E possibile esprimere una derivazione anche costruendo un albero in cui le sottoderivazioni sono sottoalberi: 2 2 (exp n) 3 3 (exp n) 8 8 ((exp n) 11 = 3 +8 3 +8 11 2 + [3 +8] 13 (exp + ) 13 = 2 +11 (exp + ) Si noti che l applicazione di regole senza premesse determina un nodo foglia (cioè senza figli) dell albero Nel seguito, tuttavia, continueremo ad utilizzare prevalentemente le sottoderivazioni Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.48/51
Funzione di valutazione semantica Possiamo ora definire formalmente la funzione di valutazione semantica E che associa ad un albero sintattico E di Exp il suo valore Il dominio semantico di riferimento è l insieme dei numeri naturali IN con le operazioni in esso definite: +,,,div,mod Il tipo della funzione è il seguente: E:Exp IN La definizione di questa funzione viene data mediante il sistema di transizione Γ exp,t exp, exp Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.49/51
Funzione di valutazione semantica Per definire E usiamo una notazione speciale che sta ad indicare che la funzione che stiamo definendo è una funzione di valutazione semantica: E [E] = k se e solo se E exp k Dalla definizione e dalle regole che abbiamo scritto segue che E, a differenza di η, non è definita per tutte le espressioni Infatti abbiamo visto che per certe espressioni E il sistema che abbiamo definito si blocca In questo caso la definizione se e solo se non dà nessun valore per E [E] Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.50/51
Funzione di valutazione semantica Una funzione si dice totale se è definita per tutti gli elementi del suo dominio Se almeno per un elemento del dominio la funzione non è definita allora si dice che è parziale E è quindi una funzione parziale In particolare E non è definita per ogni E Exp tale che E exp Spesso si usa la seguente notazione per indicare che la funzione su un certo elemento del dominio non è definita: E [3/0] = si legge bottom o indefinito Università degli Studi di Camerino - Corso di Laurea in Informatica - Programmazione - Semantica - Oggetti sintattici e oggetti semantici p.51/51