Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.

Slides:



Advertisements
Presentazioni simili
Algebra parziale con predicati
Advertisements

Esercitazione guidata 1
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
Semantica Operazionale Strutturata
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
VARIABILI E SCALE DI MISURA. Argomenti della lezione   Variabili   Concetto di Misura   Sistemi Relazionali Empirici   Sistemi Relazionali Numerici.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
+ Common actions Nicolò Sordoni. + Azioni comuni Esistono una serie di azioni di uso comune, che vengono messe a disposizione dalla piattaforma tramite.
Indici di Posizione Giulio Vidotto Raffaele Cioffi.
Basi di dati - Fondamenti
LA CLASSIFICAZIONE DIMENSIONI DEL CONCETTO DI CLASSIFICAZIONE (Marradi, ) classificazione a: operazione intellettuale con cui l’estensione di.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Le Frazioni Prof.ssa A.Comis.
Cosa nascondono i numeri naturali? N Loretta Ferrante.
SUMMERMATHCAMP TARVISIO, AGOSTO 2017
Insiemi di numeri e insiemi di punti
ODMG.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
LA DERIVATA DI UNA FUNZIONE
L’integrale indefinito
Le equazioni di II°Grado
PROPORZIONALITÀ.
Progettazione di una base di dati relazionale
Algoritmi e soluzioni di problemi
IL CONCETTO DI ALGORITMO
Il Binding Nicolò Sordoni.
x : variabile indipendente
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Equazioni differenziali
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
23) Esponenziali e logaritmi
Situazione problematica con una tessera della Matematòca Aritmetica
Appunti di analisi matematica: Integrale Definito
Basi di dati - Fondamenti
Programmare.
Codicfiche Interi Complemento alla base.
Secondo Programma in C.
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Impariamo a conoscere le Matrici
32 = 9 x2 = 9 x = 3 32 = 9 √9 = 3 L’estrazione di radice
Lezione n°6 Prof.ssa Rossella Petreschi
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
Le espressioni algebriche letterali
Le primitive di una funzione
Relazioni dirette e inverse Calcoli percentuali Sopra e sotto cento
Algoritmi e Strutture Dati
I RADICALI ARITMETICI.
ANALISI DI REGRESSIONE
Astrazione e Concretizzazione
Interpretazione Astratta
Il Diagramma di Flusso Docente: Maria Savina Rossi Alunne:
Esercitazione guidata 1
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Selezione e Proiezione
Analisi composizionale e contestuale
Integrale Definito Integrale Indefinito Integrale Definito
Funzione centrale della biblioteca
Modello matematico per la risoluzione dei problemi
Algoritmi.
LA CLASSIFICAZIONE DIMENSIONI DEL CONCETTO DI CLASSIFICAZIONE (Marradi, ) classificazione a: operazione intellettuale con cui l’estensione di.
Semantica operazionale:
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione deve essere descritta in modo composizionale, cioè il valore corrispondente ad ogni termine deve essere determinato sulla base dei valori corrispondenti ai suoi sottotermini (e del costruttore esterno) Per poter fare questo, ogni termine deve essere scomponibile in maniera unica. Ci sono varie scelte possibili per ottenere questo: Usare grammatiche non ambigue Usare non i termini ma una rappresentazione non ambigua, ad esempio l’algebra dei termini (algebra iniziale, modello assolutamente libero…) In realtà l’unicità della scomposizione è una proprietà sufficiente ma non necessaria, basta infatti usare grammatiche semanticamente non ambigue (ad esempio Exp::= Num | Exp + Exp va bene, ma Exp::= Num | Exp + Exp |Exp *Exp no)

Grammatiche ed algebre (riassunto da LP) Data una grammatica G = (T,N,Pr), le si può associare una segnatura SG =(S,Op) S= N è l’insieme dei non terminali di G Op consiste di un’operazione per ogni produzione di G: l’operazione corrispondente alla produzione a ::= str, dove str =w0 a1 w1 a2 ... an wn con ai  N e wi  T* avrà arità a1  a2  ...  an  a e sarà indicata dal simbolo fa ::= str Siccome a noi interessa solo la struttura algebrica e non i nomi usati per tipi e operazioni, useremo la sintassi astratta, cioè la classe di isomorfismo di SG

Metodo pratico per determinare SG Il problema è trovare le operazioni (i tipi sono banalmente i non terminali) Supponiamo di dover trovare il tipaggio dell’operazione f corrispondente alla produzione Fdec ::= Type Id(PDecs) {Stats result Exp} Fdec Type Id(PDecs) {Stats result Exp} f :  Fdec f : Type  Id  PDecs  Stats  Exp  Fdec Il tipo restituito dall’operazione sarà quello a sinistra della produzione Si evidenziano i non terminali presenti nella parte destra della produzione Si riportano tali non terminali come argomenti (separati da )

