Sunteți pe pagina 1din 3

Transformari echivalente ale gramaticilor independente de context

-exemple-

I. Sa se elimine simbolurile (neterminale) neproductive din gramatica

G = ({S, A, B, C, D, H} , {a, b, c, d} , P, S)
P : S → aABb | aAb
A → aA | cC | a
B → aB | bB
D → dA | dH
H → bB | bH | b

1. Construirea multimii N 0 a neterminalelor productive [Iterativ, pana la obtinerea a doua multimi consecutive
Ni−1 , Ni egale. Ultima multime calculata constituie multimea cautata a neterminalelor productive. Initializare -
N0 = . La pasul i(i > 0), Ni se obtine reunind Ni−1 cu multimea tuturor neterminalelor pentru care exista cel
putin o productie a carei parte dreapta e o secventa peste multimea Ni−1 ∪ Σ (in particular secventa vida ).]

N0 =
N1 = {A, H}
N2 = {A, H, S, D}
N3 = {A, H, S, D}
N3 = N2 ⇒ N 0 = N3 = {A, H, S, D}

2. Gramatica rezultata in urma eliminarii simbolurilor neproductive [N 0 e multimea calculata la pct. 1;


alfabetul Σ ramane acelasi; din multimea productiilor se elimina toate regulile care contin in stanga sau dreapta
simboluri neterminale eliminate; simbolul de start ramane acelasi (in cazul in care el apartine multimii N 0 , altfel
limbajul generat de gramatica initiala e vid).]

G0 = (N 0 , Σ, P 0 , S)
N 0 = {S, A, D, H}
Σ = {a, b, c, d}
0
P : S → aAb (prima productie a lui S a fost eliminata, intrucat continea neterminalul eliminat B)
A → aA | a (a doua productie a lui A a fost elimata intrucat continea neterminalul neproductiv C)
D → dA | dH
H → bH | b (prima productie a lui H eliminata, toate productiile lui B eliminate)

II. Sa se elimine simbolurile inaccesibile din gramatica

G = ({S, A, D, H} , {a, b, c, d} , P, S)
P : S → aAb
A → aA | a
D → dA | dH
H → bH | b

1
1. Construirea multimii V 0 a simbolurilor accesibile [Iterativ, pana la obtinerea a doua multimi consecutive
Vi−1 , Vi egale. Ultima multime calculata constituie multimea cautata a simbolurilor accesibile. Initializare - V0 =
{S}. La pasul i(i > 0), Vi se obtine reunind Vi−1 cu multimea tuturor simbolurilor care compun partile drepte ale
productiilor neterminalelor din Vi−1 .]
V0 = {S}
V1 = {S, a, A, b}
V2 = {S, a, A, b}
V2 = V1 ⇒ V 0 = V2 = {S, A, a, b}

2. Gramatica rezultata in urma eliminarii simbolurilor inaccesibile [Din gramatica initiala raman doar neter-
minalele accesibile, terminalele accesibile si productiile neterminalelor accesibile; simbolul de start ramane acelasi.]

G0 = (N 0 , Σ0 , P 0 , S)
N 0 = N ∩ V 0 = {S, A}
Σ0 = Σ ∩ V 0 = {a, b}
P 0 : S → aAb
A → aA | a

III. Sa se transforme gramatica urmatoare intr-una echivalenta -free.


G = ({S, A, B} , {0, 1} , P, S)
P : S → A1
A → BAB | BB
B→0|
1. Construirea multimii N (a tuturor neterminalelor din care, prin derivari succesive, se poate obtine
secventa vida) [N0 contine toate neterminalele pentru care exista -productie. Ni (i > 0) se obtine reunind Ni−1 cu
multimea neterminalelor pentru care exista cel putin o productie a carei parte dreapta e o secventa peste multimea
Ni−1 .]
N0 = {B}
N1 = {B, A}
N3 = {B, A}
N3 = N2 ⇒ N = {A, B}

2. Gramatica rezultata prin eliminarea −productiilor [Productiile noii gramatici se obtin pornind de la vechile
productii, prin eliminarea simbolurilor din N din partile drepte ale acestora, in toate combinatiile posibile, fara a
mai adauga -productii.]
G = (N 0 , Σ, P 0 , S)
N 0 = N = {S, A, B} (deoarece S ∈
/ N)
Σ = {0, 1}
P : S → A1 | 1
A → BAB | BA | AB | BB| B | A
B→0

IV. Sa se transforme gramatica urmatoare intr-una echivalenta -free.


G = ({S} , {a, b} , P, S)
0
P : S → aSbS | bSaS | 

2
1. Construirea multimii N

N0 = {S}
N1 = {S}
N1 = N0 ⇒ N = N1 = {S}

2. Gramatica rezultata prin eliminarea −productiilor

G = (N 0 , Σ, P 0 , S)
N 0 = N ∪ {S 0 } = {S 0 , S} (deoarece S ∈ N )
Σ = {a, b}
P 0 : S0 → S | 
S → aSbS | aSb | abS | ab |bSaS | bSa | baS | ba

V. Sa se elimine productiile singulare (redenumirile) din gramatica

G = ({E, T, F } , {a, +, ∗, (, )} , P, E)
P :E →E+T |T
T →T ∗F |F
F → (E) | a

1. Construirea multimilor NE , NT , NF
• N0E = {E}; N1E = {E, T }; N2E = {E, T, F }; N3E = {E, T, F }; ⇒ NE = N3E = {E, T, F }
• N0T = {T }; N1T = {T, F }; N2T = {T, F }; ⇒ NT = N2T = {T, F }
• N0F = {F }; N1F = {F }; ⇒ NF = N1F = {F }

2. Gramatica rezultata prin eliminarea redenumirilor

G = (N, Σ, P 0 , E)
N = {E, T, F }
Σ = {a, +, ∗, (, )}
0
P : E → E + T | T ∗ F | (E) | a
T → T ∗ F | (E) | a
F → (E) | a

S-ar putea să vă placă și