Documente Academic
Documente Profesional
Documente Cultură
CAPITOLUL 4
4.0.Introducere
tor limbaje este extrem de limitata in multe sensuri. Exista schir limbaje
vom introduce alte modele care au exprevitate mai mare decat acelea pe
care le-am studiat pana acum. Initial ne vom axa pe gramaticile inde-
gramaticale utile acestui studiu. Vom considera fiecare nivel din ierarhia
206
timp Chomsky si-a dezvoltat modelele si aparent independent Backus a in-
Aceasta metoda larg folosita a ramas cunoscuta sub numele de Bachus Nor-
mal Form sau sub numele de Backus-Naur Form - BNF in ambele cazuri si
de numerare care se pot extinde fara limita, dar care sunt restrictionate
dea principala a acestui capitol ii este deja familiara. Oricum vom dezvolta
207
permite sa intelegem limitele acestui mecanism cat si solidaritatea lor.
Definitia 4.1.1.
turala de limbaj”
208
”generarea” secventelor limbajului asociat.
Definitia 4.1.2.
x * y.
zero pasi. Deoarece partea stanga a unei productii contine cel putin un
si cazul in care nu mai putem face retranscrieri, desi mai avem nedetermi-
Definitia 4.1.3.
209
aplicand rescrierea pana cand nu mai raman meta-simboluri, iar multimea
determinat.
daca este printre secventele descrise prin reguli pecare gramatica le asigura
tarziu.
Exemplul 4.1.1.
ab aabb aaabbb
210
oricate ori, pentru fiecare n = 1avem S a n bn . Deci
L (G)= {a n bn | n = 1}.
acest mecanism are capacitatea de a descrie usor limbaje care nu sunt regu-
late. Mai tarziu in acest capitol vom arata ca toate limbajele regulate pot fi
descrise de gramatici simple, astfel incat avem intr-adevar mijloace mai ex-
presive de descriere a limbajelor decat cele din Partea I. Cand avem cateva
poate fi folosita in mod repetat pentru a scrie mai multe alternative pentru
tura lor si clasificam gramaticile dupa forma cea mai generala a producti-
Definitia 4.1.4.
211
text. Aceasta conditie este cea mai restrictiva care se poate pune asupra
Exemplu 4.1.2.
productiile sunt:
S 0S 0 | T
T e| 1T 0
ducand la
212
Deci pentru orice p, q = 0,S 0p 1q 0p+ q si aceste secvente constitue
L(G).
Exemplu 4.1.3.
S e| 0T
T 1T | S
aceste posibilitati.
S e L (G).
213
Presupunem ca o derivare il retranscrie o singura data pe S prin T.
... 01p 01q T 01p 01q S 01p 01q L (G) ,p,q= 0. etc
Nu vom urma detaliile formale ale analizei prin inductie a acestor derivari,
Teorema 4.1.1.
supunem ca w = 1 2
... k
, unde k= 1si i
(V ), 1 = i = k si
si i
x i
, pentru i =1 , 2, ...k .
Demonstratie.
w = x , deci luam xi = i
, 1 =i=k .
Etapa de demonstrare :
214
Presupunem ca rezultatul are loc pentru toate derivarile de n = 0pasi
1 2
... m- 1 1 2
... p m +1 m +2
... k
. Ipoteza inductiei se aplica acum pen-
astfel incat i
x i
pentru i =1 , 2, ...m - 1,m +1 , ...k si i
y i
, pentru
x m = y1 y2 ...y p si m 1 2
... p
x m
si inductia este extinsa.
Exemplul 4.1.4.
215
S aSB aaSBB aaSbBB,
plele anterioare deoarece pot aparea mai multe nedeterminale intr-un pas
al unei derivari si fiacare din ele poate fi selectata pentru retranscrieri ulte-
tiale precum aaSBB putem considera derivari ulterioare ale fiecarui simbol
verifica daca toate acestea secvente si numai ele pot fi derivate din gramat-
ica.
216
partam complicatiile procedeului de derivare. In Partea I am vazut ca se
context.
sau neproductiv.
. Dupa cum vom vedea mai tarziu, unele demonstratii vor fi mai usoare
Exemplul 4.1.5.
217
{S, A, B, C} , axioma S si productiile
S bb | aB
a | Aa
bB | Ba | AB
ba | aA | Bb | aCb
B este neproductiv, deoarece ori de cate ori este introdus intr-o derivare,
Teorema 4.1.2.
Demonstratie.
218
Prima data definim inductiv o serie de multimi de neterminale ale lui
Demonstratia afirmatiei
x V 0
si deci x V . Daca toate neterminalele cu n sau mai putini pasi
printr-o derivare cu n sau mai putini pasi. Deci din ipoteza inductiei,
219
i
V . Atunci fiecare astfel de neterminal trebuie sa apartina uneia din
deci x V .
V1 ... V i
V i +1
... . Deoarece multimea termenilor este finita, aceste
egalitatea Vk = Vk +1 implica
Vk +2 = Vk +1 {x V | x w P si w ( Vk +1 )* } =
= Vk {x V | x w P si w ( Vk )* } =
= Vk +1
220
N- 1
V = Vi = VN - 1 . Desi nu am dat o formulare explicita, ar trebui sa
i=0
fie clar ca am dezvoltat pasii esentiali ai unui algoritm care sa simplifice
gramatica G.
Teorema 4.1.3.
cesibile:
Demonstratie.
pentru i = 0, R i+1 = R i {t (V ) |, x R i
si a, ß (V )* cu
x a ß P} .
8 8
Fie V = Ri nV , Ri n si P acele productii ale lui P
i =0 i=0
care contin numai simboluri din V .
Afirmatia 1.
Demonstratie.
221
inductie dupa cel mai mic index i astfel incat s R i
. Pentru i=0, acest
lucru este adevarat in mod trivial. Daca toate simbolurile lui R n sunt
accesibile si s R n +1
, atunci avem fie s R n
si deci s e accesibila, fie
exista x R n
si aß (V ) * ,cu x atß P . Dar in ultimul caz,
deoarece x R n
,x este accesibil si deci S w 1
×w2 w 1
aßw 2
si s ese
accesibil.
se face prin inductie in raport cu lungimea celei mai scurte derivari prin
Afirmatia 2.
minale neproductive in G.
Demonstratie.
Afirmatia 3. L (G )= L (G)
Demonstratie.
222
Aceasta completeaza demonstratia teoremei.
R0 R 1
R 2
... R i
R i +1
... . De aici analiza pe care am facut-o
Exemplul 4.1.6.
S bb | aB
A a | Aa
B bB | Ba | AB
Cba | aA | Bb | aCb .
223
decat gramatica originala.
Daca aceste doua simplificari sunt facute in ordine inversa este posibil
pendentedecontext.
limbajului. Aceasta structura este vitala pentru multe aplicatii ale acestui
urma unei derivari, derivarea contine in mod normal mai multe informatii
224
decat este necesar. Deci putem face intelegerea gramaticilor independente
de context prin adoptarea unui punct de vedere abstract care ignora de-
secventa derivata.
4.2.1.
derivare A 1 2
... k
w , A v si i
(V ), 1 = i = k , exista un
inductiv astfel:
o intuitie puternica pentru aceasta idee. De fapt este usor de inteles. Vom
o vom dezvolta.
Exemplul 4.2.1.
productiile S aSB | e, B bB | e .
225
Pentru aceasta gramatica, derivarea S aSB aaSBB aaSBbB
Figura 4.1.
Fiecare din cei trei pasi ai derivarii corespund unui nod neterminal al
frontiera arborelui .
maniera intuitiva cat si succinta, dar este vital pentru cititot sa se acomod-
226
eze cu acest concept. Fiecare derivare are un arbore de derivare corespun-
unui nod din care porneste un subarbore sunt acelea asociate cu simbolurile
zatoare.
tia care s-a eliminat este neesentiala pentru scopul determinarii secven-
liniare, ne vom referi la derivarea cea mai de stanga - aceasta sunt derivari
acest fel inlocuim inlaturarea ordinii neesentiale din aceste descrieri prin
diferiti.
Intr-o derivare A 1 2
... k
w , dupa cum am vazut in Teorema 4.1.1,
227
retranscrierea fiecarui i
se face independent de celelalte. Oridinea acestor
lui i
,1 = i = k . Retranscrierile se fac intr-o anumita ordine si acest lucru
prietati:
Teorema 4.2.1.
si consideram derivarea A 1 2
... k
x , unde i
V (1 = i =
Demonstratie.
t este arborele
228
Figura 4.2.
tilor. Exista doua strategii uzuale de a are a anumitor lucruri despre gra-
folositoare.
Definitia 4.2.2.
229
L (G) cu doi arbori de derivare distincti (sau echivalent, cu doua derivari
de stanga diferite).
Exemplul 4.2.2.
matica admite doua derivari care duc la acelasi rezultat, dar acestea au
si
230
Figura 4.3.
si
Figura 4.4.
secvente cu doi arbori de derivare poate fi dificil. Unul din rezultatele din
231
Pe de alta parte, daca am determinat ca o gramatica nu este ambigua,
ambigua, cat si una care nu este ambigua putem acelasi limbaj. Vom ilustra
Exemplul 4.2.3.
232
doua derivari diferite pentru aceleasi secventa si deci gramatica G nu este
ambigua.
supune ca astfel de limnaje sunt anormale, dar din nefericire aceste lim-
tui cuvint are legatura cu intelesul lui, in particular alocarea mai multor
mai apropiata decat pare cu intelesul informal. Ideea este ca pentru limba-
233
mare fac tot posibilul sa evite ambiguitatea, exemplele din limbajele larg
gramare care a folosit pentru prima data BNF. Vom discuta un exemplu
10FORMAT ( X 3H )=( I 6)
instructiunea
un intreg, indica faptul ca trebuie sa apara n spatii, iar daca n este omis,
234
De asemenea, separatorul ’,’ este optional pentru acele argumente a caror
10FORMAT ( X 3H )=( I 6)
identificator de variabila valid si deci (I6) este o expresie valida. Din nou
235
Nu vom analiza amanuntit a treia interpretare valida, deoarece am arata
limbajului.
vom niciodata determina daca acaesta proprietaea este adevarata sau nu.
context.
236
Anumite caracteristici tehnice ale gramaticilor pot deranja in anumite
Definitia 4.3.1.
maticii. In contextul analizei de mai tarziu ele pot introduce un grad mai
stergere pot avea un efect enorm asupra puterii descritive. Oricum, pentru
start are lungimea 1, fara reguli de stergere secventa mai scurta e nu poate
Teorema 4.3.1.
237
parazite.
Demonstratie.
minam mai intai toate neterminalele care pot fi sterse. Definim inductiv:
E 1 = {A V | A e P } si pentru i = 1,
8
E i+1 = E i {A V | A a P si a E * }. Atunci E = E i si
i
i=1
G =( V, ,P,S ), unde P se determina din P dupa cum urmeaza:
A a 1
a 2 ...a k P, unde a 1 a 2 ...a k = e si avem fi a i = i
,fie a i = e cu
i
E (1 = i = k ).
uninile: E 1 E 2
E 3
... Neterminalele din E k sunt acelea cu o derivare
de stergere al carei arbore de derivare are inaltimea mai mica sau egala cu
238
Afirmatia 1.
acestea.
Demonstratie.
Afirmatia 2
Demonstratie.
stergere sunt omise, si pot lipsi simboluri care pot fi sterse cu P Astfel orice
L (G ) -{e} .
239
(n+1)-lea pas de derivare din P , A 1 2
... k
x . Din Teorema 4.1.1,
x = x 1 ,x 2 ...x k si i
x i
(1 = i = k ). Daca x i = e din ipoteza induxtiei
i
x i
si daca x i = e, atunci avem in P o productie corspunzatoare lui
A 1 2
... k
, in care este omis i
. Deci inductia este extinsa si Afrimatia
2 este demonstrata.
Exemplul 4.3.1.
240
e nevoie demonstratia de mai sus. De exemplu, derivarea din G:
S abS abab
Definitia 4.3.2.
neterminale
le includ pe acelea pentru neterminalul din dreapta. Desi acest lucru com-
Teorema 4.3.2.
Demonstratie.
241
care executa o ” atuncare cu privirea” simulata spre rezultatul unei serii
Afrimatie. L ( G)= L (G )
Demonstratie.
G, sa zicem S w 1
Aw 2 w 1
Bw 2 x = x 1 x 2 x3 . Din Teorema 4.1.1
avem ca wi x i
, penrtru i=1, 3 si B x 2
. Consideram acum derivarea
B x 2
* . Deoarece x2 V , aceasta derivare trebuie sa contina cel
Z a x 2
, unde C, ...Z V si a V . Dar atunci, deoarece A Z
si Z a P , A a P . De aceea S w 1
Aw 3 w 1
aw 3 .Alte
Putem repeta procesul pentru toate productiile singulare din G iar gra-
242
matica rezultata este cea dorita. Se observa ca daca initial G nu contine
Exemplul 4.3.2.
gramatica
A aA | B, B bB | C ; C cC | e
A aA | bB | cC | e, B bB | cC | e, C cC | e.
rema justifica faptul ca sunt suficiente doar doua forme foarte restranse ale
Definitia 4.3.3.
Teorema 4.3.3.
Demonstratie.
243
Demonstratia se face printr-o constructie care arata cum se transforma
Pasul 1.
Pasul 1A.
X P .
Pasul 1B.
inlocuim apoi fiecare productie din P al carei membru drept contine unul
sau mai multe terminale prin productii din P obtinute prin inlocuirea cu
toate productiile al caror membru drept are lungimea mai mare sau egala
Pasul 2.
244
eliminam productiile al caror membru drept de lungimea mai mare sau
egala cu 2.
Pasul 2A.
Pentru o productie A B 1
B 2 ...B k P cu k> 2si Bi V (1 =
C B 2
...B k . Deoarece C nu mai apare in alt loc in gramatica, aceste doua
a fost eliminata.
Pasul 2B.
initiala.
Exemplul 4.3.3.
sin Exemplul 4.1.2. Se observa ca poate exista o modalitate mai buna prin
245
obtinuta la forma normaqla a lui Chomsky.
S aSb | aB | aS | a, B bB | b
gramatica G2 cu productiile:
S X a
Sb | X a B | X a
S | a, B X b
B | b, X a
a, X b
b.
S X a
C|X a
B|X a
S | a, B X b
B | b, X a
a, C SB.
Dupa cum se observa din exemplul anterior, forma normala a lui Chom-
sky desi simpla in principiu, introduce mai multe neterminale si mal multe
sa fie mai putin clara decat gramatica initiala. Oricum, aceasta forma este
246
a lui Chomsky poate fi determinata mecanic si este garantat faptul ca
Definitia 4.4.1.
alta parte.
247
partea dreapta a fiecarei productii si neterminalul trebuie sa fie cel mai din
avem.
Exemplul 4.4.1.
numar arbitrar de 0 -uri care preced un numar arbitrar de ’1’ care pot fi
Teorema 4.4.1.
cu L=L(G).
Demonstratie.
248
t} {s e | s R} . Aceasta gramatica este liniara-dreapta. Masi
intrare x = 1
, 2
... n
( i
, 1 =i=n ) cu tranzitiile d(s 0 , )=
s0 s
1 1 1 2 2
s ... 1 2
... n
s n in G si reciproc. Mai mult, sn R
Corolarul 4.4.2.
Demonstratie.
Exemplul 4.4.2.
Pornind de la DFA-ul A=
Figura 4.5
249
gramatica
q0 0q0 | 1q1 | e
q1 1q1 | 0q2 | e 4
q2 0q2 | 1q2 .
la
q0 0q0 | 1q2 | e
q1 1q1 | e .
Mai mult, constructia este reversibila efectiv - vom vedea ca putem porni
Lema 4.4.3.
A x P are len ( x ) = 1.
Demonstratie.
250
( e poate sa apartina unui limbaj regulat). Pentru A a P cu len (a ) > 2
gramaticii.
Exemplul 4.4.3.
A aX 1
| aY 1 , x 1 bA , Y1 bB , B aZ 1
| b, Z 1 aZ 2
,Z 2
aB .
Teorema 4.4.4.
Demonstratie.
{e} . Apoi definim un e-NFA A care accepta L(G) dupa cum urmeaza.
aceea L(A)=L(G).
Exemplul 4.4.4.
251
Pentru gramatica G din Exemplul 4.4.3, constructia din demonstratia
Figura 4.6.
pentru unul din pasii sau atomici, ea ”produce” unul din simbolurile de la
intrare. Vom vedea mai tarziu ca aceasta dualitate persista pentru modele
252
refera la o gramatica independenta de context care este fie liniar-stanga fie
tarile sale pentru modele formale ale limbajelor naturale. Dar exact acelasi
253
programare este acela ca vom avea un arbore de derivare disponibil pen-
structurii acestuia.
254
Incepeem prin recapitularea unor lucruri de baza despre sintaxa expresi-
face acest lucru este sa scriem parantezele. Dar pentru expresii care sunt
mai complicate, forma numai cu paranteze este greu de scris si mai greu
mai mare sa fie efectuate inaintea celor de precedenta mai mica, indifer-
Vom folosi numai operatori numerici de baza din Figura 4.5.1 plus op-
255
Figura 4.5.1.
ciat unei expresii”. Un arbore asociat unei expresii este un arbore orientat,
ce desrie argumentul sau si operatiile binare au cate un nod fin stang si unul
256
presiilor si constituie fiecare argument al operatiei. De exemplu, expresia
Figura 4.5.2
tiale asupra ordinii operatiilor. Dupa cum sugereaza exemplul din Figura
lui care are loc de jos in sus. Nodurile terminale sunt evaluate imediat,
deoarece sunt fie constante fie variabile. Folosind valorile nodurilor ter-
minale evaluarea ”se muta” cu un nivel mai sus, prin executarea operatiei
indicate, si fiind date acele valori se urca un nivel in arbore etc. Deci avand
din Figura 4.5.2, fiind date instructiunile pentru doi subarbori, ele pot fi
257
”ansamblate” impreuna cu o instructiune ’add’ pentru a obtine instruc-
tor catorva instructiuni care sa creeze cod pentru urmatorul nivel; baza
si constante pot lua valori din memorie. Nu vom da detalii ale procesului
mai departe odata ce este obtinut un arbore asociat unei expresii. Citi-
torul interesat poate gasi detalii ale acestui proces in cartile de construire
a compilatoarelor.
izeaza prin dezvoltarea unei descrieri BNF care duce la arbori de derivare
a caror structura seamana cat de mult este posibil cu arborii asociatii ex-
pentru selectie.
ultima are cea mai mica precedenta si apare ca radacina a arborelui, iar
operatiilr care vor fi efectuate primele au cea mai mare precedenta si apra
258
cea mai mica precedenta, aceasta operatie trebuie sa apara iin nodul radacina
al arborelui de derivare.
atiilor ”=” aditionale prin rescrierea lui <expr> din partea dreapta va
Figura 4.5.3
sintactic pentru arborii asociati unor expresii ca cel din Figura 4.5.4. El
259
de fapt, daca intrepatrundem nodurile ”=” si <expr> din Figura 4.5.3
Figura 4.5.4
260
Figura 4.5.5
faptul ca cea mai din dreapta operatie ar trebui sa apara cel mai aproape de
varful arborelui si cea mai din dreapta operatie ar trebui sa apara cel mai
introduc cel mai din stanga operator editiv la baza arborelui de derivare.
261
Figura 4.5.6.
pentru term . Dupa cum s-a aratat in acest exemplu, arborele de derivare
daca imbinam nodurile ”-” si arith din Figura 4.5.6, obtinem structura
arborelui din Figura 4.5.5. Fiecare fin cele doua productii a lui arith
derivare similare cu cei aditivi. Vom analiza cateva exemple specifice putin
Mai avem de introdus numai operatia de cea mai mare precedenta, mi-
262
productiilor dupa ce toate celelalte operatii au fost generate, ea trebuie sa
apara cel mai aproape de nodurile terminale ale arborului de derivare. Ul-
cru este necesar pentru a putea avea subexpresii intre paranteze de mai
precedenta mai mare ca altor operatii din expresie. De aceea avem trei
primary ( expr ).
pentru var si const pot fi date in orice mod convenabil si sunt omise
263
aici - inlocuim pur si simplu aceste neterminale cu identificari si numerele
Exemplul 4.5.1.
expresiei din Figura 4.5.8 si forma BNF duce la arborele de derivare indicat.
asociat expresiei.
264
Figura 4.5.8.
ex: retranscrierea lui expr il reintroduce pe expr ca cel mai din dreapta
mai din dreapta operator sunt celel mai urgente deci trebuie executate
265
+ , -* si / ). Recursivitatea -stanga cauzeaza esecul unor metode de analzia
aceasta sectiune.
Forma BNF din Figura 4.5.7 a fost atent formulata astfel incat arborii
troduse. Dar vrem de asemenea sa fiu siguri ca toate secventele derivate din
sus nivel din aceasta expresie este ”+” si nu ”*”. Deci pentru a construi
cluse intre paranteze trebuie sa aiba precudenta mai mare decat aceea a
266
lui ” * ”, sau precedenta egala si asociativa-stanga si toate operatiile lui e2
neincluse intre paranteze trebuie sa fie de precedenta mai mare sau egala
lalte operatii.
pentru forma BNF pentru expresii dar nu dezvaluie clar toate substitu-
tiile. Oricum insa, prezentarea detaliilor pentru expresiile reale este vo-
Exemplul 4.5.2.
267
Figura 4.5.9.
268
dar caracteristicile structurale importante ale arborului asopciat expre-
siei sunt inca vizibile. Arborele de derivare din Figura 4.5.9 are operatia
Folosind forma BNF din Figura 4.5.7, chiar si o expresie mica cum este cea
inarea codului executabil, ceea ce este mai mult decat scopul initial.
tei proprietati este imaginabila. Dupa cum s-a observat anterior, aceasta
269
tru fiecare secventa din limbaj ca are exact un arbore de derivare. Chiar si
Afrimatie.
borele de derivare ar trebui sa fie unic. Pentru operatii care nu sunt inchise
siilor intre paranteze determina cel mai jos nivel de retranscriere. Subex-
presiile din paranteze trebuie sa derive din expr si deci sunt un subiect
270
sintaxei omite orice folosire a ”spatiului alb”. Acesta ar putea fi integrat
ului de aici.
4.6. Rezumat
forme normele care sunt utile pentru anumite scopuri din capitolele ulte-
271
rioare.
semantica se realizeaza cel mai bine prin luarea atenta in considerare atat
dobandi o mai buna intuitie asupra faptului cum capacitatea expresiva este
272