Automi e Linguaggi Formali

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Automi e Linguaggi Formali"

Transcript

1 Automi e Linguaggi Formali Analisi Sintattica A.A Alessandro Sperduti sperduti@math.unipd.it

2 Ruolo 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 che i token siano scritti bene, e genera una sequenza di token L analisi sintattica prende in input la sequenza di token Non tutte le sequenze di token rappresentano programmi validi Bisogna riconoscere sequenze di token valide, cioè ottenibili tramite la grammatica che descrive le regole della sintassi del linguaggio Se la sequenza di token è valida, deve essere creato un albero di parsing Docente: Enrico Mezzetti 2 of 24

3 Eliminare l ambiguità Un analizzatore sintattico deve trasformare la sequenza di token in un albero sintattico Se la grammatica è ambigua, esistono più alberi di parsing possibili Pertanto è necessario eliminare l ambiguità Esempio: C if E then C C if E then C else C Questa grammatica è ambigua Il comando if E 1 then if E 2 then S 1 else S 2 ha due alberi sintattici Di solito: ogni else va accoppiato con il then più vicino Grammatica non ambigua: C C1 C2 C1 if E then C1 else C1 C2 if E then C if E then C1 else C2 Docente: Enrico Mezzetti 3 of 24

4 Parsing top-down Costruisce un albero di parsing per una stringa, iniziando dalla radice e creando i nodi in ordine depth-first (dato un nodo, prima lui e poi i figli da sinistra a destra, ricorsivamente) Trova la derivazione da più a sinistra per una stringa Ad ogni passo, una produzione viene usata per trasformare un non-terminale Una volta scelta la produzione, bisogna individuare i simboli terminali della parte destra della produzione nella stringa in input Docente: Enrico Mezzetti 4 of 24

5 Esempio Grammatica E TE E +TE ɛ T FT T FT ɛ F (E) id con stringa id + id id. Docente: Enrico Mezzetti 5 of 24

6 Esempio Docente: Enrico Mezzetti 6 of 24

7 Parsing ricorsivo-discendente Una procedura per ogni non-terminale Si inizia con la procedura per il simbolo iniziale Terminazione con successo se si scorre tutta la stringa in input Pseudocodice non-deterministico per un non-terminale A: 1 scegli una produzione per A: A X 1 X 2... X k 2 for (i = 1 to k) 3 se X i è un non-terminale chiama la procedura per X i 4 altrimenti, se X i = simbolo corrente, passa al prossimo simbolo della stringa 5 altrimenti, errore La produzione scelta potrebbe non essere quella giusta bisogna permettere il backtracking Errore vuol solo dire che bisogna tornare al passo 1 per scegliere un altra produzione per A, a meno che non ce ne siano più Il puntatore al simbolo corrente deve tornare indietro Docente: Enrico Mezzetti 7 of 24

8 Esempio Grammatica: S c A d A a b a con stringa cad. All inizio, albero con la sola radice S e puntatore all inizio della stringa (c) S ha solo una produzione, quindi usiamo quella Puntatore scorre anche c Usiamo la prima produzione per A e aggiungiamo i figli a e b Puntatore scorre anche a, ma b è diverso dal prossimo simbolo della stringa (d) Torniamo indietro e proviamo la seconda produzione per A (puntatore torna indietro alla c e poi scorre a) Puntatore legge d che è uguale al possimo simbolo nella stringa La stringa è finita, Automi quindi e Linguaggi abbiamo Formali A.Acreato un albero di parsing Docente: Enrico Mezzetti 8 of 24

9 Esempio Docente: Enrico Mezzetti 9 of 24

10 Ricorsione a sinistra Una grammatica è ricorsiva a sinistra se esiste un non-terminale A tale che A Aα per qualche stringa α I metodi di parsing top-down non possono gestire grammatiche ricorsive a sinistra: vanno in loop perché riscrivono sempre a sinistra Ricorsività sinistra diretta: produzione A Aα β Nuove produzioni: A βa e A αa ɛ Si può eliminare anche la ricorsività sinistra non diretta Esempio: S Aα γ A Sβ è ricorsiva a sinistra perché S + Sβα Docente: Enrico Mezzetti 10 of 24

11 Parser predittivi Come i parser discendenti ricorsivi ma possono predire quale produzione usare guardando ad alcuni prossimi token non c è mai bisogno di tornare indietro (backtracking) Funzionano con grammatiche LL(k) La prima L significa che l input viene letto da sinistra a destra La seconda L significa che seguono derivazioni da sinistra Il k significa che la predizione è basata sulla lettura anticipata di k token In pratica, si usano grammatiche LL(1) Docente: Enrico Mezzetti 11 of 24

12 LL(1) vs. Parser discendenti ricorsivi Nei parser discendenti ricorsivi Ad ogni passo, molte produzioni tra cui scegliere Backtracking per ritrattare le scelte sbagliate In LL(1) Ad ogni passo, una sola produzione (o nessuna, che vuol dire errore) Variante di parser ricorsivi discendenti senza backtracking Docente: Enrico Mezzetti 12 of 24

13 Come predire quale produzione usare? Consideriamo la grammatica E T + E T T a a T (E) Difficile predire perché Per T: due produzioni iniziano con a Per E: non chiaro quale usare Dobbiamo mettere insieme i prefissi comuni delle produzioni Docente: Enrico Mezzetti 13 of 24

14 Esempio La grammatica E T + E T T a a T (E) può essere trasformata in E TX X +E ɛ T ay (E) Y T ɛ Docente: Enrico Mezzetti 14 of 24

15 FIRST and FOLLOW Due funzioni che ci permettono di capire quale produzione scegliere, leggendo il prossimo simbolo in input FIRST(α) = insieme di terminali che iniziano stringhe derivabili da α, dove α è una qualunque stringa di simboli terminali o non Se α ɛ, allora ɛ FIRST (α) Esempio di uso: se abbiamo le produzioni A α β, e FIRST(α) è disgiunto da FIRST(β), allora basta guardare il prossimo simbolo in input. Se è in FIRST(α), va scelta la produzione A α. FOLLOW(A), per un non-terminale A, è l insieme del terminali a che possono apparire alla destra di A in una forma sentenziale Esiste una derivazione S αaaβ Se A è il simbolo più a destra in qualche forma sentenziale, allora $ è in FOLLOW(A) Docente: Enrico Mezzetti 15 of 24

16 Come calcolare FIRST di un simbolo Calcoliamo FIRST(X) per ogni simbolo X, terminale o no Se X è terminale, FIRST(X) = {X} Se X è non terminale e X Y 1 Y 2... Y k, Se esiste i tale che a FIRST (Y i ) e ɛ FIRST (Y 1 )... FIRST (Y i 1 ), allora a FIRST (X ). Se ɛ FIRST (Y j ) per tutti i j = 1,..., k, allora ɛ FIRST (X ) Nota: tutto quello che è in FIRST(Y 1 ) è anche in FIRST(X). Se Y 1 non deriva ɛ, allora FIRST(X) = FIRST(Y 1 ), altrimenti aggiungiamo FIRST(Y 2 ), e così via. Se X ɛ, allora ɛ FIRST (X ) Docente: Enrico Mezzetti 16 of 24

17 Come calcolare FIRST di una stringa Per calcolare FIRST(X 1... X n ): Mettiamo in FIRST(X 1,..., X n ) tutti i simboli di FIRST(X 1 ) tranne ɛ Se ɛ FIRST (X 1 ), mettiamo anche i simboli di FIRST(X 2 ) tranne ɛ Se ɛ FIRST (X 1 ) FIRST (X 2 ), mettiamo anche i simboli di FIRST(X 3 ) tranne ɛ E così via Se ɛ in tutti i FIRST(X i ) per tutti gli i, mettiamo ɛ in FIRST(X 1... X n ) Docente: Enrico Mezzetti 17 of 24

18 Come calcolare FOLLOW Mettiamo $ in FOLLOW(S), dove S è il simbolo iniziale Se produzione A αbβ, mettiamo in FOLLOW(B) tutto FIRST(β) meno ɛ Se produzione A αb, o produzione A αbβ, dove ɛ FIRST (β), mettiamo in FOLLOW(B) tutto FOLLOW(A) Docente: Enrico Mezzetti 18 of 24

