Sunteți pe pagina 1din 19

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

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

Tema: Gramatici formale


Sarcina : De creat o gramatica.
De creat 5 cuvinte (lung. min. fiind 7). Pentru fiecare cuvint respectiv arbore
de derivare corenzator. De construit automat finit pentru gramatica data.
G = {Vn, Vt, P, A}
Vn = {A, B, C, D, E}
Vt = {a, b}

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.Construim cuvintele {x =< |7|} si arbori de derivare


1. abbbaaba

2. abaabbaa

3. abbbaba

4. aaabbbab

5. abbbabba

Tema: Automate finite


1. Este dat automatul finit AF=(Q, , , q0, F). Reprezentai automatul sub
form de graf.
2. Este sau nu automatul dat determinist?
3. Dac automatul este nedeterminist, construii automatul finit determinist
echivalent.
4. Construii gramatica regulat echivalent cu AFD
5. Inventai un ir peste vocabularul care nu va fi acceptat de ctre AFD.
Artai acest lucru scriind secvena (secvenele) de configuraii respective.
6. Pentru automatul finit AFD=(Q, , , q0, F) construii 5 iruri acceptate de
automat. Lungimea irurilor s nu fie mai mic dect n+2, unde n este
numrul de stri din Q.
7. Scriei expresia regulat echivalent.
8. Pentru fiecare ir x scriei secvena de configuraii pentru acceptarea
irului, adic (q0, x) (qi1, x1) (qi2, x2) (qf, ), unde qf F.
9. Petru toate cele 5 iruri obinute construii aplicnd lema de pompare
descompunerea x=uvw.
Varianta 18
AF=(Q, , , q0, F), Q = {q0, q1, q2 , q3}, = { a, b, c}, F = { q3}.
(q0, c) = {q1}
(q1, a) ={q2}
(q2, b) = {q2}
(q2, b) = {q3}
(q2, a ) ={q2}
(q3, c) ={q3}

1. Reprezentai automatul sub form de graf:

2. Este sau nu automatul dat determinist?


Automatul dat este nedeterminist, deoarece din starea q2 prin a se poate trece n 3 stri
diferite: q0 , q1 i q3 deci avem (q2,b) ={ q0,q1, q 3}.

3. Construii automatul finit determinist echivalent


q0
q1
q2
q1q2q3

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

Q'={ [q0 ], [q1 ], [ q2 ], [q1 q2 q3 ] [q3] }

= { [ 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 }

5. Inventai un ir peste vocabularul care nu va fi


acceptat de ctre AFD. Artai acest lucru scriind
secvena (secvenele) de configuraii respective.
Cuvintul neacceptat de gramatica dat este: caba
(q0, x) = (q0,caba) |(q1,aba) |(q2,ba) |( q2 ,a), q2 /= F

nu este acceptat

6. Pentru automatul finit AFD=(Q, , , q0, F) construii 5


iruri acceptate de automat. Lungimea irurilor s nu
fie mai mic dect n+2, unde n este numrul de stri
din Q.
1.
2.
3.
4.
5.

x=cababbc
x=cabbbc
x=cababbbc
x=cabba
x=cabbbbc

8. Pentru fiecare ir x scriei secvena de configuraii


pentru acceptarea irului, adic (q0, x) (qi1, x1)
(qi2, x2) (qf, ), unde qf F.
1. (q0, x) = (q0,cababbc) |(q1,ababbc) |(q2,babbc) |( q1 q2 q3,abbc) |(q2,bbc) |(|( q1
q2 q3 , bc) |(q3,c), q3 F

acceptare

2. (q0, x) = (q0,cabbbc) |(q1,abbbc) |( q1 q2 q3,bbbc) |( q1 q2 q3,bbc) |(q3,bc) |(q3,c)


|(q3, ), q3 F

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

4. (q0, x) = (q0, cabba) |(q1, abba) |(q2,bba) |( q1 q2 q3,ba) |(q2,a) |(q2,), q2 F

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

9. Petru toate cele 5 iruri obinute construii aplicnd


lema de pompare descompunerea x=uvw.
1. z=uvw
2. |z| n, n=card(Q), |v|1
3. |uv| n
4. uviw L

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

Tema: Forma Normal Chomsky (FNC)


S se reduc la Forma Normal Chomsky gramatica independent de context
G = (VN , VT , P, S), VN= {S,A,B, C}, VT = {a,b}
P= {1. S aB
2. S CA
3. A a
4. A S
5. A bACB
6. B b
7. B BSaba
8. C
9. C BA }
Rezolvarea sarcinii:
1. Dac gramatica independent de context conine producii, atunci ea poate fi transformat ntr-o
gramatic echivalent fr -producii. Este dat G=(VN,VT,P,S). Construim G=(VN,VT,P,S)
Construim N si generam gramatica eliminand producti de tipul dat : P=P+{ A | A P }
Acest pas se efectueaza de atatea pina cand nu se vor intalni - productii in gramatica respectiva.

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

3. Repetm pasul 2 ct timp apare elemente noi n RA, A VN


4. STOP

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

Fie Ac mulimea simbolurilor accesibile din axiom; iniial Ac={S}.


2. Pentru toate simbolurile neterminale B Ac i toate produciile B x1x2
xn modificm Ac: = Ac {x1,x2 ... xn}.
3. Dac la pasul 2 n Ac au aprut elemente noi, salt la 2.
4. Dac nu avem elemente noi, construim mulimea I, I = (VN VT ) \ Ac Se
elimin din P toate produciile care conin cel puin un simbol inaccesibil (fie
din partea stng, fie din partea dreapt).
5. STOP

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

5. Forma Normala Chomsky


Fie gramatic independent de context fr -producii, redenumiri, simboluri
inaccesibile i simboluri neproductive, adic avem gramatica independent de
context proprie.
Toate produciile au forma
a) A a
b) Ax1x2xn; unde n2, aVT, xi(VTVN)*
Pasul 1. Fie Ax1x2xn producii de tipul b.
Pentru toi xiVT introducem simboluri neterminale noi introducem simboluri
neterminale noi Yi i producii noi Yixi substituim producia Ax1x2 xi xn cu
Ax1x2 Yi xn
Dup pasul 1 toate produciile au forma a) A a b) AY1Y2Yn; YiVN.
Pasul 2. Pentru orice producie de tipul b) AY1Y2Yn introducem neterminale noi
Z.
Producia de tipul b) se nlocuiete cu: AY1Z1 Z1Y2Z2 Z2Y3Z3 . Zn2Yn-1Yn
Pasul 1 + Pasul 2 = G L(G) = L(G)

Forma Normala Chomsky:


P={ 1.S DB
2.S CA
3.SEF
4.SEG
5.Sa
6.ACA
7.A DB
8.B BH
9.HSJ
10.JDK
11.KED
12.Da
13.C BA
14.Bb
15.A EG
16.G AB
17.A EF
18.F AI
19.ICB
20.Eb
21.Aa
}

Forma Normal Greibach (FNG)


S se reduc la Forma Normal Greibach (FNG) gramatica independent de context.
G=(VN, VT, P, S,), VN={S, A, B, C}, VT ={a, b},
P={ 1. S BC
2. C aA
3. C b
4. B SB
5. B a
6. A BC
}.

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
}.

Observm c n producii apare recursie stnga i repetm pasul 1.


Eliminm recursia stnga prin metoda a 2-a:
P={
1.Y BCY
2. S aCY
3. Y
4. C aA
5. C b
6. X CBX
7.B aX
8. X
9.A SBC
10.A aC }
Aducem la Forma Normal Greibach (FNG):
Gramatica independent de context G este n FNG ,dac toate produciile au

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:

ULTIM (A) = ULTIM (A) U ULTIM (A)


A B
Pasul 3.
Repetam Pasul 2. cit timp apar modificari.
Pasul 4.
STOP.
Construirea relatiilor de precedenta simpla:
-

Intre x1 si x2 avem relatia x1 = x2, daca exista productia A x1 x2

, siruri arbitrare
x1 si x2 (VN U VT)
-

Intre x1 si x2 avem relatia x1 < x2, daca exista productia A x1 B

A, B VN ;

x1 (VN U VT)

, siruri arbitrare
x2 = PRIM (B)
-

Intre x1 si x2 avem relatia x1 > x2, daca:


a) exista productia A C x2

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 ) , = (= )

( PRIM ( ) caz contrar


SD (A )=
Teorema. Gramatica G este LL(1) atunci cind pentru toate simboluri neterminale A VN si toate
A-productii.
A 1, A 2, , A n.
SD (A i) SD (A j) = .

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

(S $, dbacbaaa $) |- (1) (dW $, dbacbaa$) |- ( ) ( W $, bacbaa $)


|- (2) (EX $, bacbaa$) |- (5) (b A X $, bacbaa $) |- ( ) (X $, acbaa $) |- (6) (a Y X $, acbaa $)
|- (v) ( Y X $, cbaa $) |- (4) ( c W Y $, cbaa $)|- (v) ( W Y $, baa $) |- (2) ( E X Y $, baa $) |- (5)

(b A X Y $, baa $) |- (v) ( A X Y $, aa $) |- (6) ( a U X Y $, aa $) |- (v) ( Y X Y $, a $)|- (8) ( A X


Y $, a $) |- (6) ( a Y X Y $, a $) |- (v) ( Y X Y $)
Sirul nu este acceptat.
Concluzie:
n acest lucrare de curs am generalizat cunotinele obinute la cursyl Limbaje formale si
proiectarea compilatoarelor. Am studiat programul JFLAP si utilizat pentru constructia
automatelor finite si arborilor de derivare. Am studiat temele expuse i am exersat.

Bibliografie:
Conspect la cursul LFPC, L.Duca, UTM 2015