Documente Academic
Documente Profesional
Documente Cultură
Lucrare de Curs
la Limbaje Formale i Proiectarea Compilatoarelor
A efectuat:
st. gr. SI-141
E.Nemerenco
A verificat:
lect. sup.
L. Duca
Chiinu 2015
Cuprins
Foaie de titlu.................................................................................1
Scopul si sarcina lucrarii................................................................3
Tema 1. Gramatici formale............................................................3
Tema 2. Automate finite................................................................6
Tema 3. Forma Normala Chomsky..............................................10
Tema 4. Forma Normala Greibach...............................................13
Tema 5. Matricia de Precedenta Simpla.......................................14
Tema 6. LL(1)...............................................................................17
Concluzie......................................................................................18
P={ 1. A-> aB
2. A->aA
3.A->b
4.B->aD
5.B->bC
6.B->bE
7.C->aA
8. C->bC
9. C->bA
10. D->a
11.D->bD
12. D>bC
13.E->a
14.E->aE
15.E->bD }
2. abaabbaa
3. abbbaba
4. aaabbbab
5. abbbabba
a
q2
q2
b
q1q2q3
q1q2q3
c
q1
q3
q3
q3
4.
Construii gramatica regulat echivalent cu AFD
Am obinut: AFD = ( Q', , ', q0 , F' ),,
F Q F
= { [ q3] }
G={
1. q0->cq1
2. q1->aq2
3. q2->bq1q2q3
4. q1q2q3->aq2
5. q1q2q3->bq1q2q3
6. q1q2q3->bq3
7. q3->cq3
8. q1q2q3->b
9. q3->c }
nu este acceptat
x=cababbc
x=cabbbc
x=cababbbc
x=cabba
x=cabbbbc
acceptare
acceptare
3. (q0, x) = (q0, cababbbc) |(q1, ababbbc) |(q2, babbbc) |( q1 q2 q3, abbbc) |(q2, bbbc) |
( q1 q2 q3, bbc) |( q1 q2 q3, bc) |(q3, c) (q3,), q3 F
acceptare
acceptare
5. (q0, x) = (q0, cabbbbc) |(q2,abbbbc) |( q1 q2 q3,bbbbc) |( q1 q2 q3,bbbc) |( q1 q2
q3,bbc) |( q1 q2 q3,bc) |( q3,c) |(q3,) q2 F
acceptare
1. x=cababbc
u=ca
v=ba
w=bbc
2. x=cabbbc
u=cab
v=b
w=bc
3. x=cababbbc
u=ca
v=ba
w=bbbc
4. x=cabbc
u=cab
v=b
w=c
5. x=cabbbbc
u=cab
v=b
w=bc
N = { C }
P`={ 1. S aB
2. S CA
3. S A
4. A a
5. A S
6. A bACB
7. A bAB
8. B b
9. B BSaba
10. C BA
}
2. Eliminam redenumirile:
Se numete redenumire orice producie de forma AB, unde A,B VN Dac avem redenumirile
AB; BC; CD; D la derivare avem: ABCD reiese A .
Atunci Gse construiete n felul urmtor: G= (VN , VT , P,S)
1. Iniial n P := {toate produciile din P care nu sunt redenumiri}
2. Fie A1, A2,..., An toate A producii din P
3. Pentru toate simbolurile B RA includem n P produciile B1, B2 ,..., Bn B RA;
B * A i n P avem producia Bi
Mulimea RA se construiete n felul urmtor:
1. RA={A} pentru toi A VN
2. Pentru toate redenumirile BC primim RC= RC RB
S A
A S
RS={S,A}
RA ={A, S }
P``= {1. S aB
2. S CA
3. A a
4. A bACB
5. A bAB
6. B b
7. B BSaba
8. C BA
9. A aB
10. A CA
11. S a
12. S bACB
13. S bAB }
3. Eliminam simbolurile inaccesibile
AC = { S, A, B, a, b, C }
I= 0 deoarece nu avem simboluri inaccesibile
4.Eliminam simbolurile neproductive
Iniial Pr=.
2. a) Pentru toate produciile A , VT* modificm Pr = Pr {A}
b) Pentru toate produciile B , (VN Pr)* Pr = Pr {B}
3. Dac au aprut modificri n Pr salt la pasul 2.
4. Construim mulimea N=VN\Pr
5. STOP.
Observaie: Se elimin din P toate produciile care conin cel puin un symbol
inaccesibil (fie din partea stng, fie din partea dreapt)
PR={S, A, B, C}
N=0 deorece nu avem simboluri neproductive
Rezolvarea sarcini :
1. Deoarece iniial nu avem recursie stnga,trecem la pasul urmtor.
Se substituie neterminalele din prima poziie cu produciile respective.
P={ 1. S SBC
2. S aC
3. C aA
4. C b
5. B BCB
6. B a
7. A SBC
8. A aC
}.
forma Aa , a VT , VN*.
FNG:P={ 1.Y aCY
2. S aCY
3. Y
4. C aA
5. C b
6.X bBX
7.B aX
8.X
9. A aCBC
10.A aC }
Gramatici de precedenta simpla.
Multimile PRIMUL (A) si ULTIMUL (A).
PRIMUL (A) = {x|A x}
ULTIMUL (A) = {y|A y}
Construirea multimii PRIMUL:
Pasul 1.
Pentru toate productiile A x
(VN U VT)*
PRIM (A) = {x|A x}
Pasul 2.
Pentru toate multimile PRIM (A), daca B PRIM (A), B VN, atunci modificam:
PRIM (A) = PRIM (A) U PRIM (A)
A B
Pasul 3.
Repetam Pasul 2. cit timp apar modificari.
Pasul 4.
STOP.
Construirea multimii ULTIM (A):
Pasul 1.
Pentru toate productiile A y
(VN U VT)*
ULTIM (A) = {y|A y}
Pasul 2.
Pentru toate multimile ULTIM (A), daca B ULTIM (A), B VN, atunci modificam:
, siruri arbitrare
x1 si x2 (VN U VT)
-
A, B VN ;
x1 (VN U VT)
, siruri arbitrare
x2 = PRIM (B)
-
C VN ;
x2 VT
x1 = ULTIM (C)
b) exista productia A C B
C, B VN ;
x1 = ULTIM (C)
x2 = PRIM (B) VT.
$ < x1, x1 PRIM (S)
$ > x2, x2 ULTIM (S)
$ - marker pentru inceputul si sfirsitul sirului.
Exemplu:
VARIANTA 18
Este dat gramatica independent de context
G=(VN, VT, P, S,), VN ={S, A, B, C, D}, VT ={a, b, c, d, e},
P={ 1. S A
2. A B
3. A B e A
4. B a b D
5. D C d
6. C c
7. C C c }
S se construiasc matricea relaiilor de preceden i s se analizeze irul abcdeabcccd
PRIM ( )
ULTIM ()
ABa
AB Dd
Ba
B AD d
D d
Cc
Cc
x1 = x2
B=e
e=A
a=b
b=D
c=d
C=c
x1 < x2
e < PRIM (A)
b < PRIM (D)
e<{Ba}
b<{Cc}
x1 > x2
ULTIM (B) > e
ULTIM (C) >c
ULTIM (C) >d
{D d}>e
{ c} > c
{ c} > d
S
S
A
B
D
C
c
a
b
d
e
$
=
>
=
>
>
>
>
>
>
=
>
=
=
=
<
<
<
<
<
<
<
abcdeabcccd
$ <a=b<c>d>e<a=b<c>c>c>d>$
$ <a=b<C= d>e<a=b<c>c>d>$
$ <a=b=D>e<a=b<c>c>d>$
$ <B=e<a=b<c>c>d>$
$ <B=e<a=b<C=c>d>$
$ <B=e<a=b=D>$
$ <B=e<B>$
$ <B=e=A>$
$ <A>$
$ <S >$
Sirul este acceptat!
LL(1).
Gramatica independenta de context este LL(1), daca din existenta derivatelor
1) S =>* xA1 =>* x11 =>* x y1
2) S =>* B2 =>* x22 =>* x y2
si egalitatea A = B, 1 = 2
Def. Se numeste simboluri directoare de productie A elementele multimii.
PRIM ( )
U URM ( A ) , = (= )
Pentru toti i j.
VARIANTA 18 LL(1)
Este dat gramatica independent de context
G=(VN, VT, P, S,), VN ={S, A, W, E, X, Y}, VT ={a,b,c,d},
P={ 1. S d W
2. W E X
3. X
4. X c W
5. E b A
6. A a Y
7. Y
8. Y A }.
S se construiasc tabelul de analiz LL(1) i s se analizeze irul dbacbaaa
1.
2.
3.
4.
5.
6.
7.
8.
S
W
E
X
Y
A
a
b
c
d
$
S
W
E
X
Y
A
SD
PRIM(d)={d}
PRIM(E)={b}
URM(X)= { }
PRIM(c)={e}
PRIM(b)U URM(E)={b,c }
PRIM(a)={a}
URM(Y)={}
PRIM(A)={a}
SdW
WEX
X
XcW
EbA
AaY
Y
YA
PRIM()
d
Eb
b
URM()
$
c
c
caA
a
a
1
2
5
5
4
8
6
Bibliografie:
Conspect la cursul LFPC, L.Duca, UTM 2015