Documente Academic
Documente Profesional
Documente Cultură
lfac Gh Grigoras 1
Parser (Analizor de sintax) ascendent
general
Intrare
a1 ai an #
Stiva
TABELA
ym CONTROL DE
PARSARE
ym-1
.
.
p1 p2
y0
Ieire
Gh. Grigoras 2
Configuraii
Gh. Grigoras 3
Tranziii
Parserul ascendent ataat gramaticii G este
perechea (C0, ) unde C0 este mulimea
configuraiilor iniiale, iar este o relaie de tranziie
pe C definit prin:
(#, au#, ) (#a, u#, ) (tranziie de tip deplasare)
pentru orice *, a T, u T*, P*.
(#, u#, ) (#A, u#, r) dac r = A (tranziie
de tip reducere).
Configuraia (#S, #, ) unde , se numete
configuraie de acceptare.
Orice configuraie, diferit de cea de acceptare, care
nu este n relaia cu nici o alt configuraie,
spunem c este o configuraie eroare.
Parserele de acest fel se numesc parsere de
deplasare/reducere.
Gh. Grigoras 4
Exemplu
Fie gramatica S aSb| . Tranziiile sunt:
(#, u#, ) (#S, u#, 2), unde 2 este regula S
(#aSb, u#, ) (#S, u#, 1), unde 1 este regula S
aSb
(#, au#, ) (#a, u#, )
(#, bu#, ) (#b, u#, )
unde *, u T*, P*.
O succesiune de tranziii o vom numi calcul
Iat nite calcule pentru exemplul de mai sus:
(#, #, ) (#S, #, 2)
(#, aabb#, ) (#a, abb#, ) (#aa, bb, ) (#aaS, bb, #,
2)
(#aaSb, b#, 2) (#aS, b#, 21) (#aSb, #, 21) (#S, #,
211)
n cel de-al doilea calcul am fcut alegeri nedeterministe
ntre a aplica o tranziie de tip deplasare sau una de tip
reducere. De pild, are loc:
(#aa, bb#, ) (#aaS, bb#, 2) (reducere) dar i
(#aa, bb#, ) (#aab, b#, ) (deplasare)
Gh. Grigoras 5
Conflicte
Parserul descris funcioneaz nedeterminist din dou
motive:
Pentru orice configuraie de forma (#, au#, ) cu A P
exist cel puin dou configuraii urmtoare (relativ la relaia ) :
(#, au#, ) (#A, au#, r) ( reducere cu r = A
)
(#, au#, ) (#a, u#, ) (deplasare)
Este posibil ca pentru o configuraie de forma (#, u#, ) s
avem = 11 = 22 astfel ca A 1 P, B 2 P, nct au
loc:
(#11, u#, ) (#A, u#, r1) ( reducere cu r1 = A 1) i
(#22, u#, ) (#B, u#, r2) ( reducere cu r2 = A 2).
Gh. Grigoras 7
Analiza sintactic LR
Gramatici LR(k): Left to right scanning of the
input, constructing a Rightmost derivation in
reverse, using k symbols lookahead
Definiie O gramatic G se numete gramatic
LR(k), k 0, dac pentru orice dou derivri de
forma:
S S dr* Au dr u = u
S S dr* Au dr u = v = v
pentru care k:u = k:v,
are loc: = , A = A, = .
Gh. Grigoras 8
Analiza sintactic LR
Teorema 1 Dac G este gramatic LR(k), k 0,
atunci G este neambigu.
Gh. Grigoras 10
Gramatici LR(0) - Caracterizare
Definiie Fie G = (V, T, S, P) o gramatic
independent de context redus. S presupunem c
simbolul nu este n . Un articol pentru gramatica
G este o producie A n care s-a adugat
simbolul ntr-o anume poziie din . Notm un
articol prin A dac = . Un articol n care
este pe ultima poziie se numete articol complet.
Gh. Grigoras 12
Lema Fie G o gramatic i A 1B2 un articol
valid pentru prefixul viabil . Atunci, oricare ar fi
producia B , articolul B este valid pentru
.
Gh. Grigoras 13
Teorema Fie G = (V, T, S, P) o gramatic independent
de context. Mulimea prefixelor viabile pentru gramatica
G este limbaj regulat.
Demonstraie G este G la care se adaug S S.
M = (Q, , , q0, Q), unde:
Q este mulimea articolelor gramaticii G,
= V T, q0 = S S, : Q ( {}) 2Q
definit astfel:
(A B, ) = {B | B P}.
(A X, X) = { A X}, X .
(A a, ) = , a T.
(A X, Y) = , X,Y cu X Y.
Se arat c are loc:
A ^(q0, ) este prefix viabil i
A este valid pentru .
Gh. Grigoras 14
Exemplu S S, S aSa |bSb | c
S
S S S S
S aSa S c S bSb
a b
c
S aSa S bSb
S S c S
S aSa S bSb
a b
S aSa S bSb
Gh. Grigoras 15
Teorema ( caracterizare LR(0) ) Gramatica G este gramatic
LR(0) dac i numai dac, oricare ar fi prefixul viabil , sunt
ndeplinite condiiile:
1. nu exist dou articole complete valide pentru .
2. dac articolul A este valid pentru , nu exist nici un articol
B 1a2, a T, valid pentru .
Demonstraie
G este LR(0) i, prin reducere la absurd 1 sau 2 nu are loc
1, 2 au loc si prin reducere la absurd, G nu este LR(0): exist
*
S S dr Au
dr
u = u (1)
S S Au u = v
*
dr dr
(2)
i nu are loc: = , A = A, = .
lfac Gh Grigoras 16
Cazul 1: || ||. Schematic acest lucru arat astfel:
lfac Gh Grigoras 17
Cazul 2: ||>||. Din nou schematic condiia arat astfel:
u
lfac Gh Grigoras 18
Automatul LR(0)
Algoritmul 1 (procedura nchidere(t))
Intrare: Gramatica G = (V, T, S, P);
Mulimea t de articole din gramatica G;
Ieire: t = nchidere( t ) = {q Q | p t, q (p, ) } = (t, )
Metoda:
t = t ; flag = true;
while( flag ) {
flag = false;
for ( A B t ) {
for ( B P )
if ( B t ) {
t = t {B };
flag = true;
}//endif
}//endforB
}//endforA
}//endwhile
return t;
lfac Gh Grigoras 19
Automatul LR(0)
Algoritmul 2 Automatul LR(0)
Intrare: Gramatica G = (N, T, S, P) la care s-a adugat S S;
Ieire: Automatul determinist M = (T, , g, t0, T) echivalent cu M.
Metoda:
t0=nchidere(SS); T={t0}; marcat(t0)=false;
while(tT && !marcat(t)) { // marcat(t) = false
for( X ) { // = N T
t = ;
for( A X t )
t = t {B X | B X t};
if( t ){
t = nchidere( t );
if( t T ) {
T = T { t };
marcat( t ) = false;
}//endif
g(t, X) = t;
}//endif
}//endfor
}//endfor
marcat( t ) = true;
}// endwhile
lfac Gh Grigoras 20
Automatul LR(0)
Exemplu S S, S aSa | bSb | c
S S
S aSa S
S S
S bSb
S c
a
a b
c b
S aSa c S c c S bSb
S aSa S aSa
S bSb S bSb
b
S c S c
S a S
S aSa S bSb
a b
S aSa S bSb
lfac Gh Grigoras 21
Test LR(0)
Definiie Fie G o gramatic i M automatul LR(0) ataat
lui G. Spunem c o stare a lui M are un conflict
reducere/reducere dac ea conine dou articole
complete distincte A , B . Spunem c o stare a
lui M are un conflict deplasare/reducere dac ea
conine un articol complet A i un articol cu
terminal dup punct de forma B a. Spunem c o
stare este consistent dac ea nu conine conflicte i
este inconsistent n caz contrar.
Teorema Fie G o gramatic i M automatul su LR(0).
Gramatica G este LR(0) dac i numai dac automatul
M nu conine stri inconsistente
lfac Gh Grigoras 22
Automatul LR(0)
Exemplu S aAd | bAB A cA | c Bd
S S
S aAd S S S
S bAB
a b
S aAd A cA S bAB
A cA c A c c A cA
A c A cA S c
A c
c
A A
A
S bAB
S aAd A cA B d
d B d
S aAd S bAB B d
lfac Gh Grigoras 23