Grammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Grammatiche. Rosario Culmone, Luca Tesei. 20/11/2006 UNICAM - p. 1/49"

Transcript

1 Grammatiche Rosario Culmone, Luca Tesei 20/11/2006 UNICAM - p. 1/49

2 Grammatiche libere dal contesto Ogni linguaggio di programmazione ha delle regole che prescrivono la struttura sintattica dei programmi ben formati del linguaggio. Ad esempio in Java un programma corretto è formato da blocchi, i blocchi sono formati da statements, gli statements da espressioni, le espressioni dai token e così via. La sintassi dei linguaggi di programmazione è descretta mediante grammatiche libere dal contesto (context-free grammars). Il formalismo che spesso viene utilizzato va sotto il nome di notazione BNF (Backus-Naur Form). 20/11/2006 UNICAM - p. 2/49

3 Vantaggi Le grammatiche offrono vantaggi significativi sia ai progettisti dei linguaggi di programmazione che ai loro implementatori. Vediamo i principali: Descrizione sintattica precisa, facile da capire per un linguaggio di programmazione. Per alcune classi di grammatiche si possono automaticamente costruire degli analizzatori efficienti che determinano se un certo programma sorgente è sintatticamente ben formato. Con strumenti automatici è possibile trovare anomalie nella definizione delle grammatiche. Gli strumenti per il riconoscimento producono anche le strutture che possono venir utilizzati nella fase di traduzione o interpretazione del programma. Aggiungere nuovi costrutti a un linguaggio descritto tramite grammatica permette una facile evoluzione. 20/11/2006 UNICAM - p. 3/49

4 Grammatica libera dal contesto Una Grammatica libera dal contesto è una tupla G = Σ, V, S, P dove: Σ è un insieme finito dei simboli di alfabeto o Simboli Terminali V è un insieme finito di simboli che rappresentano Categorie Sintattiche o simboli non terminali S V è un simbolo di categoria sintattica indicato come iniziale o principale P è un insieme finito di regole, chiamate Produzioni, della forma A X 1 X 2 X k 20/11/2006 UNICAM - p. 4/49

5 Grammatica libera dal contesto A V è la testa o parte sinistra della produzione i {1,...,k}. X i (V Σ). La stringa X 1 X 2 X k (V Σ) si chiama corpo o parte destra della produzione. Il corpo di una produzione può anche essere vuoto. In questo caso la produzione viene scritta A ǫ. Nella notazione BNF ::= è usato a posto della freccia. 20/11/2006 UNICAM - p. 5/49

6 Scopo Il compito principale di una grammatica è permettere di generare stringhe di simboli terminali. Il processo di generazione delle stringhe può avvenire tramite costruzione di alberi di derivazione o, equivalentemente, derivazioni. 20/11/2006 UNICAM - p. 6/49

7 Simboli terminali I seguenti simboli indicano simboli terminali della grammatica: Lettere minuscole all inizio dell alfabeto: a, b, c,..., a, a,...,a 1, a 2,... Simboli di operatori: +,,,... Simboli di punteggiatura come virgole, punti e virgola, due punti, punti,... Le cifre 0,1,...,9. Stringhe in grassetto come id o if. 20/11/2006 UNICAM - p. 7/49

8 Simboli non terminali I seguenti simboli indicano simboli non terminali della grammatica: Lettere maiuscole all inizio dell alfabeto: A, B, C,..., A, A,...,A 1, A 2,... La lettera S che in genere indica il simbolo iniziale della grammatica (a meno che non sia specificato diversamente) Stringhe in minuscolo e in corsivo come ad esempio expr o stmt. Stringhe qualsiasi tra < e > come ad esempio < OP > oppure < AB >. 20/11/2006 UNICAM - p. 8/49

9 Convenzioni Le lettere maiuscole alla fine dell alfabeto: X, Y, Z,..., X, X,...,X 1, X 2,... rappresentano un simbolo terminale o non terminale, cioè simboli nell insieme Σ V. Le lettere minuscole alla fine dell alfabeto: u, v, w, x, y, z,..., u, x,...,x 1, v 2,... rappresentano stringhe di soli simboli terminali (anche vuote), cioè elementi di Σ. 20/11/2006 UNICAM - p. 9/49

10 Convenzioni Le lettere minuscole dell alfabeto greco: α, β, δ, γ,..., α, α,...,β 1, γ 2,... rappresentano stringhe, anche vuote, formate da simboli terminali o non terminali, cioè elementi di (V Σ). Tramite le convenzioni viste fino ad ora, vediamo che una generica produzione della grammatica può essere indicata con A α. Se A α 1, A α 2,...,A α k sono tutte le produzioni con lo stesso simbolo a sinistra A (le chiamiamo A-produzioni), allora possiamo scrivere equivalentemente A α 1 α 2 α k. Le α i, i = 1, 2,...,k sono chiamate alternative per A. A meno che non si specifichi diversamente, assumeremo che la parte sinistra della prima produzione data per una grammatica sia il simbolo iniziale. 20/11/2006 UNICAM - p. 10/49

11 Alberi di produzione Sia G = Σ, V, S, P una grammatica libera dal contesto. Un albero di derivazione di G è un albero in cui i nodi sono etichettati con i simboli della grammatica Σ V e sono rispettate le seguenti proprietà: La radice dell albero è etichettata con il simbolo iniziale S Ogni foglia dell albero è etichettata con un simbolo terminale Ogni nodo interno dell albero è etichettato con un simbolo non terminale A i cui figli, presi da sinistra a destra, sono etichettati con i simboli X 1 X 2 X n della parte destra di una qualche produzione A X 1 X 2 X n in P. 20/11/2006 UNICAM - p. 11/49

12 Esempio Consideriamo la seguente grammatica: E E + E E E (E) E id I simboli terminali sono (, ), +,,,id. L unico simbolo non terminale è E che è anche simbolo iniziale. L albero di derivazione per id + id id è il seguente: E E + E id E id * E id 20/11/2006 UNICAM - p. 12/49

13 Alberi di derivazione Tramite gli alberi di derivazione e la nozione di stringa associata possiamo definire precisamente cosa si intende per linguaggio generato da una grammatica. Sia G = Σ, V, S, P una grammatica libera dal contesto. Il linguaggio generato da G è indicato con L(G) ed è l insieme delle stringhe di w Σ tali che esiste un albero di derivazione di G la cui stringa associata è w 20/11/2006 UNICAM - p. 13/49

14 Passo di derivazione Sia G = Σ, V, S, P una grammatica libera dal contesto e sia α una stringa che contiene almeno un simbolo non terminale A. Se A X 1 X 2 X k P, allora possiamo riscrivere: α = δaγ G δx 1 X 2 X k γ Il simbolo G rappresenta un passo di derivazione per la grammatica G. Spesso, se la grammatica che consideriamo è chiara dal contesto, ometteremo il pedice G. 20/11/2006 UNICAM - p. 14/49

15 Derivazione Sia G = Σ, V, S, P una grammatica libera dal contesto. Una derivazione di una stringa w Σ a partire da S è una sequenza: S = α 0 G α 1 G α 2 G α n = w dove, per ogni i {0, 1,...,n 1}, α i G α i+1 è un passo di derivazione che riscrive un qualche simbolo non terminale di α i. 20/11/2006 UNICAM - p. 15/49

16 Derivazione Si noti che se i < n allora α i (Σ V ). Una stringa di questo tipo, generata cioè con un certo numero di passi di derivazione a partire dal simbolo iniziale, viene chiamata forma sentenziale. Una derivazione lunga 0 passi è la sequenza composta solo dal simbolo S. Per indicare una derivazione di zero o più passi da S ad una certa stringa α scriviamo S G α, mentre S + G α indica una derivazione lunga almeno 1 passo da S a α 20/11/2006 UNICAM - p. 16/49

17 Linguaggio generato mediante derivazione Possiamo definire il linguaggio generato dalla grammatica anche con la nozione di derivazione dicendo che L(G) = {w Σ S G w}. Questa definizione è equivalente a quella data usando gli alberi di derivazione, nel senso che l insieme di stringhe definito con le derivazioni è lo stesso di quello definito con gli alberi di derivazione. Per convincersi di questo basta notare che la costruzione di una derivazione induce in maniera naturale la costruzione di un albero di derivazione. 20/11/2006 UNICAM - p. 17/49

18 Esempio di derivazione Prendiamo ad esempio una derivazione per la stringa (id + id) con la grammatica dell esempio precedente: E E (E) (E + E) (id + E) (id + id) Ogni passo di derivazione si riflette nel corrispondente albero di derivazione 20/11/2006 UNICAM - p. 18/49

19 Esempio di derivazione E E - E E - E ( E ) E E E - E - E - E ( E ) ( E ) ( E ) E + E E + E E + E id id id 20/11/2006 UNICAM - p. 19/49

20 Scelte Si noti che, durante la derivazione di una stringa dal simbolo iniziale della grammatica, ad ogni passo occorre fare due scelte. Supponiamo di avere una forma sentenziale β (cioè S β) che non sia una stringa di soli terminali. In generale, per fare un passo di derivazione β β, bisogna: 1. Individuare un simbolo non terminale in β che sarà il candidato per la riscrittura: β = αaγ 2. Scegliere una produzione A δ, fra le eventuali possibili scelte per A, con la quale effettuare la riscrittura β = αaγ αδγ 20/11/2006 UNICAM - p. 20/49

21 Derivazione Leftmost Ad ogni passo si riscrive il simbolo non terminale A di una forma sentenziale β che sta più a sinistra: β = xaα (ricordiamo che per x si intende una stringa di soli simboli terminali). Le forme sentenziali che si trovano lungo una derivazione leftmost si chiamano forme sentenziali sinistre. Per indicare che ad un passo di derivazione si è applicata la regola leftmost utilizziamo la notazione xaα lm xδα a In caso di più passi di derivazione leftmost usiamo lm ( + lm ) per zero o più passi (per uno o più passi). Si noti che una derivazione è leftmost se e solo se tutti i passi di cui è composta sono leftmost. a Omettiamo il simbolo G che indica la grammatica che stiamo usando. In questi casi sarà opportuno sincerarsi che la grammatica G in questione sia chiaramente specificata nel contesto. 20/11/2006 UNICAM - p. 21/49

22 Derivazione Rightmost Ad ogni passo riscriviamo il simbolo non terminale più a destra. Le forme sentenziali sono dette forme sentenziali destre e la notazione usata è rm con le stesse estensioni viste nel caso leftmost: S rm αax rm αδx. 20/11/2006 UNICAM - p. 22/49

23 Ambiguità Una grammatica libera dal contesto G si dice ambigua se e solo se esiste una stringa w L(G) tale che esistono due alberi di derivazione T e T di G con le seguenti proprietà: T e T sono diversi T e T hanno w come stringa associata Di converso, G non è ambigua se per ogni stringa w L(G) esiste uno ed un solo albero di derivazione di G che ha w come stringa associata. 20/11/2006 UNICAM - p. 23/49

24 Esempio di ambiguità Consideriamo la seguente grammatica: E E + E E E (E) id Questa grammatica è ambigua poichè per la stringa id + id id esistono i due alberi di derivazione. Equivalentemente esistono due derivazioni leftmost. 20/11/2006 UNICAM - p. 24/49

25 Esempio di ambiguità Le due derivazioni leftmost per la stringa id + id id: E lm E + E lm id + E lm id + E E lm id + id E lm id + id id E lm E E lm E + E E lm id + E E lm id + id E lm id + id id E E E + E E * E id E * E E + E id id id id id 20/11/2006 UNICAM - p. 25/49

26 Disambiguare La disambiguazione di una grammatica consiste nella riscrittura delle sue produzioni (anche introducendo o togliendo simboli non terminali) in modo tale da lasciare inalterato il linguaggio generato e da avere un solo albero di derivazione per tutte le stringhe, anche quelle per le quali esistevano più alberi di derivazione associati nella grammatica di partenza. 20/11/2006 UNICAM - p. 26/49

27 Un costrutto ambiguo Consideriamo il costrutto if-then-else stmt if expr then stmt if expr then stmt else stmt altri_comandi E possibile ottenere la stessa frase con applicazione diversa della stessa produzione: oppure stmt if expr then stmt if expr then if expr then stmt else stmt stmt if expr then stmt else stmt if expr then if expr then stmt else stmt 20/11/2006 UNICAM - p. 27/49

28 Alberi di derivazione stmt if expr then stmt E 1 if expr then stmt else stmt E 2 C 1 C 1 stmt if expr then stnt else stnt E 1 if expr then stmt C 2 E 2 C 1 20/11/2006 UNICAM - p. 28/49

29 match stmt matched_stmt unmatched_stmt matched_stmt if expr then matched_stmt else matched_stmt non_cond unmatched_stmt if expr then stmt if expr then matched_stmt else unmatched_stmt 20/11/2006 UNICAM - p. 29/49

30 Albero di derivazione stmt unmatched_stmt if expr then stmt E 1 matched_stmt if expr then matched_stmt else matced_stmt E 2 non_cond non_cond C 1 C 2 20/11/2006 UNICAM - p. 30/49

31 Associatività Talvolta se adeguatamente progettata la sintassi può agevolare la fase di analisi semantica. Per spiegare meglio questo caso si consideri gli operatori artimetici +,,, /. In una espressione aritmetica, ad esempio a + b c d/e l ordine di valutazione è: a + b c d / e L ordine di valutazione può essere alterato mediante l uso delle parentesi. Ad esempio: ( a + b ) c d / e /11/2006 UNICAM - p. 31/49

32 Precedenza degli operatori Si possono definire i seguenti livelli di precedenza fra gli operatori aritmetici: 1. Termini (simbolo T), cioè gli operandi. Hanno il maggiore livello di precedenza per definizione. Nei termini sono comprese le parentesi che sono le prime ad essere valutate. 2. Fattori (simbolo F), cioè applicazione di o /. Hanno la stessa precedenza, inferiore a quella dei termini. L associatività è a sinistra (come è di solito nei linguaggi) 3. Espressioni (simbolo E), cioè applicazione di + e. Hanno la precedenza più bassa di tutti. L associatività è a sinistra. 20/11/2006 UNICAM - p. 32/49

33 Sintassi delle espressioni aritmetiche Tenendo conto delle precedenze possiamo definire la seguente sintassi. Come si può notare a priorità maggiore corrisponde non terminali prossimi a terminali. E F E+F E-F F T F *T F /T T V C (E) Definizione di Espressione aritmetica Definizione di Fattore Definizione di Termine dove V è la classe sintattica delle variabili e C la classe sintattica delle costanti. 20/11/2006 UNICAM - p. 33/49

34 Esempio di espressione aritmetica 1 L espressione aritmetica 3 + x ha associato l albero di derivazione: E E F T + F T V C 20/11/2006 UNICAM - p. 34/49

35 Esempio di espressione aritmetica 2 L espressione aritmetica 3 + x 2 ha associato l albero di derivazione: E E + F F T C F T V * T C 20/11/2006 UNICAM - p. 35/49

36 Esempio di espressione aritmetica 3 L espressione aritmetica (3 + x) 2 ha associato l albero di derivazione: E F F T ( E * T ) C E F T + F T V C 20/11/2006 UNICAM - p. 36/49

37 Fase di valutazione delle espressioni La tecnica per associare la valutazione delle espressioni aritmetiche ricalca l applicazione delle produzioni che sono servite per generare l espressione ma in ordine inverso. Ovvero con la sintassi sotto mano si cerca di ridurre sino a quando gli operatori sono pieni quindi si effettua l operazione vera e propria. 20/11/2006 UNICAM - p. 37/49

38 Scrittura di grammatiche Assenza di ricorsione S aa bb A ab c B ba c Il linguaggio generato è {aab, ac, bba, bc} Ricorsione diretta S aa bb A aa c B ba c Il linguaggio generato è {bba, bc} {a n c n > 0}. 20/11/2006 UNICAM - p. 38/49

39 Ricorsione destra, sinistra e mutua Ricorsione destra Il linguaggio generato è {a n b n 0} Ricorsione sinistra Il linguaggio generato è {ba n n 0} Mutua ricorsione S as b S Sa b A 1B a B 0A b Il linguaggio generato è {a, 1b, 10a, 101b, 1010a,... } 20/11/2006 UNICAM - p. 39/49

40 xy n z Produzioni del tipo xy n z dove n può essere positivo o anche zero e x e z sono delle stringhe prefisso e suffisso: Linguaggio Vincoli Grammatica {c, bc, bbc,... } n 0, x = ǫ, z = c S bs c {bc, bbc,... } n > 0, x = ǫ, z = c S bs bc {ab, abb,... } n > 0, x = a, z = ǫ (ricorsione sinistra) S Sb ab (ricorsione destra) S aa, A ba b {a, ab, abb,... } n 0, x = a, z = ǫ S aa, A ba ǫ {ac, abc, abbc,... } n 0, x = a, z = c S aa, A ba c {ac, abc, abbc,... } n > 0, x = a, z = c S aa, A ba bc 20/11/2006 UNICAM - p. 40/49

41 a n b n Linguaggi con espansione centrale simmetrica S asb ab che genera il linguaggio {a n b n n > 0}. Se si vuole generare il linguaggio: {a 2n bb c n n 0} la produzione può essere: S aasc bb 20/11/2006 UNICAM - p. 41/49

42 Ricorsione composta Si possono comporre i diversi tipi di ricorsione: centrale e destra per ottenere linguaggi "complessi". Ad esempio se si vuole il linguaggio: {a n c b m dd b n n, m 0} si può ottenere con: S B asb cb bb dd Se si vuole ottenere il linguaggio {a n c b m dd b n n, m > 0} si deve forzare la condizione terminale congruente ovvero: S B asb acbb bb bdd 20/11/2006 UNICAM - p. 42/49

43 Linguaggio complesso Definiamo la grammatica per il seguente linguaggio: L = {a n b c m d a m n 0, m > 0} {b k a 2n k, n 0} Caratteristiche salienti unione di due linguaggi, nel primo linguaggio si individua una ricorsione destra con suffisso (a n b) seguita da una ricorsione centrale (c m da m ) nel secondo linguaggio è la giustapposizione di due ricorsioni destre: S A BC A aa bcda D cda d B bb ǫ C aac ǫ 20/11/2006 UNICAM - p. 43/49

44 BNF BNF è l acronimo di " Backus Naur Form" dagli autori John Backus e Peter Naur che la indrodussero per la prima volta per descrivere la sintassi del linguaggio ALGOL 60 (nonno del Pascal). Il formalismo BNF è un meta-linguaggio per descrivere linguaggi. I Simboli del meta-linguaggio sono: ::= significa "è definito come" significa "o" < > indicano simboli non terminali Alcuni hanno esteso il linguaggio con: [ ] quello incluso tra parentesi è opzionale { } quello racchiuso tra parentesi è ripetuto 0 o più volte " " quello tra doppi apici è un simbolo terminale xxx i simboli terminali sono in grassetto 20/11/2006 UNICAM - p. 44/49

45 Esempio BNF Il formato BNF può essere applicato non solo alla specifica della sintassi di un linguaggio di programmazione ma anche a: <indirizzo postale> ::= <destinatario> <indirizzo> <località> <destinatario> ::= [<titolo>] [<nome> <iniziale>] <cognome> <a_capo> <indirizzo> ::= <via> <numero civico> <a_capo> <località> ::= [<CAP>] <comune> <provincia> <CAP> ::= <cifra><cifra><cifra><cifra><cifra> <cifra> ::= Produce cose del tipo: Dr Paolo Rossi via della Pace 32 Camerino MC 20/11/2006 UNICAM - p. 45/49

46 Grafo sintattico In BNF si ha: program ::= begin <statement> end statement ::= <statement> ";" <statement>... Una rappresentazione grafica quivalente è: program begin statement end ; 20/11/2006 UNICAM - p. 46/49

47 Espressioni regolari Sia Σ E = {,, (, )} e Σ è una qualsiasi insime finito di simboli. Se Σ s = Σ E Σ definire la grammatica libera che denotta le espressioni regolari su alfabeto Σ. E E * EE (E) E E T ǫ T s 1 s 2... s n s i Σ 20/11/2006 UNICAM - p. 47/49

48 Esercizio Si vuole realizzare un linguaggio che descriva un albero genealogico. Un albero genealogico mostra la gerachia degli antenati di una data persona. L albero genealogico può essere su linea paterna o materna se tiene conto solo del padre o solo della madre. Le informazioni per ogni nodo dell albero sono: Nome Cognome (nel caso della madre può essere diverso nella gerarchia) Eventuale e facoltativo cognome da sposata nel caso di madre Figli 20/11/2006 UNICAM - p. 48/49

49 Esercizio Il nodo generico elenca tra parentesi tonde le informazioni su elencate. Una tipica frase di questo linguaggio è la seguente: (Maria Rossi Bianchi (Francesco Bianchi)(Paola Bianchi (Alberto Gialli)(Stefania Gialli))) Ovvero Maria Rossi in Bianchi ha due figli: Francesco Bianchi e Paolo Bianchi. Paolo Bianchi ha due figli: Alberto Gialli e Stefania Gialli. Da notare che il cognome acquisito da Paolo Bianchi e Gialli poichè i figli hanno cognome Gialli anche se non specificato nella madre. L alfabeto del linguaggio è: Σ = {(, )} {InsiemeDeiNomi} {InsiemeDeiCognomi} Nel caso precedente si ha che: Σ = {(, )} {M aria, F rancesco, P aola, Alberto, Stef ania} {Rossi, Bianchi, Gialli} 20/11/2006 UNICAM - p. 49/49

Analisi Sintattica. Maria Rita Di Berardini. Universitá di Camerino Ruolo del parser

Analisi Sintattica. Maria Rita Di Berardini. Universitá di Camerino Ruolo del parser Ruolo del parser Analisi 1 1 Dipartimento di Matematica e Informatica Universitá di Camerino mariarita.diberardini@unicam.it Ruolo del parser Ruolo dell analisi sintattica Ruolo del parser Metodologie

Dettagli

Linguaggi e Traduttori: Analisi sintattica

Linguaggi e Traduttori: Analisi sintattica Linguaggi e Traduttori: Analisi sintattica Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di Genova

Dettagli

Grammatiche e Linguaggi Liberi da Contesto

Grammatiche e Linguaggi Liberi da Contesto Grammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi più grandi di linguaggi. I Linguaggi Liberi da Contesto (CFL) sono stati usati

Dettagli

Backus Naur Form. Paolo Bison. Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova. BNF, Paolo Bison, A.A ,

Backus Naur Form. Paolo Bison. Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova. BNF, Paolo Bison, A.A , p.1/19 Backus Naur Form Paolo Bison Fondamenti di Informatica 1 A.A. 2004/05 Università di Padova Linguaggio di programmazione p.2/19 strumento linguistico per scrivere una sequenza di istruzioni (programma)

Dettagli

Grammatiche libere da contesto. Grammatiche libere da contesto

Grammatiche libere da contesto. Grammatiche libere da contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi piu grandi di linguaggi. Linguaggi Liberi da Contesto (CFL) sono stati usati nello

Dettagli

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010.

Programmazione II. Lezione 3. Daniele Sgandurra 26/10/2010. Programmazione II Lezione 3 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 26/10/2010 1/35 Programmazione II Lezione 3 26/10/2010 Sommario 1 2 Semantica 2/35 Programmazione II Lezione 3 26/10/2010 Parte

Dettagli

Fondamenti d Informatica: Grammatiche. Barbara Re, Phd

Fondamenti d Informatica: Grammatiche. Barbara Re, Phd Fondamenti d Informatica: Grammatiche Barbara Re, Phd Grammatiche } Con il termine grammatica s intende } Un formalismo che permette di definire un insieme di stringhe mediante l imposizione di un particolare

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello AN - 1995 Linguaggi di alto livello AN - 1995 Evoluzione dei

Dettagli

Grammatiche libere da contesto. Grammatiche libere da contesto

Grammatiche libere da contesto. Grammatiche libere da contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi piu grandi di linguaggi Linguaggi Liberi da Contesto (CFL) sono stati usati nello

Dettagli

Linguaggi e Traduttori: Analisi sintattica

Linguaggi e Traduttori: Analisi sintattica Linguaggi e Traduttori: Analisi sintattica Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di Genova

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione quivalenza di grammatiche In Informatica (e non solo, naturalmente) esistono sempre molti

Dettagli

Supplemento alle dispense di Sintassi

Supplemento alle dispense di Sintassi Supplemento alle dispense di Sintassi Luca Tesei 20 ottobre 2002 1 Formalizzazione Lo scopo di questa sezione è quello di presentare in maniera formale e precisa le nozioni di Automa e di Grammatica Libera

Dettagli

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA

ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA ANALISI SINTATTICA LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA AUTOMI PUSHDOWN input u t w $ v x y z $ pila tabella controllo 2 ARGOMENTI Il compito dell'analisi sintattica Generazione automatica Trattamento

Dettagli

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Grammatiche. Stefano Ferrari

Fondamenti di Informatica. per la Sicurezza. a.a. 2003/04. Grammatiche. Stefano Ferrari Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Grammatiche Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università degli Studi

Dettagli

Grammatiche libere da contesto. Grammatiche libere da contesto

Grammatiche libere da contesto. Grammatiche libere da contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora classi piu grandi di linguaggi. Linguaggi Liberi da Contesto (CFL) sono stati usati nello

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Basic Pascal

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 11 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 06 Aprile 2009 Riassunto delle puntate

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2009 Riassunto delle puntate

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Grammatiche Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione Esempio dei numeri interi Si consideri il linguaggio

Dettagli

Linguaggi di Programmazione Corso C. Parte n.2 Introduzione ai Linguaggi Formali. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.2 Introduzione ai Linguaggi Formali. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.2 Introduzione ai Linguaggi Formali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Definizioni Preliminari Un

Dettagli

LINGUAGGI E TRADUTTORI - 20 giugno Prof. S. Crespi Reghizzi. Automi e espressioni regolari (40%)

LINGUAGGI E TRADUTTORI - 20 giugno Prof. S. Crespi Reghizzi. Automi e espressioni regolari (40%) LINGUAGGI E TRADUTTORI - 20 giugno 2001 - Prof. S. Crespi Reghizzi COGNOME e NOME... MATRICOLA... Tempo a disposizione: 90 minuti. Libri e appunti personali possono essere impiegati. Parte I Punti 30-esimi

Dettagli

Grammatiche context-free

Grammatiche context-free Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2013-2014 Linguaggi Formali e Compilatori Grammatiche context-free Giacomo PISCITELLI Politecnico di Bari G. Piscitelli pag. 1 di 28 Grammatiche

Dettagli

Grammatiche Parse trees Lezione del 17/10/2012

Grammatiche Parse trees Lezione del 17/10/2012 Fondamenti di Programmazione A.A. 2012-2013 Grammatiche Parse trees Lezione del 17/10/2012 AUTILI MARCO http://www.di.univaq.it/marco.autili/ Riassunto lezione precedente Sintassi vs Semantica Stringhe,

Dettagli

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto rammatiche e Linguaggi Liberi da Contesto Data una stringa w L(G), dove G e un CGF, possono esistere diverse derivazioni di w (che tipicamente differiscono per l ordine di applicazione delle produzioni)

Dettagli

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto rammatiche e Linguaggi Liberi da Contesto Abbiamo visto che molti linguaggi non sono regolari. Consideriamo allora una classe piu ampia di linguaggi, i Linguaggi Liberi da Contesto (CFL) i CFL sono stati

Dettagli

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI ESEMPIO

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI PROLOG E ANALISI SINTATTICA DEI LINGUAGGI ESEMPIO PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli

Dettagli

Barriera di astrazione. Barriera di astrazione. macchina virtuale. non sono quelle della macchina hardware. Algol. Ada. Lisp. Lisp.

Barriera di astrazione. Barriera di astrazione. macchina virtuale. non sono quelle della macchina hardware. Algol. Ada. Lisp. Lisp. LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Cobol Basic Pascal Python Modula-2

Dettagli

Quiz sui linguaggi CF

Quiz sui linguaggi CF Fondamenti dell Informatica 1 semestre Quiz sui linguaggi CF Prof. Giorgio Gambosi a.a. 2018-2019 Problema 1: Si consideri la seguente grammatica context free G, dove S, NP, V P, P P, A sono i simboli

Dettagli

Espressività e limitazioni delle grammatiche regolari

Espressività e limitazioni delle grammatiche regolari Espressività e limitazioni delle grammatiche regolari Vantaggi: Le grammatiche regolari consentono di esprimere una significativa classe di linguaggi: linguaggi con un numero di sequenze infinito grazie

Dettagli

Linguaggi. Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi:

Linguaggi. Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi: Linguaggi Che cos è un linguaggio di programmazione? Aspetti da studiare e comprendere per poter scrivere programmi: Sintassi: forma delle frasi, correttezza sintattica Semantica: significato delle frasi,

Dettagli

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t

PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica G=(V n,v t PROLOG E ANALISI SINTATTICA DEI LINGUAGGI Quando si vuole definire in modo preciso la sintassi di un linguaggio si ricorre a una grammatica Una grammatica permette di stabilire se una sequenza di simboli

Dettagli

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen

Sintassi. Linguaggi. 4: Sintassi. Claudio Sacerdoti Coen. Universitá di Bologna 24/02/2011. Claudio Sacerdoti Coen Linguaggi 4: Universitá di Bologna 24/02/2011 Outline 1 Wikipedia: La sintassi è la branca della linguistica che studia i diversi modi in cui le parole si uniscono tra loro per formare

Dettagli

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis

Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis Corso di Linguaggi di Programmazione + Laboratorio Docente: Marco de Gemmis Capitolo 2 Grammatiche e Linguaggi Si ringraziano il Prof. Giovanni Semeraro e il Dott. Pasquale Lops per la concessione del

Dettagli

Quiz sui linguaggi CF

Quiz sui linguaggi CF Fondamenti dell Informatica 1 semestre Quiz sui linguaggi CF Prof. Giorgio Gambosi a.a. 2014-2015 Problema 1: Si consideri la seguente grammatica context free G, dove S, NP, V P, P P, A sono i simboli

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero.

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero. ANALISI SINTATTICA Data un linguaggio scrivere una grammatica che lo generi ESERCIZIO 1 Definire una grammatica per il linguaggio L = {ww w appartiene a (a, b)*} ESERCIZIO 2 Dato l alfabeto T=[0,1,2,3,4,5,6,7,8,9,/}

Dettagli

Linguaggio Formale 2

Linguaggio Formale 2 Linguaggio Formale 2 Ex: Per generare il linguaggio L(G 1 ) = {a n b n c n } si può usare la grammatica G 1 = < {A,B,C}, {a,b,c}, P, A > Con regole di produzione P: 1. A abc 2. A abbc 3. Bb bb 4. Bc Cbcc

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 4 Chiara Braghin braghin@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 4 Marzo 2008 Derivazioni canoniche Una derivazione

Dettagli

Linguaggi di Programmazione dall assembler ai linguaggi di alto livello

Linguaggi di Programmazione dall assembler ai linguaggi di alto livello Linguaggi di Programmazione dall assembler ai linguaggi di alto livello LINGUAGGIO MACCHINA 0 READ 8 READ 9 LOADA 8 3 LOADB 9 4 MUL 5 STOREA 8 6 WRITE 8 7 HALT 8 DATO INTERO 9 DATO INTERO Rappresentazione

Dettagli

Automi e Linguaggi Formali

Automi e Linguaggi Formali Automi e Linguaggi Formali Analisi Sintattica A.A. 2014-2015 Alessandro Sperduti sperduti@math.unipd.it Ruolo dell analisi sintattica Un compilatore deve produrre codice oggetto e deve anche controllare

Dettagli

Espressioni Regolari

Espressioni Regolari Espressioni Regolari Le espressioni regolari sono costituite dalle stringhe sull alfabeto Σ = Σ {+,,*,(,),φ} ottenute secondo le seguenti regole: 1. φ e ciascun membro di Σ sono Epressioni Regolari 2.

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Potenza espressiva degli automi Potenza espressiva delle grammatiche 9/11/2004 Programmazione - Luca Tesei 1 Linguaggi Regolari Tutti i linguaggi che possono essere

Dettagli

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO ANALISI SINTATTICA TIPO 1: Data un linguaggio scrivere una grammatica che lo generi TIPO 2: Verificare se una grammatica non contestuale è ambigua TiPO 3: Verificare se una grammatica e LL(1) e costruirne

Dettagli

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C

Dettagli

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR:

Dispensa 2. Data una grammatica context free esistono tre metodi diversi per costruirne la parsing table per un parser LR: Dispensa 2 2.1 Costruzione Parsing Table LR: generalità Come tutti i parser tabellari predittivi, anche i parser LR possono essere applicati solo a parsing table senza conflitti (ossia entrate multiple)

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica

Programmazione. Marco Anisetti. Università degli Studi di Milano, Dipartimento di Informatica Programmazione Marco Anisetti Università degli Studi di Milano, Dipartimento di Informatica marco.anisetti@unimi.it http://homes.di.unimi.it/anisetti/ Marco Anisetti - 1 / 40 Riepilogo lezione 1 Ruolo

Dettagli

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica

Oggetti sintattici. Semantica operazionale dei linguaggi di Programmazione. Oggetti sintattici. Funzioni di valutazione semantica 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

Dettagli

Linguaggi e Traduttori: Analisi sintattica

Linguaggi e Traduttori: Analisi sintattica Linguaggi e Traduttori: Analisi sintattica Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di Genova

Dettagli

Descrizione dei Linguaggi di Programmazione

Descrizione dei Linguaggi di Programmazione Descrizione dei Linguaggi di Programmazione Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 4 mar, 2016 Sommario 1 Livelli di Descrizione

Dettagli

Le grammatiche formali

Le grammatiche formali Le grammatiche formali Il carattere generativo dei sistemi linguisticii i Consideriamo i la seguente frase: Un gatto rincorre il topo Non facciamo difficoltà a riconoscere che si tratta di una frase sintatticamente

Dettagli

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi Linguaggi Regolari e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle grammatiche 1

Dettagli

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo

Linguaggi Regolari e Linguaggi Liberi. Linguaggi Regolari. Determinismo vs Non determinismo. Potere espressivo e Linguaggi Liberi Linguaggi regolari Potere espressivo degli automi Costruzione di una grammatica equivalente a un automa Grammatiche regolari Potere espressivo delle Tutti i linguaggi che possono essere

Dettagli

Università degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java

Università degli studi Roma Tre. linguaggio Java. A cura di A. Orlandini. Linguaggi: Sintassi e Semantica - Il. Il linguaggio Java Università degli studi Roma Tre Linguaggi: Sintassi e Semantica Il A cura di A. Orlandini 1 Obiettivi Distinguere la sintassi dalla semantica di un linguaggio Conoscere le convenzioni del meta-linguaggio

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Stato Rosario Culmone, Luca Tesei 19/12/2007 UNICAM - p. 1/?? Espressioni con variabili Espandiamo il sistema exp in modo da trattare il nuovo caso

Dettagli

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione Dall algoritmo al calcolatore: concetti introduttivi Fondamenti di Programmazione Algoritmo Problema o compito Preparazione di una torta Programmazione del VCR MCD tra due numeri Algoritmo sequenza precisa

Dettagli

LA SINTASSI DEI LINGUAGGI DI PROGRAMMAZIONE. Ivan Lanese

LA SINTASSI DEI LINGUAGGI DI PROGRAMMAZIONE. Ivan Lanese LA SINTASSI DEI LINGUAGGI DI PROGRAMMAZIONE Ivan Lanese argomenti Grammatiche BNF Varianti: BNF + ε EBNF Remind: cos è una grammatica Una grammatica è uno strumento linguistico per definire insiemi di

Dettagli

Fondamenti teorici e programmazione

Fondamenti teorici e programmazione Fondamenti teorici e programmazione FTP(A) - modb Lezione 16 Grammatiche Libere da Contesto Alberi di derivazione sintattica Linguaggio generato F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione

Dettagli

Interpreti, compilatori e semantica operazionale

Interpreti, compilatori e semantica operazionale Interpreti, compilatori e semantica operazionale 1 Linguaggi di programmazione Come si comprendono le caratteristiche di un linguaggio di programmazione? Molte risposte diverse manuali, documentazione

Dettagli

Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici

Yet Another Compiler-Compiler. Generazione automatica di analizzatori sintattici Yet Another Compiler-Compiler Generazione automatica di analizzatori sintattici 2 YACC Yet Another Compiler-Compiler YACC (Bison) è un generatore di analizzatori sintattici a partire dalla descrizione

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Sistemi di transizioni (2) Rosario Culmone, Luca Tesei Lucidi tratti dalla dispensa Elementi di Semantica Operazionale R. Barbuti, P. Mancarella e

Dettagli

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE Cosimo Laneve 1 argomenti 1. linguaggi di programmazione 2. definizione formale di insiemi infiniti 3. la grammatica e la notazione BNF 4. notazioni alternative

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 09 Linguaggi Sintassi e Semantica Alfonso Miola Ottobre 2009 http://www.dia.uniroma3.it/~java/fondinf/ Linguaggi - Sintassi e Semantica

Dettagli

GRAMMATICA FORMALE. Albero sintattico

GRAMMATICA FORMALE. Albero sintattico GRAMMATICA FORMALE Una quadrupla VT,VN,P,S dove: VT è un insieme finito di simboli terminali VN è un insieme finito di simboli non terminali Pè uninsieme finito di produzioni, ossiadi regole di riscrittura

Dettagli

Costruzione dell insieme dei Follow

Costruzione dell insieme dei Follow Costruzione dell insieme dei Follow E! T E - T E E! + T E - T E " T! F T T! *F T " F! (E) i Per evitare che alcuni insiemi siano vuoti si aggiunge per default il simbolo speciale $ che demarca la fine

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Linguaggi e grammatiche

Linguaggi e grammatiche Linguaggi e grammatiche Corso di Fondamenti di Informatica - 1 modulo Corso di Laurea in Informatica Università di Roma Tor Vergata a.a. 2017-2018 Prof. Giorgio Gambosi Alfabeti e linguaggi Alfabeto Un

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Modelli per i linguaggi

Modelli per i linguaggi Grammatiche 1 Modelli per i linguaggi Modelli adeguati per riconoscere/accettare, tradurre, calcolare linguaggi Ricevono una stringa di ingresso e la elaborano Modelli operazionali (Automi) Modelli adeguati

Dettagli

Concetti di base sugli automi e sui linguaggi formali

Concetti di base sugli automi e sui linguaggi formali Concetti di base sugli automi e sui linguaggi formali Andrea Burattin 18 marzo 2005 Sommario Piccolo insieme di concetti sul funzionamento degli automi (a stati finiti, a pila,...), delle grammatiche libere

Dettagli

Analisi sintattica. Analisi sintattica

Analisi sintattica. Analisi sintattica uolo dell analisi sintattica Un compilatore deve produrre codice oggetto e deve anche controllare che il programma in input sia scritto secondo le regole della sua sintassi L analisi lessicale controlla

Dettagli

Pumping lemma per i linguaggi Context-free

Pumping lemma per i linguaggi Context-free Pumping lemma per i linguaggi Context-free Sia L un linguaggio context-free. E possibile determinare una costante k, dipendente da L, tale che qualunque stringa z! L con z > k si può esprimere come z=

Dettagli

9 Calcolo dei sequenti LC p

9 Calcolo dei sequenti LC p 9 Calcolo dei sequenti LC p In questa sezione mostriamo un metodo più elegante, semplice e soprattutto AUTOMATICO per mostrare se una proposizione è valida o meno e soddisfacibile o meno. Tale metodo è

Dettagli

Corso di Programmazione Linguaggi di Programmazione

Corso di Programmazione Linguaggi di Programmazione Corso di Programmazione Linguaggi di Programmazione Dott. Stefano Ferilli ferilli@di.uniba.it Università degli Studi di Bari Dipartimento di Informatica Linguaggio Insieme di sequenze di simboli appartenenti

Dettagli

Automa deterministico con prospezione 1. < {q}, Σ, Σ V, δ, q, S, Φ > δ(a, X) = α R. se a Gui(X α) senza spostamento della testina.

Automa deterministico con prospezione 1. < {q}, Σ, Σ V, δ, q, S, Φ > δ(a, X) = α R. se a Gui(X α) senza spostamento della testina. Automa deterministico con prospezione 1 < {q}, Σ, Σ V, δ, q, S, Φ > δ(a, X) = α R δ(a, a) = ε se a Gui(X α) senza spostamento della testina con spostamento della testina Grammatica 1S ( S ) 2S [ S ] 3S

Dettagli

Fondamenti di Informatica per la Sicurezza a.a. 2008/09. Grammatiche. Stefano Ferrari. Unalfabetoèuninsiemefinitoenonvuotodisimboli.

Fondamenti di Informatica per la Sicurezza a.a. 2008/09. Grammatiche. Stefano Ferrari. Unalfabetoèuninsiemefinitoenonvuotodisimboli. Fondamenti di Informatica per la icurezza a.a. 2008/09 tefano Ferrari UNIVERITÀ DEGLI TUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE tefano Ferrari Università degli tudi di Milano Fondamenti

Dettagli

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.3 Linguaggi Liberi da Contesto e Linguaggi Contestuali Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Grammatiche

Dettagli

Fondamenti d Informatica: lavoriamo con le grammatiche. Barbara Re, Phd

Fondamenti d Informatica: lavoriamo con le grammatiche. Barbara Re, Phd Fondamenti d Informatica: lavoriamo con le grammatiche Barbara Re, Phd Esercizio Grammatica e generazione stringhe Data una Grammatica ed una Stringa, verificare che la Stringa sia generata dalla Grammatica:

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2014-2015 / Ricevimento:

Dettagli

Traduzione guidata dalla sintassi. Attributi e Definizioni guidate dalla sintassi

Traduzione guidata dalla sintassi. Attributi e Definizioni guidate dalla sintassi Traduzione guidata dalla sintassi Attributi e Definizioni guidate dalla sintassi Intro In questa ultima parte del corso vediamo, in breve, una tecnica che permette di effettuare analisi semantiche e traduzione

Dettagli

Intro. Traduzione guidata dalla sintassi. Attributi. Due notazioni a diversi livelli. Due notazioni a diversi livelli. Il flusso concettuale

Intro. Traduzione guidata dalla sintassi. Attributi. Due notazioni a diversi livelli. Due notazioni a diversi livelli. Il flusso concettuale Intro Traduzione guidata dalla sintassi Attributi e Definizioni guidate dalla sintassi In questa ultima parte del corso vediamo, in breve, una tecnica che permette di effettuare analisi semantiche e traduzione

Dettagli

Non determinismo e grammatiche. Achille Frigeri Dipartimento di Matematica Francesco Brioschi Politecnico di Milano

Non determinismo e grammatiche. Achille Frigeri Dipartimento di Matematica Francesco Brioschi Politecnico di Milano Non determinismo e grammatiche Achille Frigeri Dipartimento di Matematica Francesco Brioschi Politecnico di Milano Modelli non deterministici - Macchine Automa a stati niti non deterministico (AFN) A =

Dettagli

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 Un po di storia sui linguaggi 1957 John Backus e colleghi della IBM rilasciano la prima

Dettagli

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi

Nozioni Preliminari e Terminologia. Alfabeti Stringhe Linguaggi Nozioni Preliminari e Terminologia Alfabeti Stringhe Linguaggi Insiemi Def. Un insieme è una collezione non ordinata di oggetti o elementi Gli insiemi sono scritti tra { } Gli elementi sono inseriti tra

Dettagli

Automi deterministici e non

Automi deterministici e non Automi deterministici e non Negli esempi visti fin ora gli automi avevano sempre relazioni di transizione per cui per un dato elemento del dominio coppia (s, v), dove s è uno stato (sorgente) e v un simbolo,

Dettagli

Fasi di un Compilatore

Fasi di un Compilatore Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione sul corso Sito web: http://algogroup.unimore.it/people/mauro/dida/2015-2016 / Ricevimento:

Dettagli

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di

Dettagli

Definizione di Grammatica

Definizione di Grammatica Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla ( VN, VT, P, S ) dove: V N e l insieme dei simboli non

Dettagli

Un messaggio di posta elettronica è costituito da una testata e da un corpo La testata contiene indirizzo,.

Un messaggio di posta elettronica è costituito da una testata e da un corpo La testata contiene indirizzo,. 1 Grammatiche Gli automi sono un modello riconoscitivo/traduttivo/elaborativo (di linguaggi): essi ricevono una stringa nel loro ingresso e la elaborano in vari modi Passiamo ora ad esaminare un modello

Dettagli

Foglio Elettronico Lezione 1

Foglio Elettronico Lezione 1 - Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in

Dettagli

Bottom-up Parsing. Viable Prefixes, conflitti e formato delle tabelle per il parsing LR

Bottom-up Parsing. Viable Prefixes, conflitti e formato delle tabelle per il parsing LR Bottom-up Parsing Viable Prefixes, conflitti e formato delle tabelle per il parsing LR Viable Prefixes Prima di continuare finiamo il discorso sul parsing shift-reduce in generale C è una ragione importante

Dettagli

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE

Corso di Linguaggi e Traduttori 1 AA GRAMMATICHE Corso di Linguaggi e Traduttori 1 AA 2004-05 GRAMMATICHE 1 Definizione di Grammatica Formalmente definiamo un grammatica G mediante una quadrupla V, V, P S ( ) N T, dove: V N e l insieme dei simboli non

Dettagli