Algebre su SG t1 : s1 … tn : sn Albero f : s t1 tn ... Algebre iniziali (o dei termini, o assolutamente libere) Per noi sono interessanti perché ogni loro elemento è ottenuto in modo unico per applicazione successiva delle operazioni della segnatura. Sono quindi candidati ideali per la definizione della semantica, perché non presentano problemi di ambiguità. Per ciascuna algebra A sulla stessa segnatura esiste un unico omomorfismo !A dall’algebra iniziale in A. Sono quindi tutte isomorfe fra loro. Un rappresentante canonico è la seguente algebra TSG I suoi carrier sono definiti induttivamente dalle seguenti regole, una per ciascuna operazione f : s1 ...  sn s La base è data dalle operazioni costanti che a loro volta derivano da produzioni la cui parte destra non contiene non terminali t1 : s1 … tn : sn Albero f : s t1 tn ... A ciascuna operazione f : s1 ...  sn s corrisponde una funzione fTSG : s1TSG ...  snTSG  sTSG definita da a1 an f ... fTSG(a1 , …,an) =

! LGs( ) Algebre su SG a1 an f ... = fLG (! LGs1(a1), …, ! LGsn(an)) Algebre sintattiche hanno come carriers il linguaggio definito dalla grammatica. L’algebra LG è definita da Il suo carrier di tipo s è proprio il linguaggio di tipo s, cioè sLG = Ls(G) A ciascuna operazione f : s1 ...  sn s, relativa alla produzione s::= w0 s1 w1 s2 ... sn wn corrisponde la funzione fLG : s1LG ...  snLG sLG definita da fLG (a1 , …,an) = w0 a1 w1 a2 ... an wn LG è ben definita? Com’è definito ! LG: TSG  LG l’unico omomorfismo? Generico elemento di sTSG ! LGs( ) a1 an f ... = fLG (! LGs1(a1), …, ! LGsn(an)) Unica possibilità se vogliamo che ! LG={! LGs: sTSG  sLG} sia un omomorfismo fTSG(a1 , …,an)

Esercizio induttivo u v Provare che data una grammatica G, avente una produzione pr s ::= w0 s1 w1 s2 ... sn wn se ai  Lsi(G), allora w0 a1 w1 a2 ... an wn  Ls(G) Proviamo per induzione aritmetica su i N che sj * aj per j [1,i] implica s * w0 a1 w1 a2 ... wi-1 ai wi si+1 ... sn wn Base i=0. Per definizione di riscrittura ad un passo s  w0 s1 w1 s2 ... sn wn da cui s * w0 s1 w1 s2 ... sn wn Passo induttivo. Sia vero che sj * aj per j [1,i+1] , allora sj * aj per j [1,i] e quindi per ipotesi induttiva che s * w0 a1 w1 a2 ... wi-1 ai wi si+1 ... sn wn u v Sappiamo quindi che s * u si+1 v basta provare che si+1 * ai+1 implica u si+1 v * u ai+1 v e per transitività otterremo s * u ai+1 v, che è la tesi Anche questo lemma si prova per induzione aritmetica, sul numero k di passi necessari per provare che si+1 * ai+1 Base k=0. Cioè ai+1 =si+1; per riflessività, u si+1 v * u si+1 v Passo induttivo. Sia vero che si+1 * ai+1 in k passi implica u si+1 v * u ai+1 v e supponiamo che si+1 * a’i+1 in k+1 passi. Allora avremo si+1 * ai+1 in k passi e ai+1  a’i+1. Quindi u si+1 v * u ai+1 v . Per definizione di riscrittura ad un passo, ai+1  a’i+1 implica che esistono a,b  (TN)* ed una produzione s’::=w t.c. ai+1 = a s’ b e a’i+1 = a w b. Allora u a s’ b v = u ai+1 v  u a’i+1 v = u a w b v da cui per transitività si conclude

Semantica In questo contesto, dare la semantica di un linguaggio diventa fissare un’algebra (quella semantica) ed avere come semantica l’unico omomorfismo dall’algebra iniziale in quella semantica. Quasi. In realtà ci sono 3 punti non immediati L’algebra della semantica per i linguaggi di programmazione è spesso parziale, cioè l’interpretazione delle operazioni sono funzioni parziali (questo problema lo aggireremo) Noi vogliamo associare un valore ad una stringa del linguaggio, quindi ci servirà una funzione che mappi il linguaggio sull’algebra iniziale Siccome siamo più interessati alla funzione semantica che all’algebra, spesso si descrivono direttamente le clausole della semantica e si deducono carrier ed operazioni dell’algebra semantica in modo che la funzione definita sia un omomorfismo

A TSG LG !A ! LG Algebra semantica Parte staticamente corretta Algebra iniziale !A A Tecniche di disambiguazione ! LG Algebra semantica Parte staticamente corretta Vogliamo definire questa freccia LG Linguaggio