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 corretta, al contrario della seguente espressione: Gatto il un topo rincorre Dato un insieme finito di elementi di partenza (le parole della nostra lingua), siamo in grado di comprendere e produrre un insieme praticamente illimitato di enunciati
Linguaggi i e grammatiche Sia Σ = {un, il, gatto, topo, rincorre} Le espressioni un gatto rincorre il topo e gatto il un topo rincorre appartengono entrambe all insieme delle stringhe generabili a partire da Σ Le espressioni che diremmo sintatticamente corrette costituiscono un sottoinsieme proprio di tutte le stringhe generabili a partire da Σ Come definire questo sottoinsieme? Possiamo definirlo mediante una grammatica formale
Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre
Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un Una grammatica formale è un insieme di espressioni dette regole di produzione Ogni regola assume la forma e 1 e 2 6 ARTICOLO il Nelle espressioni e 1 ed e 2 compaiono: 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Simboli non terminali (espressi in maiuscolo nell esempio) Simboli terminali (alfabeto)
Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO La regola e 1 e 2 indica che, ogni volta che si trova l espressione e 1, si può sostituire il simbolo non terminale in e 1 4. SV VERBO SN con e 2 5. ARTICOLO un esempio: sostituire SV con 6. ARTICOLO il VERBO SN 7. NOME gatto A ogni grammatica è associato 8. NOME topo un simbolo non terminale detto 9. VERBO rincorre simbolo iniziale. In questo caso il simbolo iniziale è E
Un esempio di grammatica formale Per generare una stringa a partire 1. E SN SV da questa grammatica: 2. SN ARTICOLO NOME 1. Si prende in considerazione il 3. SV VERBO simbolo iniziale 4. SV VERBO SN 2. Si sceglie una regola che abbia 5. ARTICOLO un quel simbolo a sinistra della 6. ARTICOLO il freccia 7. NOME gatto 3. Si effettua la sostituzione 8. NOME topo 4. Nella stringa così ottenuta,si 9. VERBO rincorre selezionano gli eventuali simboli non terminali e si torna al passo 2, finchè rimangono solo simboli terminali
Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Esempio di derivazione (1,2,5,7,4,9,2,6,8): E SN SV (regola 1) ARTICOLO NOME SV (regola 2) Un NOME SV (regola 5) Un gatto SV (regola 7) Un gatto VERBO SN (regola 4) Un gatto rincorre SN (regola 9) Un gatto rincorre ARTICOLO NOME (regola 2) Un gatto rincorre il NOME (regola 6) Un gatto rincorre il topo (regola 8)
Un esempio di grammatica formale 1. E SN SV 2. SN ARTICOLO NOME 3. SV VERBO 4. SV VERBO SN 5. ARTICOLO un 6. ARTICOLO il 7. NOME gatto 8. NOME topo 9. VERBO rincorre Quali altre espressioni possiamo generare a partire da questa grammatica? Un topo rincorre Un topo rincorre il gatto Il topo rincorre un gatto Esempi di espressioni i non generabili? Un rincorre gatto topo
La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 0 non esiste alcun vincolo sulla forma delle produzioni: non esiste alcun vincolo sulla forma delle produzioni: può essere usata qualunque regola e 1 e 2
La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 1 Dette anche grammatiche non decrescenti. Non sono permesse regole e 1 e 2 tale che e 2 sia più corta di e 1 Esempio: non è permessa una regola del tipo NOME gatto topo Tutte le grammatiche di livello 1 sono anche di livello 0, ma non viceversa!
La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 2 Dette anche grammatiche libere da contesto. Le regole hanno la forma S γ dove S è un simbolo non terminale e γ è una stringa di simboli terminali e/o non terminali La grammatica vista in precedenza è libera da contesto Tutte le grammatiche libere da contesto sono non Tutte le grammatiche libere da contesto sono non decrescenti, ma non viceversa!
La gerarchia di Chomsky Possiamo definire i vari tipi i di grammatiche Grammatiche di livello 3 Dette anche grammatiche lineari. Una grammatica lineare destra include regole della forma S t B oppure S t Una grammatica lineare sinistra include regole della forma S B t oppure S t dove S e B sono simboli non terminali e t è un simbolo terminale
La gerarchia di Chomsky Grammatiche di livello 0 Grammatiche di livello 1 (o non decrescenti) Grammatiche di livello 2 (o libere da contesto) Grammatiche di livello 3 (o lineari) Gerarchia: tutte le stringhe generate da una grammatica di livello i sono generate dalla grammatica di livello i-11
Una grammatica lineare destra S 0S S 1S S 1 Una grammatica lineare destra include regole della forma S t B oppure S t Quale linguaggio è generato da questa grammatica? Questa grammatica genera solo stringhe che terminano per 1 1 0 1 Esiste un automa finito it che riconosce questo linguaggio! q 1 q 2 0
Grammatiche e automi Alcuni teoremi (che non dimostriamo): i Tutti i linguaggi generati da grammatiche lineari sono Tutti i linguaggi generati da grammatiche lineari sono riconosciuti da automi finiti
Linguaggi liberi da contesto e automi a pila Sappiamo che esiste un automa a pila che riconosce il linguaggio {w b m n m } La grammatica che genera questo linguaggio è S bsn S bn Stringhe generate: bn bbnn bbbnnn Grammatiche libere da contesto Le regole hanno la forma S γ dove S è un simbolo non terminale e γ è una stringa di simboli terminali e/o non terminali
Grammatiche e automi Alcuni teoremi (che non dimostriamo): i Tutti i linguaggi generati da grammatiche lineari sono riconosciuti da automi finiti Tutti i linguaggi generati da grammatiche libere da contesto sono riconosciuti da automi a pila
Grammatiche e automi Linguaggi Automi Grammatiche di livello ll 0 Grammatiche di livello 1 (o non decrescenti) Grammatiche di livello 2 (o libere da contesto) Grammatiche di livello 3 (o lineari) Automi a pila Automi finiti