19 Esempio Grammatica: E TE E +TE ɛ T FT T FT ɛ F (E) id FIRST(F) = FIRST(T) = FIRST(E) = {(, id} FIRST(E ) = {+, ɛ} FIRST(T ) = {, ɛ} FOLLOW(E) = FOLLOW(E ) = { ), $} FOLLOW(T) = FOLLOW(T ) = {+, ), $} FOLLOW(F) = {+,, ), $} Docente: Enrico Mezzetti 19 of 24

20 Grammatiche LL(1) Se G ha le due produzioni A α e A β: FIRST(α) e FIRST(β) sono due insiemi disgiunti Da α e β non si possono derivare stringhe che iniziano con lo stesso terminale Al più uno tra α e β può derivare la stringa vuota Se ɛ in FIRST(β), allora FIRST(α) e FOLLOW(A) sono disgiunti, e simile se ɛ in FIRST(α). Se β ɛ, α non deriva nessuna stringa che inizia con un terminale in FOLLOW(A) Se α ɛ, β non deriva nessuna stringa che inizia con un terminale in FOLLOW(A) Docente: Enrico Mezzetti 20 of 24

21 Tavola per il parser predittivo Matrice bidimensionale M[A,a], dove A è un non-terminale, e a è un terminale o $ Idea: la produzione A α è scelta se il prossimo simbolo di input a è in FIRST(α). Se α ɛ, allora va scelta se a è in FOLLOW(A). Per ogni produzione A α: Per ogni terminale a in FIRST(α), mettiamo A α in M[A,a] Se ɛ FIRST (α), mettiamo A α in M[A,b] per ogni b FOLLOW(A) Se ɛ FIRST (α) e $ FOLLOW(A), mettiamo A α anche in M[A,$] Docente: Enrico Mezzetti 21 of 24

22 Esempio non simbolo d ingresso terminale id + * ( ) $ E E TE E TE E E +TE E ɛ E ɛ T T FT T FT T T ɛ T *FT T ɛ T ɛ F F id F (E) Docente: Enrico Mezzetti 22 of 24

23 Funziona solo per grammatiche LL(1) Ad esempio, se la grammatica è ricorsiva a sinistra o ambigua, la tavola avrà una o più celle con più produzioni Esempio: S ietss a S es ɛ E b Questa grammatica è ambigua Docente: Enrico Mezzetti 23 of 24

24 Esempio S ietss a S es ɛ E b non simbolo d ingresso terminale a b e i t $ S S a S ietss S S ɛ, S es S ɛ E E b Docente: Enrico Mezzetti 24 of 24

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

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2014/2015 L input per il parser Nel contesto della compilazione l input per il parser è costituito da una stringa di token (che indicheremo

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

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

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

Esempio. Grammatica E! T E!! T! *F T " F! (E) i. procedure E. ! if cc in FIRST (TE )! then T; E!!! else ERRORE (1); E! T E

Esempio. Grammatica E! T E!! T! *F T  F! (E) i. procedure E. ! if cc in FIRST (TE )! then T; E!!! else ERRORE (1); E! T E Esempio Grammatica E! T E!! E! + T E " T! F T T! *F T " F! (E) i E! T E T! F T E! + T E "!! tabella codici di errore # 1. omissione di operando 2. omissione di operatore 3. simbolo inatteso 4. carattere

Dettagli

Applicazioni alla traduzione e compilazione

Applicazioni alla traduzione e compilazione Applicazioni alla traduzione e compilazione. Corso di Fondamenti di Informatica - 1 modulo Corso di Laurea in Informatica Università di Roma ``Tor Vergata'' Giorgio Gambosi a.a. 2018-2019 1 Fasi del processo

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

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 context free. Analizzatori sintattici e alberi di analisi

Linguaggi context free. Analizzatori sintattici e alberi di analisi Linguaggi context free Analizzatori sintattici e alberi di analisi ( ) * id + id id 2 Grammatiche Context Free Una grammatica CF ha produzioni del tipo X α con X N e α (T N)* sono libere dal contesto perché

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

Parser top-down. Top-Down Parsing

Parser top-down. Top-Down Parsing Parser top-down Top-Down Parsing Il parse tree è creato dalla radice alle foglie. Il parser puo essere realizzato Recursive-Descent Parsing Il Backtracking è necessario (se una scelta di una regola non

Dettagli

Analizzatori sintattici a discesa ricorsiva

Analizzatori sintattici a discesa ricorsiva Analizzatori sintattici a discesa ricorsiva E uno schema di analizzatore che sfrutta la descrizione grammaticale in EBNF adatto a grammatiche LL(1). Si basa sulla scrittura di procedure ricorsive ricavate

Dettagli

Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli

Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli Traduzione di linguaggi guidata da Grammatiche Context Free La traduzione diretta della sintassi avviene associando regole e/o frammenti

Dettagli

Dispensa 1. Da un punto di vista logico l architettura di un compilatore si può suddividere in due parti: Analisi e Sintesi.

Dispensa 1. Da un punto di vista logico l architettura di un compilatore si può suddividere in due parti: Analisi e Sintesi. Dispensa 1 1. Introduzione ai compilatori Compilatore Un compilatore è un programma che legge un programma scritto in un linguaggio (sorgente) e lo traduce in un programma equivalente in un altro linguaggio

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

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

Schema generale parser LR

Schema generale parser LR Schema generale parser LR Input' a 1' 8'8'8' a i' 8'8'8' a n' $' ' Pila' s m' s m81' 8'8'8 ' Programma' di'parsing' LR' ' ACTION' ' ' GOTO' ' Output' Parser diversi di eriscono per la definizione delle

Dettagli

ANALISI SINTATTICA AUTOMI PUSHDOWN. v x y. input u t w. tabella controllo. pila LUCIDI DI F. D'AMORE E A. MARCHETTI SPACCAMELA.

ANALISI SINTATTICA AUTOMI PUSHDOWN. v x y. input u t w. tabella controllo. pila 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 $ pila v x y z $ tabella controllo 2 ARGOMENTI Il compito dell'analisi sintattica Generazione automatica Trattamento

Dettagli

Linguaggi di Programmazione Corso C. Parte n.9 Analisi Sintattica. Nicola Fanizzi

Linguaggi di Programmazione Corso C. Parte n.9 Analisi Sintattica. Nicola Fanizzi Linguaggi di Programmazione Corso C Parte n.9 Analisi Sintattica Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Analizzatore Sintattico L analisi sintattica

Dettagli

Analisi sintattica. Syntax Analysis. albero. sintattico. parser. scanner. Errori sintattici

Analisi sintattica. Syntax Analysis. albero. sintattico. parser. scanner. Errori sintattici Analisi sintattica Syntax Analysis albero programma scanner tokens parser sintattico rrori sintattici Un parser deve riconoscere la struttura di una stringa di ingresso, la cui struttura è fornita in termini

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

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

Analisi sintattica. Analisi sintattica. albero. sintattico. parser. scanner. Errori sintattici

Analisi sintattica. Analisi sintattica. albero. sintattico. parser. scanner. Errori sintattici Analisi sintattica Analisi sintattica albero programma scanner tokens parser sintattico rrori sintattici Un parser deve riconoscere la struttura di una stringa di ingresso, la cui struttura è fornita in

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

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

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

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

Gestione degli errori

Gestione degli errori Gestione degli errori Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 La maggior parte dei compilatori dedica gran parte di tempo e spazio alla gestione degli errori. - Generazione dell'errore;

Dettagli

Parsing. Parsing: example. Parsing. What we add in these lectures. From a grammar: E T T + E

Parsing. Parsing: example. Parsing. What we add in these lectures. From a grammar: E T T + E This part of the course is dedicated to the parsing problem. Parsing All the material presented can also be found 4th chapter of the textbook: Compilers: Principles, Techniques, and Tools (2nd Edition)

Dettagli

Precisiamo il problema di SLR. Tabelle LR. Soluzione. Esempio. Item LR(1) Item LR(1) validi. Costruzione delle tabelle di parsing LR canoniche

Precisiamo il problema di SLR. Tabelle LR. Soluzione. Esempio. Item LR(1) Item LR(1) validi. Costruzione delle tabelle di parsing LR canoniche Precisiamo il problema di SLR Tabelle LR Costruzione delle tabelle di parsing LR canoniche In uno stato i la tabella indica una riduzione con una produzione A αse l insieme di item Ii contiene l item A

Dettagli

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E Continuazione del corso di linguaggi. Nuovi paradigmi di computazione logico: Prolog logic - funzionale: Curry Teoria base dei compilatori parsing grammatiche ad attributi type checking generazione codice

Dettagli

albero sintattico parser scanner Errori sintattici

albero sintattico parser scanner Errori sintattici albero programma scanner tokens parser sintattico rrori sintattici Un parser deve riconoscere la struttura di una stringa di ingresso, la cui struttura è fornita in termini di regole di produzione di una

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

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 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

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

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

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

Automi e Linguaggi Formali Automi a stack (Pushdown automata)

Automi e Linguaggi Formali Automi a stack (Pushdown automata) Automi e Linguaggi Formali Automi a stack (Pushdown automata) A.A. 2014-2015 Enrico Mezzetti emezzett@math.unipd.it Automi a stack Un Pushdown Automata (PDA) o Automa a stack Essenzialmente un ɛ-nfa con

Dettagli

1. Calcolare FIRST e FOLLOW dei simboli non terminali della seguente grammatica:

1. Calcolare FIRST e FOLLOW dei simboli non terminali della seguente grammatica: Esercitazione V I I GRAMMATICHE LL(1) 1. Calcolare FIRST e FOLLOW dei simboli non terminali della seguente grammatica: P begin L end L ST T ST ε S id := E; read ( id ) ; write ( E ) ; E FG G + FG ε F (E)

Dettagli

Tabelle LALR. Costruzione delle tabelle di parsing LALR. Maria Rita Di Berardini

Tabelle LALR. Costruzione delle tabelle di parsing LALR. Maria Rita Di Berardini Costruzione delle tabelle di parsing LALR Dipartimento di Matematica e Informatica Università di Camerino mariarita.diberardini@unicam.it Metodo LALR Introduciamo l ultimo metodo di costruzione di tabelle

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 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

Linguaggi di Programmazione e Compilatori

Linguaggi di Programmazione e Compilatori Maria Rita Di Berardini Linguaggi di Programmazione e Compilatori Raccolta Esercizi 10 giugno 2009 Università di Camerino Dipartimenento di Matematica e Informatica Indice 1 Analisi Lessicale...........................................

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

Analisi sintattica. Scopi Tecniche Strumenti ANTLR-Yacc. L3 - Introduzione ai compilatori - UNINA

Analisi sintattica. Scopi Tecniche Strumenti ANTLR-Yacc. L3 - Introduzione ai compilatori - UNINA Analisi sintattica Scopi Tecniche Strumenti ANTLR-Yacc 1 L analizzatore sintattico (parser) nel compilatore Linguaggio sorgente Analizzatore lessicale token Next token Analizzatore sintattico Parse tree

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

Automi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto

Automi a Pila e Grammatiche Libere dal Contesto. Automi a Pila e Grammatiche Libere dal Contesto utomi a Pila Un automa a pila (PDA) e una estensione degli automi a stati finiti, che ha una memoria (una pila) Vedremo due modi equivalenti per definire il linguaggio accettato da un PDA Vedremo che la

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 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

Analisi sintattica (parser)

Analisi sintattica (parser) Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2013-2014 Linguaggi Formali e Compilatori Analisi sintattica (parser) Giacomo PISCITELLI Analisi sintattica: il parser Problema di base dell analisi

Dettagli

Lezioni del corso di Progetto di Linguaggi e Traduttori

Lezioni del corso di Progetto di Linguaggi e Traduttori Università di Roma La Sapienza corso di laurea in Ingegneria Informatica Lezioni del corso di Progetto di Linguaggi e Traduttori a.a. 2006/2007 Riccardo Rosati Dipartimento di Informatica e Sistemistica

Dettagli

Proprietà dei linguaggi non contestuali

Proprietà dei linguaggi non contestuali Proprietà dei linguaggi non contestuali Argomenti della lezione Pumping lemma per i linguaggi non contestuali Proprietà di chiusura Argomenti della lezione Grammatiche non contestuali in forma ridotta

Dettagli

Automi e Linguaggi Formali

Automi e Linguaggi Formali Linguaggi di programmazione Automi e Linguaggi Formali A.A. 2014-2015 Enrico Mezzetti emezzett@math.unipd.it Struttura di un compilatore e fasi principali 01 Ottobre 2014 Linguaggio di programmazione e

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

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

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

Linguaggi per il Web

Linguaggi per il Web Sapienza Università di Roma Corso di Laurea in Ingegneria Informatica e Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici Linguaggi per il Web a.a. 2014/2015 Riccardo Rosati Dipartimento

Dettagli

Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018

Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018 Fondamenti dell Informatica a.a. 2017/18 Prova scritta 11 gennaio 2018 Esercizio 1 (Automi a stati finiti) {a, b}. Si considerino i seguenti automi a stati finiti sull alfabeto Per ognuno degli automi,

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

Equivalenza di PDA e CFG. Equivalenza di PDA e CFG

Equivalenza di PDA e CFG. Equivalenza di PDA e CFG quivalenza di PDA e CFG Un linguaggio e generato da una CFG se e solo se e accettato da un PDA per pila vuota se e solo se e accettato da un PDA per stato finale Grammar PDA by empty stack PDA by final

Dettagli

Definizioni syntax-directed

Definizioni syntax-directed Definizioni syntax-directed Esempio: Notazione infissa Notazione postfissa Produzioni E E 1 + T E E 1 T E T T 0 T 1 T 2... T 9 Regole semantiche E.t := E 1.t _T.t _ + E.t := E 1.t _T.t _ - E.t := T.t T.t

Dettagli

LINGUAGGI CONTEXT FREE. Lezione Lezione

LINGUAGGI CONTEXT FREE. Lezione Lezione LINGUAGGI CONTEXT FREE Lezione 25-11-2010 Lezione 30-11-2010 2 INTRODUZIONE GERARCHIA DI CHOMSKY 3 4 DEFINIZIONE DEI LINGUAGGI CONTEXT FREE LINGUAGGI CF I linguaggi di tipo 2 sono detti context free (CF)

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

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 e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

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

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1

acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 acuradi Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 richiami teorici sulle grammatiche di Chomsky esercizivari esercizi su grammatiche ed espressioni regolari

Dettagli

Linguaggi e Grammatiche Liberi da Contesto

Linguaggi e Grammatiche Liberi da Contesto N.Fanizzi-V.Carofiglio Dipartimento di Informatica Università degli Studi di Bari 22 aprile 2016 1 Linguaggi Liberi da Contesto 2 Grammatiche e Linguaggi Liberi da Contesto G = (X, V, S, P) è una grammatica

Dettagli

Parser bottom-up. Esempio. V = {S, A, B, C} T = {a, b, d, e} P = { S aa R1 A BaA R2 A e R3 B ac R4 B AdC R5

Parser bottom-up. Esempio. V = {S, A, B, C} T = {a, b, d, e} P = { S aa R1 A BaA R2 A e R3 B ac R4 B AdC R5 Parser bottom-up Esempio V = {S, A, B, C} T = {a, b, d, e} P = { S aa R1 A BaA R2 A e R3 B ac R4 B AdC R5 C b R6 Come costruire l albero sintattico di aedbae in modo bottom-up? 1 Esempio aedbae aedbaa

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

Tabelle SLR. Costruzione di tabelle di Parsing SLR

Tabelle SLR. Costruzione di tabelle di Parsing SLR Tabelle SLR Costruzione di tabelle di Parsing SLR Metodo simple LR Metodo di costruzione di una tabella di parsing LR Abbreviazione: SLR Parser SLR: parser LR che usa una tabella di parsing SLR Grammatica

Dettagli

Tabelle SLR. Metodo simple LR. Potenza del metodo. Item LR(0) Idea Centrale del metodo SLR. Item LR(0) Costruzione di tabelle di Parsing SLR

Tabelle SLR. Metodo simple LR. Potenza del metodo. Item LR(0) Idea Centrale del metodo SLR. Item LR(0) Costruzione di tabelle di Parsing SLR Tabelle SLR Costruzione di tabelle di Parsing SLR Metodo simple LR Metodo di costruzione di una tabella di parsing LR Abbreviazione: SLR Parser SLR: parser LR che usa una tabella di parsing SLR Grammatica

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

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni

Dettagli

Linguaggi e Traduttori: Analisi lessicale

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

Dettagli

Parser Bottom UP. Giuseppe Morelli

Parser Bottom UP. Giuseppe Morelli Parser Bottom UP Giuseppe Morelli Parser Bottom UP Un parser Bottom Up lavora costruendo il corrispondente albero di parsing per una data stringa di input partendo dalle foglie (bottom) e risalendo via

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

Parte n.7 Automi a Pila e Grammatiche Libere

Parte n.7 Automi a Pila e Grammatiche Libere Linguaggi di Programmazione Corso C Parte n.7 Automi a Pila e Grammatiche Libere Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Automi a Pila Per il teorema

Dettagli

ATN & CHART-DIAGRAM. Augmented grammars. Sistemi basati sul linguaggio naturale e parser. Il del linguaggio naturale nella società dell informazione

ATN & CHART-DIAGRAM. Augmented grammars. Sistemi basati sul linguaggio naturale e parser. Il del linguaggio naturale nella società dell informazione Università degli studi di Pisa Facoltà di scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica ATN & CHART-DIAGRAM Corso di Intelligenza Artificiale: Trattamento Automatico del Linguaggio

Dettagli

Riconoscitori e analizzatori sintattici. Scanning e parsing. Funzionamento di un parser: la tecnica Shift/Reduce. Esempio

Riconoscitori e analizzatori sintattici. Scanning e parsing. Funzionamento di un parser: la tecnica Shift/Reduce. Esempio POLITECNICO I TORINO Laboratorio di Compilatori Corso di Linguaggi e Traduttori mail: stefano.scanzio@polito.it sito: Riconoscitori e analizzatori sintattici ata una grammatica non ambigua ed una sequenza

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

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

Progetto Laboratorio Programmazione Parte 2: Analizzatore sintattico di espressioni

Progetto Laboratorio Programmazione Parte 2: Analizzatore sintattico di espressioni Progetto Laboratorio Programmazione Parte 2: Analizzatore sintattico di espressioni Stefano Guerrini A.A. 2000/01 Come abbiamo già visto, l obiettivo del progetto è arrivare a determinare il valore assegnato

Dettagli

Formali. Corso di Automi e Linguaggi. Gennaio- Marzo Docente: Francesca Rossi,

Formali. Corso di Automi e Linguaggi. Gennaio- Marzo Docente: Francesca Rossi, Corso di Automi e Linguaggi Formali Gennaio- Marzo 2004 Docente: Francesca Rossi, frossi@math.unipd.it Corso di Automi e Linguaggi Formali Gennaio-Marzo 2004 p.1/30 Dati del corso Orario: Lunedi 15:50-17:30,

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Lezione 4 Chiara Braghin braghin@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 6 Marzo 2007 Regole della grammatica di un linguaggio

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

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

9. Analisi Sintattica

9. Analisi Sintattica 9. Analisi Sintattica Nicola Fanizzi (fanizzi@di.uniba.it) Dipartimento di Informatica Università degli Studi di Bari Corso di Linguaggi di Programmazione 3 maggio 2005 1 Introduzione Denizione Funzionalità

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

Automi a pila. Dipartimento di Elettronica e Informazione Politecnico di Milano. 17 marzo 2017

Automi a pila. Dipartimento di Elettronica e Informazione Politecnico di Milano. 17 marzo 2017 Automi a pila Dipartimento di Elettronica e Informazione Politecnico di Milano 17 marzo 2017 Aumentiamo la potenza di un FSA Descrizione operativa dei limiti Un FSA ha un Organo di Controllo (OC) con memoria

Dettagli

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di

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

POLITECNICO DI TORINO. Laboratorio di Compilatori Corso di Linguaggi e Traduttori. Esercitazione 2. a.a 2010 / 2011

POLITECNICO DI TORINO. Laboratorio di Compilatori Corso di Linguaggi e Traduttori. Esercitazione 2. a.a 2010 / 2011 POLITECNICO DI TORINO Laboratorio di Compilatori Corso di mail: stefano.scanzio@polito.it sito: a.a 2010 / 2011 Riconoscitori e analizzatori sintattici Data una grammatica non ambigua ed una sequenza di

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