LINGUAGGI CONTEXT FREE. Lezione Lezione

Похожие документы
Pumping lemma per i linguaggi Context-free

Esempio stringhe palindrome 1

Forme Normali. Forma normale di Chomsky. E caratterizzata da regole di due tipi. A! BC dove A, B, C $ V N A! a con a $ V T. Forma normale di Greibach

Sui Linguaggi Regolari: Teorema di Kleene - Pumping Lemm

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

Forma Normale di Chomsky

Linguaggi e Grammatiche Liberi da Contesto

Definizione di Grammatica

Linguaggi Regolari e Linguaggi Liberi

Linguaggi Regolari e Linguaggi Liberi

Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini

GRAMMATICHE LIBERE DAL CONTESTO

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

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

Le grammatiche formali

Linguaggi Liberi dal Contesto. Linguaggi Liberi dal Contesto

Capitolo 2 Linguaggi e Grammatiche

11. LINGUAGGI CONTEXT FREE

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

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

Espressività e limitazioni delle grammatiche regolari

LINGUAGGI E GRAMMATICHE FORMALI

Grammatiche context-free

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

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

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Macchine di TURING. Alan Mathison Turing ( )

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

albero sintattico parser scanner Errori sintattici

MODULO 04 ELEMENTI DI TEORIA DEI LINGUAGGI FORMALI

Programmazione Lineare Intera. Programmazione Lineare Intera p. 1/4

Quiz sui linguaggi regolari

Traduttore diretto dalla sintassi (seconda parte) Giuseppe Morelli

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Grammatiche Parse trees Lezione del 17/10/2012

Aniello Murano Automi e Pushdown

Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice

GRAMMATICHE DEI LINGUAGGI DI PROGRAMMAZIONE. Cosimo Laneve

Linguaggi regolari e automi a stati finiti

Proprieta dei Linguaggi regolari

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

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

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

Un prefisso, un suffisso o una sottostringa di una stringa, quando non sono la stringa stessa, sono detti propri.

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Logica proposizionale

9. LINGUAGGI FORMALI E GRAMMATICHE DI CHOMSKY

Definire tramite una grammatica ad attributi il

Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari

Fondamenti dell Informatica: Linguaggi Formali e Calcolabilità

GRAMMATICA FORMALE. Albero sintattico

Транскрипт:

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) o non contestuali. Sono GENERATI da grammatiche di tipo 2. Dati: VN insieme dei simboli non terminali VT insieme dei simboli teminali Le produzioni sono della forma: VN (VT U VN)* Notate la differenza con le grammatiche di tipo 3? VN (VT U VN) VT (sinistra) VN VT (VT U VN) (destra) Sono RICONOSCIUTI da automi a pila. 5

LINGUAGGI DI PROGRAMMAZIONE Interessante sottoclasse dei linguaggi di tipo 2. Dato il codice sorgente (insieme di stringhe): Parser: costruisce l albero sintattico tramite l applicazione delle regole per riconoscere la stringa Compilatore o interprete: visita l albero traducendo in istruzioni macchina o eseguendo le operazioni Esempio di albero sintattico: int x = 10; S Var; Var = Val; Var Tipo Nome Tipo int Nome x Val 10 15 Tipo Var Nome S int x = Val 10 ; 6

7 PUMPING LEMMA E PROPRIETÀ DI CHIUSURA

PUMPING LEMMA PER LINGUAGGI CF 1/3 Se L è un linguaggio non contestuale allora esiste una costante n tale che se z L e z n, allora esistono u,v,w,x,y tali che: 1. uvwxy=z 2. vx 1 3. vwx n 4. i 0 uv i wx i y L Condizione necessaria ma non sufficiente! Dimostra che un linguaggio non è context free. Notate la differenza con il PL per i linguaggi regolari? Un ragionamento simile permette di decidere: L = L = pumping constant 8

PUMPING LEMMA PER LINGUAGGI CF 2/3 Linguaggi finiti (sono regolari e quindi contex free). soddisfano banalmente il PL con n = max s : s L + 1 non ci sono z L: z n quindi la condizione è sempre vera! Linguaggi infiniti (possono essere cf non regolari). vediamo le stringhe con albero sintattico a profondità > V n C è almeno un non terminale A ripetuto due volte: 1) una per generare da A la stringa vax 2) una per generare da A la stringa w allora posso usare subito la regola 2) e ottenere una stringa che ha i = 0 ovvero senza v x continuare ad usare la regola 1) e ottenere una stringa che ha i > 0 ovvero con vvv xxx 9

PUMPING LEMMA PER LINGUAGGI CF 3/3 Se L è un linguaggio non contestuale allora esiste una costante n tale che se z L e z n, allora esistono u,v,w,x,y tali che: 1. uvwxy=z 2. vx 1 3. vwx n 4. i 0 uv i wx i y L Esempio. Dimostrare che a n b n c n n 1 non è di tipo 2. Sia a n b n c n =uvwxy = z Consideriamo la stringa v se contiene simboli diversi, uv 2 wc 2 y ha alternanze di simboli se contiene simboli uguali, uv 2 wc 2 y ha diverso numero di a,b,c 10

CHIUSURA DEI LINGUAGGI CF Teorema. I linguaggi non contestuali non sono chiusi rispetto all intersezione, quindi neanche alla complementazione. Dimostrazione. Siano L 1 = a n b n c m m, n 1 e L 2 = a m b n c n m, n 1 due linguaggi di tipo 2 Intersezione. Il linguaggio L 1 L 2 = a n b n c n n 1 non è di tipo 2. Complementazione. Se l intersezione non è di tipo 2 non può esserlo neanche il complemento, infatti L 1 L 2 = L 1 L 2. 11

CHIUSURA DEI LINGUAGGI CF Teorema. I linguaggi non contestuali sono chiusi rispetto all'unione, alla concatenazione ed alla iterazione Dimostrazione. Siano <Σ,VN 1,P 1,S 1 > e <Σ,VN 2,P 2,S 2 > due linguaggi CF: Unione. Aggiungo S' S 1 S 2 e uso S' come nuovo assioma. Concatenazione. Aggiungo S' S 1 S 2 e uso S' come nuovo assioma. Iterazione. Aggiungo S' S 1 S' ε e uso S' come nuovo assioma. 12

RIASSUNTO PROPRIETÀ DI CHIUSURA 13

14 AUTOMI A PILA

RICONOSCIMENTO DI LINGUAGGI CF 1/2 Gli ASF non hanno potere computazionale per riconoscere tutti i linguaggi CF, possono riconoscere solo i regolari. Automi a Pila, o push-down automata (PDA) Dispongono di una pila che possono modificare Possono usare il primo carattere della pila nella FdT Condizioni equivalenti di accettazione Accettaz per pila vuota. a fine scansione pila vuota Accettaz per stato finale. a fine scansione stato finale Linguaggi CF riconosciuti da PDA non deterministci (tutti quelli riconosciuti da PDA non determin sono CF) PDA deterministici riconoscono una particolare sottoclasse PDA deterministici hanno diverso potere computazionale! 15

AUTOMA A PILA NON DETERMINISTICO Un PDA non deterministico è una settupla M = Σ, Γ, Ζ 0, Q, q 0, F, δ Σ alfabeto di input Γ alfabeto della pila Ζ 0 Γ simbolo iniziale della pila Q insieme finito di stati q 0 ε Q stato iniziale F Q insieme di stati finali δ: Q Σ ε Γ P(Q Γ ) funzione di transizione 16

FDT DI UN PDA NON DETERMINISTICO Se abbiamo una regola di transizione δ q i, a, A = q j, BA, q h, ε Se lo stato interno è q i, il carattere letto è a e il simbolo top della pila è A, non deterministicamente ci sono due transizioni sposta lo stato corrente in q j e sostituisci A con BA (pop(a) push(a) push(b)) sposta lo stato corrente in q h e sostituisci A con ε (pop(a)) Una regola di transazione δ q i, ε, A implica il non spostamento della testina 17

FDT DI UN PDA DETERMINISTICO Un PDA è deterministico se vale q Q, σ Σ, Z Γ δ q, σ, Z + δ q, ε, Z 1 se è definita una ε-transizione per un certo stato q e per un certo simbolo di pila Z, non deve essere definita un'altra transizione Linguaggi CF deterministici: quelli riconosciuti da PDA D I linguaggi CF sono riconosciuti in tempo lineare con PDA ND ma il in tempo O(n 3 ) con metodi deterministici (più potenti di PDA) I linguaggi di programmazione si vuole che vengano processati in tempo lineare e con metodi deterministici, ovvero che siano linguaggi CF deterministici. 18

