Fondamenti teorici e programmazione
|
|
|
- Leo Gigli
- 6 anni fa
- Visualizzazioni
Transcript
1 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 (A) - modb a.a. 2018/19 pag. 1
2 Ripasso Abbiamo visto: Espressioni regolari Automi deterministici a stati finiti; Automi non-deterministici a stati finiti; Questi tre modelli permettono di specificare tutti e soli i linguaggi regolari. Non tutti i linguaggi sono regolari. Ricordate la gerarchia di Chomsky. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 2
3 Linguaggi non regolari I seguenti sono esempi ben noti di linguaggi non regolari. 1. Il linguaggio di tutti i palindomi (es: anna, otto); 2. Il linguaggio delle parentesi bilanciate (es: [[][[]]] o [[]] ); 3. Il linguaggio delle stringhe di n a seguite da n b per ogni naturale n ({a n b n n N }). Il fatto che questi linguaggi non sono regolari può essere dimostrato attraverso il famoso pumping lemma (Sezione 3.6 delle dispense) che noi non vedremo. La sintassi dei linguaggi di programmazione solitamente non è un linguaggio regolare (vedi punto 2.) ma è solitamente un linguaggio libero da contesto. In questa lezione ci dedicheremo ai linguaggi liberi da contesto, cioè i linguaggi generati da una grammatica libera da contesto. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 3
4 Esempio: La grammatica delle espressioni aritmetiche ExA Num ExA ExA + ExA ExA ExA ExA ExA ExA ExA ExA ExA ExA Intuitivamente, la grammatica ci dice che un espressione aritmetica ( ExA ) o è un numero ( Num ) oppure la somma (+), la sottrazione ( ), la moltiplicazione ( ), la divisione ( ) di due espressioni aritmetiche. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 4
5 Esempio: La grammatica delle espressioni aritmetiche ExA Num ExA ExA + ExA ExA ExA ExA ExA ExA ExA ExA ExA ExA I simboli tra parentesi angolate, come ExA o Num vengono chiamate categorie sintattiche o simboli non-terminali. Intuitivamente queste denotano linguaggi. Vedremo dopo, la loro definizione formale. Il simbolo è un metasimbolo, che si legge può essere composto da. Gli altri simboli +,,, sono i simboli terminali, cioè i simboli dell alfabeto del linguaggio generato. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 5
6 Esempio: La grammatica delle espressioni aritmetiche Cif 0 Cif 1 Cif 2 Cif 3 Cif 4 Cif 5 Cif 6 Cif 7 Cif 8 Cif 9 Num Cif Num Num Cif ExA Num ExA ExA + ExA ExA ExA ExA ExA ExA ExA ExA ExA ExA I simboli non terminali sono ExA, Num, Cif ; I simboli terminali 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +,,,. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 6
7 Produzioni Nella grammatica precedente ogni riga viene detta una produzione. Ad esempio ExA ExA ExA è una produzione della grammatica precedente. Una produzione consiste di un simbolo non terminale a sinistra di e, alla sua destra, una sequenza di simboli terminali e non. Il simbolo non terminale a sinistra di viene detto la testa della produzione. La sequenza di simboli a destra di viene detta il corpo della produzione. Se S è l insieme dei simboli non terminali ed A l insieme dei simboli terminali, allora a destra di c è un elemento dell insieme (S + A) (si ricorda che + denota l unione disgiunta di insiemi). F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 7
8 Grammatica libera da contesto Definizione: Una grammatica libera da contesto consiste di una tripla (A, S, P) dove: A è l insieme dei simboli terminali; S è l insieme dei simboli non termimali; P è un insieme di produzioni: ogni produzione ha la forma X w dove X S e w (A + S). F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 8
9 Notazione breve per le produzioni Per accorciare la notazione, si possono rappresentare più produzioni su una sola riga. Si introduce un ulteriore metasimbolo che si legge oppure. Le produzioni si rappresentano come X w 1 X w 2... X w n X w 1 w 2 w n. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 9
10 Esempio (1) La grammatica precedente può essere espressa in modo conciso come segue. Cif Num Cif Num Cif ExA Num ExA + ExA ExA ExA ExA ExA ExA ExA Il significato non cambia: un espressione aritmetica può essere composta da un numero, oppure la somma, oppure la sottrazione oppure... F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 10
11 Esempio (2) Vogliamo rappresentare espressioni aritmetiche con variabili, come ad esempio x + 3 y. Si estende la precedente grammatica con la categoria sintattica degli identificatori ( Ide ) che intuitivamente contiene tutte le parole formate dai caratteri a, b, c,... z. Cif Num Cif Num Cif ExA Num ExA + ExA ExA ExA ExA ExA ExA ExA Ide Ide Car Ide Car Car a b z Adesso l insieme dei simboli non terminali contiene anche a, b,... z. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 11
12 Esempio (3) La precedente grammatica può essere trasformata aggiungendo la categoria sintattica degli operatori aritmetici (OpA). OpA + Cif Num Cif Num Cif ExA Num ExA OpA ExA Ide Ide Car Ide Car Car a b z F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 12
13 Albero di derivazione sintattica Definizione: Sia (A, S, P) una grammatica libera da contesto. Un albero di derivazione sintattica (o parse tree) è un albero radicato dove: ogni nodo interno è etichettato da un simbolo non terminale (cioè un simbolo in S); ogni foglia è etichettata da un simbolo terminale (cioè un simbolo in A); ogni nodo interno v rappresenta l applicazione di una produzione, ovvero deve esistere una produzione tale che: 1. l etichetta del nodo v è la testa della produzione; 2. l etichette dei figli di v, da sinistra a destra, formano il corpo della produzione. Sia w A la parola ottenuta leggendo da sinistra a destra i simboli terminali che etichettano le foglie dell albero. Si dice w è la stringa testimoniata dall albero o che l albero è un parse tree di w. F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 13
14 Esempio di albero di derivazione Data la grammatica sulla sinistra, un albero di derivazione per la parola x + 3 è rappresentato sulla destra. OpA + Cif Num Cif Num Cif ExA Num ExA OpA ExA Ide Ide Car Ide Car Car a b z ExA ExA OpA ExA Ide + Num Car Cif x 3 F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 14
15 Esempio di albero di derivazione Data la grammatica sulla sinistra, un albero di derivazione per la parola 35 è rappresentato sulla destra. OpA + Cif Num Cif Num Cif ExA Num ExA OpA ExA Ide Ide Car Ide Car Car a b z Num Num Cif Cif 5 3 F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 15
16 Esempio di albero di derivazione Data la grammatica sulla sinistra, un albero di derivazione per la parola temp è rappresentato sulla destra. OpA + Cif Num Cif Num Cif ExA Num ExA OpA ExA Ide Ide Car Ide Car Car a b z Ide Ide Ide Car Ide Car m Car p Car e F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 16 t
17 Linguaggio generato Definizione: Sia (A, S, P) una grammatica libera da contesto. Sia X S un simbolo non terminale. Il linguaggio generato da X è l insieme delle parole w A tali che esiste un parse tree per w avente come radice un nodo etichettato con X. Esempi: la stringa x + 3 è un espressione aritmetica, cioè appartiene al linguaggio generato da ExA ; la stringa 35 è un numero, cioè appartiene al linguaggio generato da Num ; la stringa temp è un identificatore (di variabile), cioè appartiene al linguaggio generato da Ide ; F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 17
18 Esempio Si definisce w n come la concatenazione della stringa w A n-volte. (Definito formalmente per induzione su n: w 0 = ε, w n+1 = w w n ) Il linguaggio {a n b n n N } sull alfabeto A = {a, b} non è regolare. Questo linguaggio è però libero da contesto: esiste una grammatica libera da contesto avente un simbolo non terminale il cui linguaggio generato è esattamente {a n b n n N }. X ε a X b F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 18
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,
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
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
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
Fondamenti teorici e programmazione
Fondamenti teorici e programmazione FTP(A) - modb Lezione 6 Chiusure Relazioni di equivalenza F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 1 Chiusure Ogni
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
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
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
Quiz sui linguaggi regolari
Fondamenti dell Informatica 1 semestre Quiz sui linguaggi regolari Prof. Giorgio Gambosi a.a. 2016-2017 Problema 1: Data l espressione regolare a, definita su {a, b}, descrivere il linguaggio corrispondente
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
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,/}
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
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
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
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
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
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm
Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemma N.Fanizzi - V.Carofiglio 6 aprile 2016 1 Teorema di Kleene 2 3 o 1 o 3 o 8 Teorema di Kleene Vale la seguente equivalenza: L 3 L FSL L REG Dimostrazione.
Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.
Analizzatore lessicale o scanner Dispensa del corso di Linguaggi e Traduttori A.A. 2005-2006 Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner,
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
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
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=
Espressioni regolari
spressioni Regolari Un FA (NFA o DFA) e una macchina a stati finiti che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo (o algebrico) per descrivere un linguaggio regolare.
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
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 ([email protected]) Dipartimento di Informatica Università degli Studi di Bari Grammatiche
Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione
Principali informazioni sull insegnamento Titolo insegnamento Linguaggi di Programmazione Corso di studio Informatica e Comunicazione Digitale Crediti formativi 9 Denominazione inglese Programming Languages
Fondamenti teorici e programmazione
Fondamenti teorici e programmazione FTP(A) - modb Lezione 8 F.Bonchi Dip.to Informatica Fondamenti teorici e programmazione (A) - modb a.a. 2018/19 pag. 1 Ragionamento formale Comprendere le basi del ragionamento
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
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
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
Costanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012
Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario I sistemi di numerazione Il sistema binario Altri sistemi di numerazione Algoritmi di conversione Esercizi 07/03/2012 2 Sistemi
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
RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine
RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale
