limbaje formale, automate si compilatoareotto/lfac2019-20/lfac5.pdf · 2019-11-09 · curs 5 1...

42
Limbaje Formale, Automate s ¸i Compilatoare Curs 5 2019-20 LFAC (2019-20) Curs 5 1 / 34

Upload: others

Post on 27-Dec-2019

30 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Limbaje Formale, Automate si Compilatoare

Curs 5

2019-20

LFAC (2019-20) Curs 5 1 / 34

Page 2: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Curs 5

1 Automatul echivalent cu o expresie regulata

Algoritm

2 Gramatici si limbaje independente de context

3 Forma redusa pentru gramatici independente de context

4 Eliminarea regulilor de stergere si a redenumirilor

LFAC (2019-20) Curs 5 2 / 34

Page 3: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata

Curs 5

1 Automatul echivalent cu o expresie regulata

Algoritm

2 Gramatici si limbaje independente de context

3 Forma redusa pentru gramatici independente de context

4 Eliminarea regulilor de stergere si a redenumirilor

LFAC (2019-20) Curs 5 3 / 34

Page 4: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Automatul echivalent cu o expresie regulata

E = E1|E2

E = E1E2

E = E∗1

LFAC (2019-20) Curs 5 4 / 34

Page 5: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Observatii

pentru orice aparitie a unui simbol din Σ, cat si pentru ǫ, daca

acesta apare explicit ın E , este nevoie de 2 stari ın automatul

construit.

fiecare din aparitiile operatorilor | si ∗ dintr-o expresie regulata E

introduce doua noi stari ın automatul construit

operatorul · nu introduce alte stari

daca n este numarul de simboluri din E iar m este numarul de

paranteze ımpreuna cu aparitiile simbolului · , atunci numarul

starilor automatului echivalent cu E este p = 2(n − m).

LFAC (2019-20) Curs 5 5 / 34

Page 6: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Algoritm

Intrare : Expresia regulata E cu n simboluri dintre care m sunt

paranteze si aparitii ale operatorului produs;

Iesire :Automatul (cu p = 2(n − m) stari) cu ǫ - tranzitii echivalent

cu E

Metoda :

1. Se construieste arborele atasat expresiei E ;

2. Se parcurge arborele ın preordine si se ataseaza nodurilor

vizitate, exceptand pe cele etichetate cu produs , respectiv

numerele 1, 2, . . . , n − m;

LFAC (2019-20) Curs 5 6 / 34

Page 7: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Exemplu

E = a|b∗ · c

LFAC (2019-20) Curs 5 7 / 34

Page 8: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

3. Se parcurge arborele ın postordine si se ataseaza fiecarui nod No pereche de numere (N.i ,N.f ) care reprezinta starea initialarespectiv finala a automatului echivalent cu expresiacorespunzatoare subarborelui cu radacina N, astfel:

Daca nodul are numarul k (de la pasul 2) atunci:

N.i = 2k − 1,N.f = 2k ;

Daca nodul este etichetat cu produs si S este fiul stang al lui N, iarD fiul drept, atunci:

N.i = S.i iar N.f = D.f

LFAC (2019-20) Curs 5 8 / 34

Page 9: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Exemplu

E = a|b∗ · c

LFAC (2019-20) Curs 5 9 / 34

Page 10: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

LFAC (2019-20) Curs 5 10 / 34

Page 11: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

Daca N este etichetat cu a (deci este frunza):

δ(N.i, a) = N.f

LFAC (2019-20) Curs 5 10 / 34

Page 12: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

Daca N este etichetat cu a (deci este frunza):

δ(N.i, a) = N.f

Daca N este etichetat cu |:δ(N.i, ǫ) = {S.i,D.i},

δ(S.f , ǫ) = N.f , δ(D.f , ǫ) = N.f

LFAC (2019-20) Curs 5 10 / 34

Page 13: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

Daca N este etichetat cu a (deci este frunza):

δ(N.i, a) = N.f

Daca N este etichetat cu |:δ(N.i, ǫ) = {S.i,D.i},

δ(S.f , ǫ) = N.f , δ(D.f , ǫ) = N.f

Daca N este etichetat cu · :δ(S.f , ǫ) = D.i

LFAC (2019-20) Curs 5 10 / 34

Page 14: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

Daca N este etichetat cu a (deci este frunza):

δ(N.i, a) = N.f

Daca N este etichetat cu |:δ(N.i, ǫ) = {S.i,D.i},

δ(S.f , ǫ) = N.f , δ(D.f , ǫ) = N.f

Daca N este etichetat cu · :δ(S.f , ǫ) = D.i

Daca N este etichetat cu ∗ (D nu exista ın acest caz):

δ(N.i, ǫ) = {S.i,N.f},

δ(S.f , ǫ) = {S.i,N.f}

LFAC (2019-20) Curs 5 10 / 34

Page 15: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

4. Se parcurge din nou arborele obtinut ın postordine.

Daca N este nodul curent iar S si D sunt fii sai, atunci, ın functie de eticheta lui N, seexecuta urmatoarele:

Daca N este etichetat cu a (deci este frunza):

δ(N.i, a) = N.f

Daca N este etichetat cu |:δ(N.i, ǫ) = {S.i,D.i},

δ(S.f , ǫ) = N.f , δ(D.f , ǫ) = N.f

Daca N este etichetat cu · :δ(S.f , ǫ) = D.i

Daca N este etichetat cu ∗ (D nu exista ın acest caz):

δ(N.i, ǫ) = {S.i,N.f},

δ(S.f , ǫ) = {S.i,N.f}

5. Starea initiala a automatului este N.i , starea finala N.f , unde N este nodul radacina;

LFAC (2019-20) Curs 5 10 / 34

Page 16: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Exemplu

E = a|b∗ · c

LFAC (2019-20) Curs 5 11 / 34

Page 17: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Exemplu

δ a b c ǫ

1 ∅ ∅ ∅ {3, 5}

2 ∅ ∅ ∅ ∅

3 4 ∅ ∅ ∅

4 ∅ ∅ ∅ {2}

5 ∅ ∅ ∅ {6, 7}

6 ∅ ∅ ∅ {9}

7 ∅ 8 ∅ ∅

8 ∅ ∅ ∅ {6, 7}

9 ∅ ∅ 10 ∅

10 ∅ ∅ ∅ {2}

LFAC (2019-20) Curs 5 12 / 34

Page 18: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Automatul echivalent cu o expresie regulata Algoritm

Corectitudinea algoritmului

Teorema 1

Algoritmul descris este corect: automatul cu ǫ - tranzitii obtinut este

echivalent cu expresia regulata E.

Demonstratie:

Modul ın care au fost alese perechile (i , f ) de stari pentru fiecare

nod al arborelui construit corespunde constructiilor din teorema 2.

Deasemenea, tranzitiile care se definesc ın pasul 5 al algoritmului

urmaresc constructia din teorema 1.

Automatul obtinut este echivalent cu expresia data la intrare.

LFAC (2019-20) Curs 5 13 / 34

Page 19: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Curs 5

1 Automatul echivalent cu o expresie regulata

Algoritm

2 Gramatici si limbaje independente de context

3 Forma redusa pentru gramatici independente de context

4 Eliminarea regulilor de stergere si a redenumirilor

LFAC (2019-20) Curs 5 14 / 34

Page 20: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Gramatici independente de context

Gramatici de tip 2 (independente de context): G = (N,T ,S,P)

N si T sunt multimi nevide, finite, disjuncte de neterminali(variabile), respectiv terminaliS ∈ N este simbolul de startP = {x → u|x ∈ N,u ∈ (N ∪ T )∗} este multimea regulilor(productiilor).

Un limbaj L este de tip 2 (independent de context: L ∈ L2) daca

exista o gramatica G de tip 2 astfel ıncat L(G) = L

LFAC (2019-20) Curs 5 15 / 34

Page 21: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Derivari extrem stangi/drepte

Fie G = (N,T ,S,P) si w ∈ L(G)

derivare extrem stanga pentru w : derivarea ın care, la orice pas

se ınlocuieste cel mai din stanga neterminal din cuvantul obtinut

derivare extrem dreapta pentru w : derivarea ın care, la orice pas

se ınlocuieste cel mai din dreapta neterminal din cuvantul obtinut

LFAC (2019-20) Curs 5 16 / 34

Page 22: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Exemplu

G = ({E}, {a, b,+, ∗), (},E ,P) unde:

P : E → E + E |E ∗ E |(E)|a|b

Fie a + (b ∗ a)

Derivare extrem stanga:

E ⇒ E+E ⇒ a+E ⇒ a+(E) ⇒ a+(E∗E) ⇒ a+(b∗E) ⇒ a+(b∗a)

Derivare extrem dreapta:

E ⇒ E + E ⇒ E + (E) ⇒ E + (E ∗ E) ⇒ E + (E ∗ a) ⇒

E + (b ∗ a) ⇒ a + (b ∗ a)

Exista derivari care nu sunt nici extrem drepte nici extrem stangi!

LFAC (2019-20) Curs 5 17 / 34

Page 23: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Arbori sintactici

Definitie 1

Un arbore sintactic (arbore de derivare, arbore de parsare) ın

gramatica G este un arbore ordonat, etichetat, cu urmatoarele

proprietati:

radacina arborelui este etichetata cu S ;

fiecare frunza este etichetata cu un simbol din T sau cu ǫ ;

fiecare nod interior este etichetat cu un neterminal;

daca A eticheteaza un nod interior care are n succesori etichetati

de la stanga la dreapta respectiv cu X1, X2,..., Xn, atunci

A → X1X2 . . .Xn este o regula.

Daca A are un succesor etichetat cu ǫ (pentru regula A → ǫ),

nodul etichetat cu A nu mai are alti succesori.LFAC (2019-20) Curs 5 18 / 34

Page 24: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Arbori sintactici

Definitie 2

Frontiera unui arbore de derivare este cuvantul w = a1a2 . . . an

unde ai , 1 ≤ i ≤ n sunt etichetele nodurilor frunza ın ordinea de la

stanga la dreapta.

Arbore de derivare pentru un cuvant w: arbore de derivare cu

frontiera w.

LFAC (2019-20) Curs 5 19 / 34

Page 25: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Exemplu

G = ({E}, {a, b,+, ∗), (},E ,P) unde:

P : E → E + E |E ∗ E |(E)|a|b

a + (b ∗ a)

Derivare extrem stanga:

E ⇒ E + E ⇒ a + E ⇒ a + (E) ⇒

a + (E ∗ E) ⇒ a + (b ∗ E) ⇒ a + (b ∗ a)

Derivare extrem dreapta:

E ⇒ E + E ⇒ E + (E) ⇒ E + (E ∗ E) ⇒

E + (E ∗ a) ⇒ E + (b ∗ a) ⇒ a + (b ∗ a)

Arbore de derivare pentru

a + (b ∗ a):

LFAC (2019-20) Curs 5 20 / 34

Page 26: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Ambiguitate

Definitie 3

O gramatica G este ambigua daca exista un cuvant w ın L(G) care are

2 arbori de derivare distincti.

Echivalent: w are 2 derivari extrem stangi(drepte) distincte.

LFAC (2019-20) Curs 5 21 / 34

Page 27: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Ambiguitate

Definitie 3

O gramatica G este ambigua daca exista un cuvant w ın L(G) care are

2 arbori de derivare distincti.

Echivalent: w are 2 derivari extrem stangi(drepte) distincte.

Gramatica precedenta este ambigua: cuvantul a + b ∗ a are 2 arbori de

derivare:

LFAC (2019-20) Curs 5 21 / 34

Page 28: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Ambiguitate

Definitie 3

O gramatica G este ambigua daca exista un cuvant w ın L(G) care are

2 arbori de derivare distincti.

Echivalent: w are 2 derivari extrem stangi(drepte) distincte.

Problema ambiguitatii gramaticilor de tip 2 este nedecidabila: nu

exista un algoritm care pentru o gramatica oarecare G sa testeze

daca G este sau nu ambigua

LFAC (2019-20) Curs 5 21 / 34

Page 29: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Gramatici si limbaje independente de context

Exemplu: o gramatica echivalenta neambigua

G = ({E ,T ,F}, {a, b,+, ∗), (},E ,P) unde P:

E → E + T

E → T

T → T ∗ F

T → F

F → (E)

F → a|b

Arbore de derivare pentru

a + b ∗ a:

LFAC (2019-20) Curs 5 22 / 34

Page 30: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Curs 5

1 Automatul echivalent cu o expresie regulata

Algoritm

2 Gramatici si limbaje independente de context

3 Forma redusa pentru gramatici independente de context

4 Eliminarea regulilor de stergere si a redenumirilor

LFAC (2019-20) Curs 5 23 / 34

Page 31: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Simboluri inutile

Un simbol X din N ∪ T este accesibil daca exista o derivare de

forma S ⇒+ αXβ

Un simbol A din N este productiv daca exista o derivare de forma

A ⇒+ w ,w ∈ T ∗

Un simbol este inutil daca este inaccesibil sau neproductiv

LFAC (2019-20) Curs 5 24 / 34

Page 32: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Gramatici ın forma redusa

Definitie 4

O gramatica este ın forma redusa, daca nu contine simboluri inutile.

Orice limbaj independent de context poate fi generat de o

gramatica ın forma redusa.

LFAC (2019-20) Curs 5 25 / 34

Page 33: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Eliminarea simbolurilor inutile

Pentru orice gramatica independenta de context G exista o

gramatica G′ de acelasi tip ın forma redusa echivalenta cu G.

Pentru eliminarea simbolurilor inutile:

Se determina si apoi se elimina simbolurile neproductive si toateregulile ce contin macar unul dintre acestea.

Se determina apoi se elimina simbolurile inaccesibile si toateregulile aferente.

LFAC (2019-20) Curs 5 26 / 34

Page 34: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Eliminarea simbolurilor neproductive - algoritm

Intrare: G = (N,T ,S,P)

Iesire: G′ = (N ′,T ,S,P′), L(G′) = L(G), N ′ contine doar simboluri productive

N0 = ∅; i = 0;

do {

i = i + 1;

Ni = Ni−1 ∪ {A|A → α ∈ P, α ∈ (Ni−1 ∪ T )∗};

} while Ni 6= Ni−1;

N ′ = Ni ;

P′ = {A → α ∈ P|A ∈ N ′, α ∈ (N ′ ∪ T )∗};

Un simbol A este productiv ddaca A ∈ N ′

Consecinta: L(G) 6= ∅ ddaca S ∈ N ′

LFAC (2019-20) Curs 5 27 / 34

Page 35: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Exemplu

G = ({S,A,B,C}, {a, b, c},S,P), unde P este:

S → a|aA|bC

A → aAB

B → bac

C → aSb

Gramatica G′ cu toate simbolurile productive:

G′ = ({S,B,C}, {a, b, c},S,P ′), unde P ′ este:

S → a|bC

B → bac

C → aSb

LFAC (2019-20) Curs 5 28 / 34

Page 36: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Eliminarea simbolurilor inaccesibile

Intrare: G = (N,T ,S,P)

Iesire: G′ = (N ′,T ′,S,P′), L(G′) = L(G), N ′,T ′ contin doar simboluri accesibile

V0 = {S}; i = 0;

do {

i = i + 1;

Vi = Vi−1 ∪ {X |X ∈ N ∪ T , ∃A → αXβ ∈ P,A ∈ (Vi−1 ∩ N)};

} while Vi 6= Vi−1;

N ′ = Vi ∩ N;

T ′ = Vi ∩ T ;

P′ = {A → α ∈ P|A ∈ N ′, α ∈ (N ′ ∪ T ′)∗};

X accesibil ddaca X ∈ Vi

LFAC (2019-20) Curs 5 29 / 34

Page 37: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Forma redusa pentru gramatici independente de context

Exemplu

G = ({S,A,B,C}, {a, b, c},S,P), unde P este:

S → a|aA|bC

A → aAB

B → bac

C → aSb

Eliminarea simbolurilor neproductive duce la:

G′ = ({S,B,C}, {a, b, c},S, {S → a|bC,B → bac,C → aSb})

Eliminarea simbolurilor inaccesibile duce la:

G′ = ({S,C}, {a, b},S, {S → a|bC,C → aSb})

Ce se ıntampla daca se aplica algoritmii ın ordinea inversa?

LFAC (2019-20) Curs 5 30 / 34

Page 38: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Eliminarea regulilor de stergere si a redenumirilor

Curs 5

1 Automatul echivalent cu o expresie regulata

Algoritm

2 Gramatici si limbaje independente de context

3 Forma redusa pentru gramatici independente de context

4 Eliminarea regulilor de stergere si a redenumirilor

LFAC (2019-20) Curs 5 31 / 34

Page 39: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Eliminarea regulilor de stergere si a redenumirilor

Eliminarea regulilor de stergere

Intrare: G = (N,T ,S,P)

Iesire: G′ = (N,T ,S,P′), L(G′) = L(G), P′ nu contine reguli de stergere

(reguli de forma A → ǫ)

N0 = {A|A ∈ N, A → ǫ ∈ P}; i = 0;

do {

i = i + 1;

Ni = Ni−1 ∪ {X |X ∈ N, ∃X → α ∈ P, α ∈ N∗

i−1};

} while Ni 6= Ni−1;

Nǫ = Ni ;

LFAC (2019-20) Curs 5 32 / 34

Page 40: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Eliminarea regulilor de stergere si a redenumirilor

Eliminarea regulilor de stergere

Intrare: G = (N,T ,S,P)

Iesire: G′ = (N,T ,S,P′), L(G′) = L(G), P′ nu contine reguli de stergere

(reguli de forma A → ǫ)

N0 = {A|A ∈ N, A → ǫ ∈ P}; i = 0;

do {

i = i + 1;

Ni = Ni−1 ∪ {X |X ∈ N, ∃X → α ∈ P, α ∈ N∗

i−1};

} while Ni 6= Ni−1;

Nǫ = Ni ;

Are loc:

N0 ⊆ N1 . . . ⊆ Ni ⊆ Ni+1 ⊆ . . .Nǫ ⊆ N

A ∈ Nǫ ⇐⇒ A⇒+ǫ

LFAC (2019-20) Curs 5 32 / 34

Page 41: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Eliminarea regulilor de stergere si a redenumirilor

Eliminarea regulilor de stergere

P ′ se obtine din P astfel:

ın fiecare regula A → α ∈ P se pun ın evidenta simbolurile din Nǫ

ce apar ın α:

α = α1X1α2X2 . . . αnXnαn+1, Xi ∈ Nǫ

se ınlocuieste fiecare regula de acest fel cu multimea de reguli de

forma

A → α1Y1α2Y2 . . . αnYnαn+1 unde Yi = Xi sau Yi = ǫ

ın toate modurile posibile (2n)

se elimina toate regulile de stergere

pentru a obtine cuvantul nul (daca S este ın Nǫ) se adauga S′

simbol de start nou si regulile S′ → S, S′ → ǫ

LFAC (2019-20) Curs 5 33 / 34

Page 42: Limbaje Formale, Automate si Compilatoareotto/LFAC2019-20/lfac5.pdf · 2019-11-09 · Curs 5 1 Automatul echivalent cu o expresie regulata˘ Algoritm 2 Gramatici s¸i limbaje independente

Eliminarea regulilor de stergere si a redenumirilor

Exemplu

G = ({S,A,B,C}, {a, b, c},S,P), unde P:

S → aAbC|BC

A → aA|aB

B → bB|C

C → cC|ǫ

G′ = ({S′,S,A,B,C}, {a, b, c},S′,P′) unde P′:

S′ → S|ǫ

S → aAbC|aAb|B|C

A → aA|aB|a

B → bB|b|C

C → cC|c

LFAC (2019-20) Curs 5 34 / 34