RICONOSCIMENTO DI LINGUAGGI CF 2/2 Riconoscere ww R con w in (0+1) + con PDA non deterministico M=<{0,1},{R,Z,U},R,{q 1,q 2 },q 1,,δ> FdT: δ(q 1,0,R) = {<q 1,ZR>} δ(q 1,0,Z) = {<q 1,ZZ>,<q 2,ε>} δ(q 1,0,U) = {<q 1,ZU>} δ(q 1,1,R) = {<q 1,UR>} δ(q 1,1,Z) = {<q 1,UZ>} δ(q 1,1,U) = {<q 1,UU>,<q 2,ε>} δ(q 2,0,Z)={<q 2,ε>} δ(q 2,1,U)={<q 2,ε>} δ(q 1,ε,R)={<q 2,ε>} δ(q 2,ε,R)={<q 2,ε>} potrebbe non essere a metà quindi aggiungi potrebbe essere a metà quindi togli supponi di essere a metà quindi togli finisci e togli anche il simbolo iniziale Come funziona questo automa con 00100100? 19

20 FORME NORMALI

FORMA RIDOTTA Una grammatica si dice in forma ridotta se Non contiene ε-produzioni, a meno che non siano nell assioma e l assioma non compaia mai a destra Non contiene produzioni unitarie (A B) Non contiene simboli inutili come: Simboli non fertili, che non generano stringhe di terminali Simboli non raggiungibili dall assioma Ogni grammatica di tipo 2 ha una grammatica equivalente in forma ridotta L algoritmo di trasformazione dimostra la precedente 21

FORMA RIDOTTA DI UNA GRAMMATICA CF Rimozione delle ε-produzioni che non sono su S Es: A BC bab B B ε ad A BC bab B C ba ε B ad Iterare finché solo S contiene ε-produzioni Rimozione delle produzioni unitarie Es: A B B b A b Rimozione dei simboli inutili, in ordine prima i simboli non fertili e poi i simboli non raggiungibili, poiché alcuni diventano non raggiungibili proprio per l eliminazione dei simboli non fertili. 22

FORMA RIDOTTA DI UNA GRAMMATICA CF Rimoz. simboli inutili 1: produz. con simboli non fertili Def. Ricorsiva. Un simbolo A non term è fertile se: Esiste Aα dove α ha solo terminali Esiste Aα dove α ha terminali o simboli fertili Es: S AB b A a S b A a Rimoz. simboli inutili 2: produz. con simboli non raggiung. Def. Ricorsiva. Un simbolo A non term è raggiungibile se: E l assioma Esiste BαAα dove B è raggiungibile Es: S b A a S b 23

ESEMPIO G G =RIDOTTA(G) Data la grammatica G: S Xa S V X bs Sc d W w Step 1: (non fertili, nessuna produzione di terminali) ricorsione inutile no produz associata Step 2: (non raggiungibili) S Xa S V X bs Sc d W w S Xa V X bs Sc d W w S Xa X bs Sc d W w S Xa V X bs Sc d W w S Xa X bs Sc d W w S Xa X bs Sc d 24

FORMA NORMALE DI CHOMSKY (CNF) Una grammatica di tipo 2 si dice in CNF se Tutte le produzioni sono del tipo seguente: A α dove α contiene solo DUE simboli non terminali A β dove β contiene solo UN simbolo terminale Ogni grammatica di tipo 2 che generi un linguaggio L tale che ε L ha una grammatica equivalente in CNF L algoritmo di trasformazione dimostra la precedente 25

CNF DI UNA GRAMMATICA CF Trasformiamo la grammatica in forma ridotta, se non lo è già 1. Trasformiamo ogni produzione che contiene almeno un simbolo terminale in maniera che contenga solo quello o solo simboli non terminali. Es: A b 1 Bb 2 A Z 1 BZ 2 Z 1 b 1 Z 2 b 2 2. Trasformiamo ogni produzione che contiene solo simboli non terminali in maniera che ne contenga solo due. Es: A B 1 B 2 B n A B 1 Z 1 Z 1 B 2 Z 2 Z n 2 B n 1 B n 26

ESEMPIO G G =CNF(G ) Data la grammatica G in forma ridotta: S Xa X bs Sc d Step 1: Step 2: S Xa X bs Sc d nop S XA X BS SC d A a B b C c 27

FORMA NORMALE DI GREIBACH (GNF) Una grammatica di tipo 2 si dice in GNF se Tutte le produzioni sono del tipo seguente: A aβ dove a V T e β se non è vuota contiene solo simboli non terminali Ogni grammatica di tipo 2 che generi un linguaggio L tale che ε L ha una grammatica equivalente in GNF L algoritmo di trasformazione dimostra la precedente La GNF permette di costruire in maniera automatica l automa che riconosce il linguaggio generato dalla grammatica 28

LEMMI UTILIZZATI Sostituzione Lemma. G è equivalente a G dove α 1, α 2 V G = A α 1Bα 2 B β 1 G = A α 1β 1 α 2 B β 1 Ricorsione Sinistra Lemma. G è equivalente a G dove (α, β V ) β non inizia per A G = A Aα β G = A βb β B αb α Dim. Ogni derivazione di G con n applicazioni della ricorsione sinistra su A può essere sostituita con n applicazioni della ricorsione destra di G su B. Ogni derivazione di G Aβ resta uguale in G 29

GNF DI UNA GRAMMATICA CF Trasformiamo la grammatica in CNF, se non lo è già Stabiliamo un ordinamento arbitrario sui simboli non terminali di G 1. for k=1 to m A. for j=1 to k-1 applica il lemma di sostituzione a tutte le produzioni A k A j α B. applica il lemma di eliminazione della ricorsione sinistra a A k A k α β introducendo B k 2. for k=m-1 downto 1 for j=m downto k 3. for k=1 to m applica il lemma di sostituzione a tutte le produzioni A k A j α Cerchiamo produzioni con non terminali distinguendo quelle che si possono sistemare con la sostituzione da quelle ricorsive Se G è in CNF, α è un non terminale, mentre β o è una coppia di non terminali o un simbolo terminale for j=1 to m applica il lemma di sostituzione a tutte le produzioni B k A j α 30

ESEMPIO G G =GNF(G ) 1/3 Data la grammatica G in CNF: S Xa X bs Sc d A a, B b, C c Per G m=5. Ordinamento: S (m=1), X (m=2), A, B, C. Step 1: (check S) A: (check -) nop B: nop Step 1: (check X) A: (check S) B: S XA X BS SC d A a, B b, C c S XA X BS XAC d A a, B b, C c S XA X BS XAC d A a, B b, C c S XA X BSZ BS dz d Z ACZ AC A a, B b, C c 31

ESEMPIO G G =GNF(G ) 2/3 Data la grammatica G in CNF: S Xa X bs Sc d A a, B b, C c Per G m=5. Ordinamento: S (m=1), X (m=2), A, B, C. Step 1: (check A) A: (check S, X) nop B: nop Step 1: (check B) A: (check S, X, A) nop B: nop Step 1: (check C) A: (check S, X, A, B) nop B: nop 32

ESEMPIO G G =GNF(G ) 3/3 Data la grammatica G in CNF: S Xa X bs Sc d A a, B b, C c Per G m=5. Ordinamento: S (m=1), X (m=2), A, B, C. Step 2: (check B, A) nop Step 2: (check X) (check C, B, A) Step 2: (check S) (check C, B, A, X) S XA X BSZ BS dz d Z ACZ AC A a, B b, C c S XA X bsz bs dz d Z ACZ AC A a, C c S XA X bsz bs dz d Z ACZ AC A a, B b, C c S bsza bsa dza da X bsz bs dz d Z ACZ AC A a, C c Step 3: (check Z) (check S, X, A, B, C) S bsza bsa dza da Z ACZ AC A a, C c S bsza bsa dza da Z acz ac A a, C c 33

ESEMPIO PDA CHE RICONOSCE L(G ) Data la grammatica G in GNF: S bsza bsa dza da Z acz ac A a, C c L automa a pila non deterministico che riconosce L(G ) è direttamente costruibile da G è il seguente. Z 0 =S Accettazione per pila vuota carattere letto q 0 S Z A C b d a a c (q 0,SZA) (q 0,SA) insieme di stati descritti da δ (q 0,ZA) (q 0,A) (q 0,CZ) (q 0,C) (q 0,ε) (q 0,ε) stato corrente simbolo affiorante della pila 34

35 ALCUNE OSSERVAZIONI Ambiguità e Decidibilità

AMBIGUITÀ Def. Una grammatica G di tipo 2 è ambigua se esiste una stringa x in L(G) derivabile con due diversi alberi sintattici Es. Data la grammatica G e la stringa s L G E E + E E E E a s = a + a a I seguenti sono alberi sintattici per s in G Def. Un linguaggio di tipo 2 è inerentemente ambiguo se tutte le grammatiche che lo generano sono ambigue. Es. Dati il linguaggio L e la stringa s L L = L 1 L 2 = a n b n c m : n, m 1 a m b n c n : n, m 1 s = a 2 b 2 c 2 = aabbcc. La stringa s in qualsiasi G: L(G)=L ha due alberi sintattici 36

DECIDIBILITÀ Il problema dell ambiguità di una grammatica e il problema della ambiguità di un linguaggio sono indecidibili. 37