11. LINGUAGGI CONTEXT FREE
|
|
|
- Tommaso Colombo
- 9 anni fa
- Просмотров:
Транскрипт
1 11. LINGUAGGI CONTEXT FREE
2 Linguaggi di tipo 2, non contestuali, context free (CF) I linguaggi non contestuali o context free: - sono generati da grammatiche di tipo 2 - sono riconosciuti da automi a stati finiti non deterministici con l ausilio di una pila (automi a pila) - contengono i linguaggi di programmazione (anzi i linguaggi di programmazione appartengono a classi di linguaggi context free deterministici molto particolari).
3 Molte frasi in linguaggio naturale hanno una struttura sintattica non contestuale; Ad esempio abbiamo che una frase è costituita da un soggetto seguito da un complemento; un soggetto è un articolo seguito da un sostantivo; il complemento è un verbo o un verbo seguito da un complemento oggetto. FRASE SOGGETTO COMPLEMENTO. SOGGETTO ART SOST COMPLEMENTO VERBO VERBO COMP-OGGETTO COMP-OGGETTO ART SOST ART il SOST gatto topo VERBO mangia il gatto mangia. il gatto mangia il topo.
4 La BNF (Forma di Backus-Naur), utilizzata per definire la struttura sintattica dei linguaggi di programmazione non è altro che una grammatica di tipo 2, scritta in modo più suggestivo: <frase-if> ::= if <predicato> then <istruzione>
5 Anche la descrizione della struttura di un documento espressa in XML è sostanzialmente una grammatica di tipo 2: <!DOCTYPE nota [ <!ELEMENT nota ( messaggio+ )> <!ELEMENT messaggio (#PCDATA)> <!ATTLIST messaggio numero CDATA da CDATA> ]> <nota> <messaggio numero="a1" da= Pippo"> Ricordati di comprare il latte tornando a casa</messaggio> <messaggio numero="a2" da= Pluto">Ho bisogno di aiuto per i compiti a casa </messaggio> </nota>
6 Per i linguaggi di Tipo 2 abbiamo una immediata corrispondenza tra derivazioni e alberi (alberi sintattici). Esempio. Data la grammatica A BC Def B b BC C c cc D d la derivazione della stringa può essere rappresentata con un albero A B B C B C c C b c c
7 Analisi sintattica ("parsing"): dato un programma ricostruirne l'albero sintattico per poter effettuare la traduzione (o, nel caso di un interprete, eseguire direttamente le istruzioni) Problemi: non ambiguità del "parsing", cioè possibilità di ricostruire in modo univoco il "significato" di una stringa efficienza del "parsing", cioè possibilità di ricostruire il "significato" di una stringa con una sola scansione del testo
8 11.1 PROPRIETA DI CHIUSURA E PUMPING LEMMA Lemma. Data una grammatica non contestuale possiamo decidere se essa genera il linguaggio vuoto Dim. Supponiamo VN =k Per verificare la producibilità di una stringa di soli terminali è sufficiente considerare l'insieme di tutti gli alberi di derivazione con tutti i terminali a profondità k (NB: la radice di un albero ha profondità 0 e se un nodo ha profondità p i suoi figli hanno profondità p+1) Infatti, se una stringa di soli terminali è generata con almeno un terminale y a profondità >k, allora sul cammino da y alla radice c'è un nonterminale ripetuto 2 volte L'albero può quindi essere "potato"
9 Dopo la potatura produce ancora una stringa di soli terminali.
10 Sia la stringa uvwxy, sia la stringa uwy appartengono al linguaggio (NB Anche tutte le stringhe uviwxiy)
11 Teorema. Data una grammatica non contestuale G, è decidibile stabilire se L(G) è infinito Dim. Supponiamo VN = k Basta considerare l'insieme di tutte le derivazioni che generano stringhe terminali in cui il ramo più lungo ha lunghezza tra k e 2k se tale insieme è vuoto, allora il linguaggio è finito se no, tali derivazioni hanno almeno un non terminale ripetuto 2 volte Allora l'albero di derivazione può essere ampliato indefinitamente continuando a produrre stringhe terminali e quindi il linguaggio è infinito
12 "Pumping lemma" per i linguaggi non contestuali Usando lo stesso ragionamento che abbiamo usato per decidere se un linguaggio CF è vuoto, finito o infinito, possiamo dimostrare il seguente risultato. Teorema. 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 uviwxiy L
13 Corollario 1. {anbncn n 1} non è di tipo 2. Dim. Sia anbncn = uvwxy = z se v (oppure x) contiene almeno due simboli diversi (es. v=ab) allora la stringa uv2wx2y contiene un'alternanza di simboli incompatibile con anbncn (es. uababwx2y) se v è composta da simboli tutti uguali fra loro (es. v=aa) e x è composta da simboli tutti uguali fra loro (es. x=cc) allora uv2wx2y contiene un numero diverso di a, b e c
14 Corollario 2. I linguaggi non contestuali non sono chiusi rispetto all'intersezione (e quindi neanche rispetto alla complementazione). Dim. il linguaggio L1={anbncm m,n 1} è di tipo 2 il linguaggio L2={ambncn m,n 1} è di tipo 2 il linguaggio intersezione di L1 ed L2 è {anbncn n 1} che invece non è di tipo 2
15 NOTA BENE. Avevamo dimostrato la decidibilità dell'equivalenza tra linguaggi regolari usando la chiusura rispetto all'intersezione; la tecnica non è estendibile ai linguaggi non contestuali. In realtà il problema della equivalenza di grammatiche non contestuali è indecidibile.
16 Proprietà di chiusura Teorema. I linguaggi non contestuali sono chiusi rispetto all'unione, alla concatenazione ed alla iterazione. Dim. Siano <Σ,V N1,P 1,S 1 > e <Σ,V N2,P 2,S 2 > due linguaggi non contestuali unione aggiungiamo S' S 1 S 2 e usiamo S' come nuovo assioma, otteniamo un linguaggio non contestuale che genera l'unione dei due linguaggi concatenazione aggiungiamo S' S 1 S 2 e usiamo S' come nuovo assioma iterazione aggiungiamo S' S 1 S' ε e usiamo S' come nuovo assioma
17 11.2 FORME NORMALI PER I LINGUAGGI CONTEXT FREE Grammatica in forma ridotta. 1. non contiene ε-produzioni, oppure l assioma può dar luogo ad una ε-produzione ma in tal caso l assioma non compare mai a destra in una produzione 2. non contiene produzioni unitarie (es. A B) 3. non contiene simboli inutili, cioè inutilizzabili per produrre terminali o perchè non sono raggiungibili dall assioma o perchè non sono fertili, non generano stringhe di soli terminali
18 Teorema. Data una grammatica non contestuale esiste una grammatica equivalente in forma ridotta Dim. 1. Rimozione delle ε-produzioni che non sono sull'assioma. Se ad esempio abbiamo A BC bab B B ε ad possiamo trasformare le due produzioni così: A BC B bab C ba ε B ad Tale procedimento può essere iterato finchè le ε-produzioni vengono portate sull assioma.
19 2. Eliminazione delle produzioni unitarie: Se esiste G con una produzione U V allora possiamo costruire G' in cui per ogni produzione del tipo V α aggiungiamo la produzione U α e quindi eliminiamo la produzione U V. Si può dimostrare per induzione sulla lunghezza di una derivazione che la grammatica G genera x se e solo se anche G' genera x.
20 3. Eliminazione dei simboli inutili: Perchè un simbolo A sia utile è necessario che (a) sia fecondo, cioè da A siano generabili stringhe di terminali (b) che A sia raggiungibile da S La condizione (a) è verificabile controllando che non sia vuoto il linguaggio generato dalla grammatica in cui A si assume come assioma. In alternativa si può procedere creando una lista dei non terminali fecondi secondo la seguente regola ricorsiva: - A è fecondo se esiste una produzione A α in cui α contiene solo terminali - A è fecondo se esiste una produzione A α in cui α contiene solo terminali o simboli fecondi
21 La condizione (b) (raggiungibilità dall assioma) è verificabile ricorsivamente a partire dall'assioma S; si può procedere creando una lista dei non terminali che soddisfano la condizione (b) secondo la seguente regola: - S soddisfa la condizione (b) - A soddisfa la condizione (b) se B soddisfa la condizione (b) ed esiste una produzione del tipo B αaα'.
22 NOTA BENE. Consideriamo la seguente grammatica: S AB a A a Dopo il primo passo abbiamo S a A a Dopo il secondo passo abbiamo S a
23 Se avessimo applicato i due passi in ordine inverso avremmo avuto: S AB a e poi S a A a A a che contiene ancora un simbolo non raggiungibile. Quindi dobbiamo prima eliminare i simboli non fecondi e poi quelli non raggiungibili.
24 Esempio. Riduciamo la grammatica 1 S auvb TZ 5 V ay 2 Z az 6 Y by b 3 U bu b 7 W cwd cd 4 V W 8 T tt tz Eliminazione delle produzioni unitarie: via la 4 ed aggiungiamo le produzioni V cwd cd Eliminazione dei simboli non fecondi: via la 2 e la 1bis Eliminazione dei simboli non raggiungibili: via la 8 1 S auvb 2 U bu b 3 V cwd cd ay 4 Y by b 5 W cwd cd
25 Forma Normale di Chomsky Def. Una grammatica di tipo 2 è in forma normale di Chomsky (CNF) se tutte le produzioni sono del tipo A BC oppure A a Teorema. Data una grammatica G di tipo 2 tale che ε L(G) esiste una grammatica G' equivalente in CNF. Dim. Supponiamo che G sia in forma ridotta. Per ogni produzione p: A β1β2...βn ( βi V N ), se p non è in CNF sono possibili due casi: (caso 1) per ogni i {1,...,n} (n 3), β i V N (caso 2) per qualche i {1,...,n} (n 2) β i V T.
26 (caso 1) per ogni i {1,...,n} (n 3) β i V N Aggiungiamo n-2 nuovi non terminali Z 1..Z n-2 e sostituiamo p con una catena di produzioni A β 1 Z 1 Z 1 β 2 Z 2 Z 2 β 3 Z 3... Z n-2 β n-1 β n (caso 2) per qualche i {1,...,n} (n 2) β i V T Per ogni β i V T aggiungiamo un non terminale Z i, sostituiamo Z i a β i in p ed aggiungiamo la produzione Z i β i Se n=2, allora non è necessario lavorare ulteriormente sulla produzione, altrimenti ci riconduciamo al (caso 1)
27 Esempio. Trasformazione in CNF della grammatica S asb S ab sostituiamo S ab con S AB, A a e B b sostituiamo S asb con S ASB sostituiamo S ASB con S AZ e Z SB
28 Forma Normale di Greibach Def. Una grammatica di tipo 2 è in forma normale di Greibach (GNF) se tutte le produzioni sono del tipo A aβ con β V N * NOTA BENE. La forma normale di Greibach ha varie applicazioni: ci permette di costruire l'automa che riconosce il linguaggio, ci permette di caratterizzare le classi di Grammatiche di Tipo 2 per le quali l'analisi sintattica è più efficiente.
29 Def. Chiamiamo A-produzioni tutte le produzioni del tipo: A β 1 β 2... β n Lemma (Sostituzione). Data una grammatica G le cui produzioni includono A α1bα2 B β 1 β 2... β n (α1, α2 V*) e non esistono altre B-produzioni, essa è equivalente alla grammatica G' in cui la produzione A α 1 Bα 2 è sostituita con A α 1 β 1 α 2 α 1 β 2 α 2... α 1 β n α 2
30 Dim. Banale; ogni stringa generata usando la derivazione A α 1 Bα 2 α 1 β i α 2 può essere generata con la derivazione A α 1 β i α 2 Esempio. Data la grammatica A abbc ceb B ad bb D dd d essa è equivalente alla grammatica A abadc cead abbbc cebb D dd d
31 Lemma (eliminazione della ricursione sinistra). Data una grammatica G le cui A-produzioni sono: A Aα 1... Aα m β 1... β n ed in cui nessuna delle β i inizia con A ad essa è equivalente la grammatica G' in cui la produzione A Aα 1... Aα m β 1... β n è sostituita con A β 1 B... β n B β 1... β n B α 1 B... α m B α 1... α m e
32 Dim. Ogni derivazione della G del tipo A Aα 1 Aα 2 α 1... Aα m...α 2 α 1 β j α m...α 2 α 1 è rimpiazzata da una derivazione della G' A β j B β j α m B β j α m α m-1 B... β j α m...α 2 B β j α m...α 2 α 1 e, viceversa, ogni derivazione della G' può essere rimpiazzata da una derivazione della G.
33 Teorema. Data una grammatica G di tipo 2 tale che ε L(G) esiste una grammatica G' in GNF con L(G)=L(G') Dim. Supponiamo che G sia in CNF. Procediamo nel seguente modo: stabiliamo arbitrariamente un ordinamento A 1,...,A m sui non terminali di G, eseguiamo, varie volte, le operazioni di sostituzione e di eliminazione della ricursione sinistra.
34 Algoritmo 0. Mettere la grammatica in CNF 1. Numerare i nonterminali A1,..., Am 2. begin for k:=1 to m do begin for j:=1 to k-1 do per ogni produzione del tipo A k A j α applica il Lemma di sostituzione end end date le A k -produzioni del tipo A k A k α1... A k αr β1... βs applica il Lemma di eliminazione della ricursione introducendo la corrispondente B k end
35 3. for k:=m-1 downto 1 do for j:=m downto k do per ogni produzione del tipo A k A j α applica il Lemma di sostituzione end end 4. for k:=1 to m for j:=1 to m do per ogni produzione del tipo B k A j α applica il Lemma di sostituzione end end
36 NOTA BENE. Al termine del Passo 2 avremo tutte produzioni dei seguenti tipi: a) A k A j γ con j>k b) A k aγ c) B k γ in cui a Σ, γ (VN {B1,...,Bk})* e γ non può iniziare per B. Inoltre, - se k = m le A k -produzioni sono tutte del tipo b, - se k = m-1 le A k -produzioni sono tutte del tipo b oppure del tipo A m-1 A m γ - se k = m-2 le A k -produzioni sono del tipo b oppure del tipo A m-2 Amγ o A m-2 A m-1 γ e così via.
37 A questo punto interviene il passo 3 nel quale sostituiamo A m nelle A m-1 -produzioni, A m ed A m-1 nelle A m-2 -produzioni e così via, ripetendo a ritroso le sostituzioni fino al nonterminale A1.
38 Infine, per quanto riguarda il passo 4, esaminiamo le produzioni dei nuovi non terminali B i. Il fatto che G sia in CNF ci garantisce che ogni produzione abbia a destra o un terminale o due non terminali. Quindi, quando effettuiamo il passo di eliminazione della ricursione, in cui per ogni produzione del tipo A k A k α aggiungiamo B k α e B k αb k α non è mai vuoto e non può iniziare con un nonterminale di tipo B. Infine, nel passo 4, per far comparire un terminale all'inizio della parte destra, possiamo riapplicare il passo di sostituzione alle B i -produzioni per ogni i.
39 Esempio. Data una grammatica in CNF determinare la grammatica equivalente in GNF S AB b A BS b B BA AS a Ordinamento: S,A,B Sostituiamo B AS con B bs e B BSS e l'insieme delle produzioni e' il seguente: S AB b A BS b B a bs BA BSS
40 A questo punto le sostituzioni previste dal passo 2 non sono più applicabili. Ci troviamo però dinanzi alla necessità di eliminare la ricursione a sinistra nelle B-produzioni. Introduciamo il nuovo nonterminale B'. L'insieme delle produzioni diventa: S AB b A BS b B a bs ab' bsb' B' A SS AB' SSB' in cui le produzioni sono del tipo a) Ak Ajγ con j>k S AB A BS b) Ak aγ S b A b B a bs ab' bsb' c) Bk γ B' A SS AB' SSB'
41 Ora applichiamo il passo 3 e sostituiamo B nella produzione A BS ottenendo A as bss ab's bsb's e quindi sostituiamo A nella produzione S AB ottenendo S asb bssb ab'sb bsb'sb bb
42 infine (passo 4) possiamo sostituire A ed S nella produzione B' A SS AB' SSB' ottenendo B' as bss ab's bsb's b asbs bssbs ab'sbs bsb'sbs bbs bs asb' bssb' ab'sb' bsb'sb' bb' asbsb' bssbsb' ab'sbsb' bsb'sbsb' bbsb' bsb' La grammatica in GNF sara' dunque: S asb bssb ab'sb bsb'sb bb A as bss ab's bsb's B a bs ab' bsb' B' as bss ab's bsb's b asbs bssbs ab'sbs bsb'sbs bbs bs asb' bssb' ab'sb' bsb'sb' bb' asbsb' bssbsb' ab'sbsb' bsb'sbsb' bbsb' bsb'
43 11.3 Automi a pila Che dispositivo occorre per riconoscere un linguaggio non contestuale? Introduciamo a tal fine un nuovo modello di calcolo non deterministico: l'automa a pila (o automa "push-down", PDA) Def. Automa a pila non deterministico (PDA) M=<Σ,Γ,Z 0,Q,q 0,F,δ> Σ alfabeto di input Γ alfabeto dei simboli della pila Z 0 Γ simbolo di pila iniziale Q insieme finito di stati q 0 Q stato iniziale Q F insieme di stati finali δ : Q (Σ {ε}) Γ P(Q Γ*) funzione di transizione.
44 Se abbiamo una regola di transizione δ(qi,a,a)={(qj,ba),(qh,ε)} essa significa che se nello stato interno q i, leggiamo a sul nastro ed A è il simbolo affiorante sulla pila, si realizzano, non deterministicamente, due transizioni; la prima sostituisce il simbolo affiorante sulla pila con la stringa di caratteri BA e si porta nel nuovo stato interno q j, la seconda sostituisce il simbolo affiorante sulla pila con la stringa vuota ε, in altre parole cancella A dalla pila, e si porta nel nuovo stato interno q h. NOTA BENE. La testina sul nastro di ingresso può anche non spostarsi. Questa situazione è espressa dicendo che la testina legge ε sul nastro di ingresso. Convenzione: se metto BA in pila, B è il nuovo simbolo affiorante.
45 Esempio. Automa a pila M che riconosce anbn M = <{a,b},{z 0,A 0,A},Z 0,{q 0,q 1,q2},q 0,{q2},δ> - il simbolo A serve a ricordare la presenza delle a - nello stato q 0 si memorizzano le a, nello stato q 1 si confrontano le b con ciò che si è memorizzato, lo stato q 2 è lo stato finale. NOTA BENE. In questo caso l'automa ha un comportamento sostanzialmente deterministico
46 q 0 A 0 Z 0 A 0 A a b a b a b AA 0 AA ε q 0 q 0 q 1 q 0 A 0 q 2 q 1 A 0 q 2 q 2 ε q 1
47 Def. Configurazione di automa a pila: tripla <q,x,γ> con q Q stato interno, x Σ* stringa da leggere in input e γ Γ* stringa attualmente in pila relazione di transizione per automa a pila: relazione binaria sulle configurazioni se vale: <q,x,γ> <q',x',γ'> ((x=ax' γ=zη γ'=ζη <q',ζ> δ(q,a,z)) (x=x' γ=zη γ'=ζη <q',ζ> δ(q,ε,z))) computazione: chiusura transitiva e riflessiva di, indicata con *
48 Def. Linguaggio accettato dall'automa a pila: due definizioni alternative accettazione per pila vuota: una stringa è accettata da un automa a pila M se e solo se al termine della scansione della stringa la pila è vuota N(M) = {x <q0,x,z0> *<q,ε,ε>} accettazione per stato finale: una stringa è accettata da un automa a pila M se e solo se al termine della scansione della stringa M si trova in uno stato finale L(M) = {x <q0,x,z0> *<q,ε,γ>,q F,γ Γ*} NOTA BENE. Si può dimostrare che le due definizioni sono equivalenti.
49 q0 A q0 q1 Z 0 A a b a b AA ε q0 q1 ε q1
50 Esempio. Automa a pila che riconosce wwr con w in (0+1)+ M=<{0,1},{R,Z,U},R,{q1,q2},q1,,δ> δ(q1,0,r)={<q1,zr>} δ(q1,1,r)={<q1,ur>} δ(q1,0,z)={<q1,zz>,<q2,ε>} δ(q1,0,u)={<q1,zu>} δ(q1,1,z)={<q1,uz>} δ(q1,1,u)={<q1,uu>,<q2,ε>} δ(q2,0,z)={<q2,ε>} δ(q2,1,u)={<q2,ε>} δ(q1,ε,r)={<q2,ε>} δ(q2,ε,r)={<q2,ε>}
51 Def. Automa a pila deterministico: M=<Σ,Γ,Z0,Q,q0,F,δ> è deterministico se σ Σ,Z Γ,q Q δ(q,σ,z) + δ(q,ε,z) 1 La condizione impone che 1. δ(q,σ,z) 1 2. se è definita una ε-transizione per un certo stato q e per un certo simbolo di pila Z, non deve essere definita un'altra transizione per q, Z NOTA BENE. La 2. impone che se M riconosce ε, allora è non deterministico. Si può ovviare a questa limitazione chiudendo tutte le strighe con un carattere speciale "$"
52 Automi a pila e linguaggi non contestuali Teorema. Se L(G) è non contestuale esiste un automa a pila M tale che L(G)=N(M) Dim. Sia G=<Σ,VN,P,S> tale che ε L(G) e supponiamo G in GNF. In questo caso il PDA ha un solo stato e i non terminali della grammatica possono essere usati come simboli di pila. Costruiamo M=<Σ,Γ,Z 0,Q,q 0,F,δ> Γ=VN, Z 0 =S, Q={q}, q 0 =q, F= Per ogni A aγ con γ VN* abbiamo che <q,γ> δ(q,a,a)
53 Per completare la dimostrazione dobbiamo mostrare che <q,x,s> *<q,ε,ε> se e solo se S *x (1) Dimostriamo per induzione su i che se <q,xu,s> i <q,u,α> allora S i xα i=1 se <q,xu,s> 1 <q,u,α> allora x Σ e dobbiamo avere una regola di transizione δ(q,x,s) = {<q, α>}, quindi, per costruzione, deve esistere in P una produzione S xα
54 i>1 x Σ*, x=ya, a Σ se <q,xu,s> i <q,u,α>, allora β tale che <q,yau,s> i-1 <q,au,β> 1 <q,u,α> Per ipotesi induttiva S i-1 yβ, inoltre <q,au,β> 1 <q,u,α> implica che in P esista una produzione A aη con β=aγ e α=ηγ Quindi S * yβ = yaγ yaηγ = yaα = xα
55 Vediamo ora che vale anche il viceversa (2) Dimostriamo per induzione su i che se S i xα allora <q,xu,s> i <q,u,α> i=1 se S 1 xα allora x Σ ed esiste in P una produzione S xα e quindi, per costruzione, esiste una regola di transizione δ(q,x,s) = {<q, α>} e quindi <q,xu,s> 1 <q,u,α> i>1 x Σ*, x=ya, a Σ Se S i xα allora esiste A aη in P tale che S i-1 yaγ yaηγ con x=ya e α=ηγ (derivazione sinistra). Per ipotesi induttiva <q,yv,s> i-1 <q,v,aγ>e e, in particolare, se v=au, <q,yau,s> i-1 <q,au,aγ>;
56 ma poiche' A aη allora <q,η> δ(q,a,a) <q,yau,s> i-1 <q,au,aγ> <q,u,ηγ>=<q,u,α>
57 (3) Rimuoviamo la limitazione che ε L(G). Aggiungiamo un nuovo stato q 0 iniziale definiamo la transizione δ(q 0,ε,Z 0 )=<q 0,ε> e la transizione δ(q 0,a,Z 0 )={<q,γ> <q,γ> δ(q,a,z 0 )}
58 S A B a b a b a b q SA SB ε ε q q q q A q B q
59 Possiamo anche dimostrare il risultato simmetrico. Teorema. Se un linguaggio è accettato da un automa a pila M mediante pila vuota, esiste una grammatica non contestuale G che lo genera, tale cioè che L(G) = N(M) Sia la costruzione della grammatica G a partire dal PDA M, sia la dimostrazione che L(G) = N(M) sono molto laboriosi. In sostanza si tratta di costruire una grammatica che "simula" un automa a pila. Noi non dimostreremo il risultato suddetto ma ne vedremo uno analogo successivamente, quando mostreremo come si può costruire una grammatica di Tipo 0 che "simula" una Macchina di Turing.
60 11.4 AMBIGUITA Problema fondamentale per i linguaggi di programmazione. Def. Una grammatica non contestuale G è ambigua se esiste una stringa x in L(G) derivabile con due diversi alberi di derivazione. Esempio. Data la grammatica E E+E E*E a la stringa a+a*a può essere derivata con alberi di derivazione diversi. NOTA BENE. Ci sono vari metodi per evitare l'ambiguità: introduzione di parentesi uso di notazione prefissa precedenza tra gli operatori
61 Esempio. La grammatica precedente può essere modificata in E (E+E) (E*E) a Esempio. La grammatica precedente può essere modificata in E + E E * E E a Esempio. La grammatica delle espressioni aritmetiche utilizza il concetto di precedenza e le parentesi quando le precedenze devono essere violate E E+T E-T T T T*F T/F F F (E) a
62 Def. Un linguaggio di tipo 2 è inerentemente ambiguo se tutte le grammatiche che lo generano sono ambigue. Esempio. Il linguaggio generato dalla grammatica: E E+E E*E a non è inerentemente ambiguo poichè ha una grammatica equivalente non ambigua: E a+e a*e a Esempio. Il linguaggio: {anbncm n,m 1} {ambncn n,m 1} è inerentemente ambiguo, infatti, qualunque grammatica per tale linguaggio genera le stringhe anbncn in due modi diversi.
63 NOTA BENE Il problema dell ambiguità di una grammatica e il problema della ambiguità di un linguaggio sono indecidibili.
64 Confronto tra linguaggi regolari e linguaggi non contestuali. Proprietà di chiusura. REG CF unione si si concatenazione si si stella si si intersezione si no complementazione si no Problemi di decisione. REG CF w in L? DEC DEC L=? DEC DEC L =? DEC DEC L1=L2? DEC INDEC L1 L2=? DEC INDEC
65 Linguaggi non contestuali deterministici Def. I linguaggi CF deterministici sono quelli riconosciuti da automi a pila deterministici. Perchè sono importanti i CF deterministici? I linguaggi CF possono essere analizzati in tempo lineare solo con PDA non deterministici. Se si utilizzano metodi deterministici il tempo può essere (nel caso generale) O(n3). I linguaggi di programmazione si vuole che siano analizzabili in tempo lineare (anzi, con una sola scansione) con metodi deterministici. Pertanto è necessario che i linguaggi di programmazione siano CF deterministici. NOTA BENE. Il problema della decidibilità dell'equivalenza degli automi a pila deterministici (e dei linguaggi relativi) è stato risolto positivamente dopo 40 anni.
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=
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
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
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
Forme Normali A partire da una grammatica Context-free G è sempre possibile costruire una grammatica equivalente G ovvero L(G) = L(G ) che abbiano le produzioni in forme particolari, dette forme normali.
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
Forma Normale di Chomsky
2. Eliminazione delle produzioni unitarie Forma Normale di Chomsky Una produzione si dice unitaria se è della forma A! B. Le produzioni unitarie in pratica consistono in una ridenominazione di variabili,
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
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
Linguaggio universale, riduzioni, e teorema di Rice. Linguaggio universale, riduzioni, e teorema di Rice
l linguaggio universale Il linguaggio universale L u e l insieme delle stringhe binarie che codificano una coppia (M,w) dove w L(M). Esiste una TM U, detta TM universale, tale che L u = L(U). U ha tre
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
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
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
Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini
Dispense del corso di Linguaggi di programmazione e laboratorio Linguaggi formali(versione non definitiva con diversi refusi) Francesco Sisini 04 Giugno 2014 Indice 0.1 Automi.................................
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
LINGUAGGI E GRAMMATICHE FORMALI
LINGUAGGI E GRAMMATICHE FORMALI I LINGUAGGI IN INFORMATICA Presenti in tutte le applicazioni Fondamentali nel software di sistema Paradigmatici nella teoria molti importanti problemi teorici son riconducibili
DAI NUMERI NATURALI AI NUMERI RAZIONALI
DAI NUMERI NATURALI AI NUMERI RAZIONALI 1. L insieme dei numeri naturali Nel sistema assiomatico ZF, l Assioma dell infinito stabilisce che: Esiste un insieme A, i cui elementi sono insiemi e tale che
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo
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
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
Proprieta dei Linguaggi regolari
Proprieta dei Linguaggi regolari Pumping Lemma. Ogni linguaggio regolare soddisfa il pumping lemma. Se qualcuno vi presenta un falso linguaggio regolare, l uso del pumping lemma mostrera una contraddizione.
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
LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)
LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 4 Sommario. Dimostriamo il Teorema di Completezza per il Calcolo dei Predicati del I ordine. 1. Teorema di Completezza Dimostriamo il Teorema
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.
Esercizi di Fondamenti di Informatica per la sicurezza. Stefano Ferrari
Esercizi di Fondamenti di Informatica per la sicurezza tefano Ferrari 23 dicembre 2003 2 Argomento 1 Grammatiche e linguaggi Esercizi Es. 1.1 Definiti i linguaggi: L 1 = {aa, ab, bc, c} L 2 = {1, 22, 31}
Linguaggi formali e compilatori
POLITECNICO DI MILANO Linguaggi formali e compilatori Appunti Stefano Invernizzi Anno accademico 2010-2011 Corso del prof. Angelo Morzenti Sommario Introduzione ai linguaggi... 5 Terminologia di base...
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
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
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,
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing
Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo
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
IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE.
IL TEOREMA FONDAMENTALE DELL ARITMETICA: DIMOSTRAZIONE VELOCE. PH. ELLIA Indice Introduzione 1 1. Divisori di un numero. 1 2. Il Teorema Fondamentale dell Aritmetica. 2 3. L insieme dei numeri primi è
Logica proposizionale
Logica proposizionale Proposizione: frase compiuta che è sempre o vera o falsa. Connettivi Posti in ordine di precedenza: not, and, or, implica, doppia implicazione Sintassi Le proposizioni sono costituite
Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29
Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,
9. LINGUAGGI FORMALI E GRAMMATICHE DI CHOMSKY
9. LINGUAGGI FORMALI E GRAMMATICHE DI CHOMSKY Linguaggi e informatica @ Presenti in tutte le applicazioni e in tutte le fasi di uso di un computer: linguaggi di specifica, di programmazione, di scripting
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
Introduzione ad alcuni sistemi di logica modale
Introduzione ad alcuni sistemi di logica modale Laura Porro 16 maggio 2008 1 Il calcolo proposizionale Prendiamo come primitivi i simboli del Calcolo Proposizionale (PC) tradizionale a due valori 1 : un
Linguaggi regolari e automi a stati finiti
utomi a stati finiti Gli automi a stati finiti sono usati come modello per Software per la progettazione di circuiti digitali. Analizzatori lessicali di un compilatore. Ricerca di parole chiave in un file
Linguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Precorsi di matematica
Precorsi di matematica Francesco Dinuzzo 12 settembre 2005 1 Insiemi Il concetto di base nella matematica moderna è l insieme. Un insieme è una collezione di elementi. Gli elementi di un insieme vengono
Fondamenti dell Informatica: Linguaggi Formali e Calcolabilità
Eserciziario per il corso di Verona, Settembre 24 Fondamenti dell Informatica: Linguaggi Formali e Calcolabilità Dott.ssa Isabella Mastroeni Dipartimento di Informatica Università degli Studi di Verona
ALGEBRE DI BOOLE. (d) x, y X x y oppure y x.
ALGEBRE DI BOOLE Un insieme parzialmente ordinato è una coppia ordinata (X, ) dove X è un insieme non vuoto e " " è una relazione binaria definita su X tale che (a) x X x x (riflessività) (b) x, y, X se
ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI
ALGEBRA I: ASSIOMI DI PEANO E PROPRIETÀ DEI NUMERI NATURALI 1. GLI ASSIOMI DI PEANO Come puro esercizio di stile voglio offrire una derivazione delle proprietà elementari dei numeri naturali e delle operazioni
Unità Didattica 2 I Linguaggi di Programmazione
Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche
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,
A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.
A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)
NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE
NOTE SULLE FUNZIONI CONVESSE DI UNA VARIABILE REALE ROBERTO GIAMBÒ 1. DEFINIZIONI E PRIME PROPRIETÀ In queste note saranno presentate alcune proprietà principali delle funzioni convesse di una variabile
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
Maiuscole e minuscole
Maiuscole e minuscole Abilità interessate Distinguere tra processi induttivi e processi deduttivi. Comprendere il ruolo e le caratteristiche di un sistema assiomatico. Riconoscere aspetti sintattici e
Introduciamo ora un altro campo, formato da un numero finito di elementi; il campo delle classi resto modulo n, con n numero primo.
Capitolo 3 Il campo Z n 31 Introduzione Introduciamo ora un altro campo, formato da un numero finito di elementi; il campo delle classi resto modulo n, con n numero primo 32 Le classi resto Definizione
Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi
Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive
Grafi e gruppo fondamentale di un grafo
Grafi e gruppo fondamentale di un grafo Note per il corso di Geometria IV (relative alla parte dei 6 crediti) Milano, 2010-2011, M.Dedò Come trovare un grafo omotopicamente equivalente all'oggetto 3d raffigurato
Capitolo 2 Linguaggi e Grammatiche
Università degli Studi di Bologna Scuola di Ingegneria e Architettura Capitolo 2 Linguaggi e Grammatiche Corso di Laurea Magistrale in Ingegneria Informatica Anno accademico 2014/2015 Prof. ENRICO DENTI
Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di
Automi Automi finiti: macchine a stati su sistemi di transizioni finiti Modellare con TS e specificare con automi: si usa lo stesso tipo di rappresentazione per descrivere programmi e specifiche. ω-automi:
Sviluppi e derivate delle funzioni elementari
Sviluppi e derivate delle funzioni elementari In queste pagine dimostriamo gli sviluppi del prim ordine e le formule di derivazioni delle principali funzioni elementari. Utilizzeremo le uguaglianze lim
L aritmetica degli insiemi infiniti Parte I
L aritmetica degli insiemi infiniti Parte I Stefano Baratella Versione L A TEX realizzata in collaborazione con Tullio Garbari 1 Prerequisiti La relazione di equipotenza tra insiemi. Definizione 1. Si
Insiemi, Numeri, Terminologia. Prof. Simone Sbaraglia
Insiemi, Numeri, Terminologia Prof. Simone Sbaraglia Corso Rapido di Logica Matematica La logica formale definisce le regole cui deve obbedire qualsiasi teoria deduttiva. Una proposizione e` una affermazione
TEN Radici quadrate modulo p e modulo p k. Radici quadrate modulo p, con p > 2.
TEN 2008. Radici quadrate modulo p e modulo p k. Radici quadrate modulo p, con p > 2. Lemma 1. Sia n Z. Sia p > 2 un numero primo. (a) n è un quadrato modulo p se e solo se n p 1 2 1 mod p; (b) Sia n 0
Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.
Capitolo 2 Campi 2.1 Introduzione Studiamo ora i campi. Essi sono una generalizzazione dell insieme R dei numeri reali con le operazioni di addizione e di moltiplicazione. Nel secondo paragrafo ricordiamo
La codifica digitale
La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore
Macchine di Turing: somma di due numeri
Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore
ESERCIZI SUI PUNTI DI NON DERIVABILITÀ TRATTI DA TEMI D ESAME
ESERCIZI SUI PUNTI DI NON DERIVABILITÀ TRATTI DA TEMI D ESAME a cura di Michele Scaglia FUNZIONI DERIVABILI Sia f : domf R una funzione e sia 0 domf di accumulazione per domf Chiamiamo derivata prima di
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero
IL TEOREMA DEGLI ZERI Una dimostrazione di Ezio Fornero Il teorema degli zeri è fondamentale per determinare se una funzione continua in un intervallo chiuso [ a ; b ] si annulla in almeno un punto interno
Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore
MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore
Forme bilineari simmetriche
Forme bilineari simmetriche Qui il campo dei coefficienti è sempre R Definizione 1 Sia V uno spazio vettoriale Una forma bilineare su V è una funzione b: V V R tale che v 1, v 2, v 3 V b(v 1 + v 2, v 3
Espressioni regolari descrivono i linguaggi regolari. Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari.
Espressioni regolari descrivono i linguaggi regolari Un FA (NFA o DFA) è un metodo per costruire una macchina che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo per descrivere
La macchina universale
La macchina universale Una immediata conseguenza della dimostrazione è la seguente Corollario il linguaggio L H = {M (w) M rappresenta una macchina di Turing che si ferma con input w} sull alfabeto {0,1}*
Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica
Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica Raccolti e curati da Luca Spada Indice 1 Temi 1 1.1 Logica Matematica.......................... 1 1.2
Algoritmi e Strutture Dati. HeapSort
Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene
