Sunteți pe pagina 1din 28

Limbaje Formale, Automate i

Compilatoare
Curs:
O. Captarencu, otto@info.uaic.ro
G. Grigora, grigoras@info.uaic.ro


Evaluare
SA = activitatea la seminar (max 10 puncte)
LA = activitatea la laborator (max 10 puncte)
T1,T2 teste scrise n saptamnile 8, 16; FE = (T1+T2)/2
Punctajul final se obine astfel:
P= 30%*SA+30%*LA+40%*FE
Condiie obligatorie de promovare: SA >=5, LA >=5
Nota final se va stabili conform criteriilor ECTS (Nota>= 5
pentru promovare)

2
Tematica cursului I
Limbaje i gramatici
Limbaje regulate gramatici, automate ,
expresii regulate
Limbaje independente de context gramatici,
automate pushdown
Masini Turing

3
Tematica cursului II
Limbaje de programare: proiectare i
implementare
Analiza lexical
Analiza sintactic
Traducere n cod intermediar
4
Tematica seminar
Exemple de limbaje i gramatici
Automate finite deterministe, nedeterministe, cu
epsilon-tranziii - Exemple
Expresii regulate Exemple cu referire la unitile
lexicale din limbajele de programare
Gramatici independente de context, arbori de
derivare, eliminarea simbolurilor inutile,
eliminarea regulilor de tergere, a redenumirilor
Forma normal Chomsky, recunoaterea -
algoritmul CYK
Automate pushdown - exemple

5
Tematica laborator
Analiza lexical folosind instrumente de tip
LEX

Analiza sintactic folosind instrumente de tip
YACC

Interpretor construit cu LEX i YACC

6
Bibliografie
Grigoras, Gh. Constructia compilatoarelor - Algoritmi
fundamentali, Ed. Universitatii Al. I. "Cuza Iasi", ISBN 973-703-
084-2, 274 pg., 2005
Jucan Toader - Limbaje formale i automate, Editura Matrix
Rom, Bucureti, 1999, 162 p.
Jucan Toader, tefan Andrei Limbaje formale i teoria
automatelor. Teorie i practic, Editura Universitii Al. I.
Cuza, Iai, 2002, 327p.

Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D.
(2006). Introduction to Automata Theory, Languages, and
Computation (3rd ed.). Addison-Wesley
Stoughton Alley, Formal Language Theory, Kansas State
University, Draft of Fall 2007.
Manual LEX, Manual FLEX, Manual YACC, Manual Bison,
Compiler Construction using Flex and Bison
7
Curs 1 - plan
Alfabet, cuvnt, mulime de cuvinte
Limbaj (formal)
Gramatici
Definiie
Derivare, limbaj generat
Exemple
Tipurile de gramatici, ierarhia lui Chomsky
Gramatici i limbaje de tip 3
Definiie, exemple, proprieti

8
Alfabet, cuvnt, mulime de cuvinte
Alfabet: V o mulime finit, elementele simboluri
Simbolurile le vom nota a, b, etc.
Cuvnt: ir finit de simboluri
cuvintele le vom nota u, v, w.
cuvntul nul notat (epsilon) sau (lambda)
Lungimea unui cuvnt u: numrul simbolurilor sale.
Notaie: | u |
| 0 | = 1, | 010 | = 3, | | = 0
V* - mulimea tuturor cuvintelor, inclusiv
{0,1}* = {, 0, 1, 00, 01, 10, 11, 000, 001,... }
V
+
- mulimea tuturor cuvintelor nenule
{0,1}
+
= {0, 1, 00, 01, 10, 11, 000, 001,... }
9
Alfabet, cuvnt, mulime de cuvinte
Concatenarea a dou cuvinte x, y: cuvntul xy obinut din
simbolurile lui x, n ordinea n care apar, urmate de cele ale lui
y de asemenea n ordinea n care apar:
x = 0100, y = 100, xy = 0100100
x = 000, y = , xy = 000
Concatenarea este asociativ
este element neutru
(V*, ) este monoid, se numete monoidul liber generat de V
n continuare xy se va nota xy
Cuvntul v este un prefix al cuvntului u dac -w e V*, u =
vw; dac w e V
+
atunci v este un prefix propriu
Cuvntul v este un sufix al cuvntului u dac - w e V*, u = wv;
dac w e V
+
atunci v este un sufix propriu
10
Limbaj (formal)
Fie V un alfabet. O submulime L _ V* este un limbaj
(formal) peste alfabetul V (sau V-limbaj) dac L are o
descriere finit.
O descriere poate fi:
neformal (n limbaj natural):
mulimea cuvintelor peste alfabetul {0,1} care conin un numr par
de 0 .
L = {x e V
+
: |x| este par}.
{ 0
n
1
n
| n e N}.
{w e {0, 1}* | w se termin n 00}.
formal (descriere matematic):
o descriere inductiv a cuvintelor
o descriere generativ a cuvintelor (gramatic generativ)
o descriere a unei metode de recunoatere a cuvintelor din limbaj
(automat finit, automat pushdown, etc.)
11
Operaii cu limbaje
Limbajele fiind mulimi, suntem ndreptii s
vorbim despre reuniune, intersecie, etc. de limbaje
Exist i operaii specifice :
Produsul de limbaje: L
1
L
2
= { uv | u e L
1
, v e L
2
}
Iteraia (produs Kleene): L* =
n>0
L
n
, unde L
0
= {c} iar
L
n+1
= L
n
L
Pref(L) = { u | uv e L}
L
R
= { w
R
| w e L}; dac w = a
1
a
n
atunci w
R
= a
n
a
1

13
Gramatici
Sistemul G = (N, T, S, P) este o gramatic dac:
N i T sunt vocabulare disjuncte
N este mulimea neterminalilor utilizai pentru a
descrie structura limbajului
T este mulimea simbolurilor terminale simbolurile
care formeaz cuvintele limbajului

S este neterminalul iniial (simbol de start), S e N
P este o mulime finit de reguli (producii, reguli
de nlocuire, reguli de rescriere) de forma x y
unde x, ye (N T)* i x conine cel puin un
neterminal
14
Derivare, limbaj generat
Fie G = (N, T, S, P) o gramatic, u, v e (N T)*
Spunem c v este derivat ntr-un pas de la u prin
aplicarea regulii x y , i scriem u v, dac u = pxq
iar v = pyq.
Dac u
1
u
2
u
n
, n > 1, spunem c u
n
este
derivat din u
1
n G i scriem u
1

+
u
n

Scriem u * v dac u = v sau u
+
v
Limbajul generat de G este definit prin:
L(G) = {w e T*| S
+
w}
Dou gramatici G1 i G2 sunt echivalente dac
genereaz acelai limbaj: L(G
1
) = L(G
2
)
15
Exemplu
L ={a
n
b
n
|n>1 }
Definiia inductiv :
ab eL
Dac X eL, atunci aXb e L
Nici un alt cuvnt nu face parte din L

Definiia generativ :
G = ({X},{a,b},X,P), unde P ={X aXb, X ab}
Derivarea cuvntului a
3
b
3

X aXb aaXbb aaabbb
16
Exemple
L = {a
n
b
n
c
n
| n1}
G = (N, T, S, P), N = {S, X}, T = {a, b, c}, P const din:
(1) S abc
(2) SaSXc,
(3) cXXc,
(4) bX bb

Derivarea cuvntului a
3
b
3
c
3
:
S
(2)
aSXc
(2)
aaSXcXc
(1)
aaabcXcXc
(3)
aaabXccXc
aaabbccXc
(3)
aaabbcXcc

(3)
aaabbXccc
(4)
aaabbbccc = a
3
b
3
c
3

17
Clasificarea gramaticilor(Chomsky)
Tipul gramaticii Restricii asupra
regulilor
Avantaje/Dezavantaje
Gramatici generale
(Tip 0)
Nu sunt Poate fi descris orice limbaj / Nu exist un
algoritm general de recunoatere a cuvintelor
din limbajul unei gramatici de tip 0
Gramatici
dependente de
context
(Tip 1)
pxq pyq unde
x eN, y c, p,q e (N T)*
S , caz n care S nu
apare n dreapta
produciilor
Pot fi descrise toate trsturile limbajelor de
programare, exist algoritmi generali de
recunoatere dar sunt ineficieni
Gramatici
independente de
context
(Tip 2)
A y unde
A e N i y e (N T)*
Algoritmi generali de recunoatere eficieni,
utilizai n practic (compilare). Nu pot fi
exprimate trsturi semantice (ex. legtura
ntre utilizarea variabilelor i declararea
acestora)
Gramatici regulate
(Tip 3)
A u sau A uB
unde A, B e N i
u e T*.
Exist metode secveniale de recunoatere, Pot
fi descrise doar trsturi secveniale ale
limbajelor de programare (identificatori,
constante etc.) dar nu expresii, instruciuni
18
Exemple

Ce tip au urmatoarele gramatici?
G = (N, T, S, P), N = {S, X}, T = {a, b, c}, P const din:
(1) S abc
(2) SaSXc,
(3) cXXc,
(4) bX bb
G = (N, T, S, P), N = {S, X}, T = {a, b, c} P const din:
(1) S abc (4) cX YX
(2) SaSXc, (5) YX Yc
(3) bx bb (6) Yc Xc

19
Exemple

Fie G = ({E}, {a, +, -, (, )}, E, {Ea, E(E+E), E(E-E)}).
Ce tip are gramatica G ?
Construii derivri din E pentru cuvintele (a+a) i ((a+a)-a)
Cuvntul (a+a-a) poate fi derivat din E?
Descriei limbajul L(G)

Fie G = ({A,B},{a,b},A,{AaA, AB,BbB, Bc})
Ce tip are gramatica G ?
Descriei limbajul L(G)


20
Ierarhia lui Chomsky
Un limbaj L este de tipul j dac exist o gramatic G
de tipul j astfel nct L(G) = L, unde j e {0, 1, 2, 3}.

Vom nota cu L
j
clasa limbajelor de tipul j, unde j e
{0, 1, 2, 3}.

Ierarhia lui Chomsky: L
3
c L
2
c L
1
c L
0

Incluziunile sunt stricte:
orice limbaj de tip j+1 este i de tip j e {0, 1, 2}.
exist limbaje de tip j care nu sunt de tip j+1, j e {0, 1, 2}.
21
Ierarhia lui Chomsky
Proprieti
Fiecare din familiile L
j
cu 0 j 3 conine toate
limbajele finite.

Fiecare din familiile L
j
cu 0 j 3 este nchis la
operaia de reuniune
22
Gramatici i limbaje regulate

O gramatic G = (N, T, S, P) este de tip 3 (regulat)
dac regulile sale sunt de forma A u sau A uB
unde A, B e N iar u e T*.

Exemplu: G =({D},{0,1,,9},D,P)
Unde P este:
D 0D|1D|2D|9D
D 0|1|9

L(G) = multimea numerelor naturale

23
Exemple
Considerm gramatica G
1
= ( {A, B} , {l,d} , A, P
1
)
unde P
1
const din regulile:
A lB B lB|dB|l|d l = liter, d = cifr
L(G
1
) este mulimea identificatorilor

Considerm gramatica G
2
= ( {A, B} , {+,-,d} , A, P
2
)
unde P
2
const din regulile:
A +B|-B|dB|d B dB|d d = cifr
L(G
2
) este mulimea constantelor ntregi
24
Forma normal
O gramatic de tip 3 este n form normal dac regulile sale
sunt de forma A a sau A aB, unde a e T, i eventual S
c (n care caz S nu apare n dreapta regulilor).

Orice gramatic de tip 3 admite o form normal echivalent:
Orice regul de forma A a
1
a
2
a
n
se nlocuiete cu A a
1
B
1
, B
1
a
2
B
2
, ,
B
n-2
a
n-1
B
n-1
, B
n-1
a
n
n > 1, B
1
,, B
n-1
fiind neterminali noi


Orice regul de forma A a
1
a
2
a
n
B se nlocuiete cu A a
1
B
1
, B
1
a
2
B
2
, ,
B
n-2
a
n-1
B
n-1
, B
n-1
a
n
B

n > 1, B
1
,, B
n-1
fiind neterminali noi
Se poate arta c pot fi eliminate regulile de forma A B (redenumiri) i cele
de forma A c (reguli de tergere), cu excepia, eventual a regulii S c
Transformrile care se fac nu modific limbajul generat de gramatic

25
Proprieti de nchidere
Fie L, L1, L2 limbaje regulate, ceea ce nseamn c
exist gramaticile G, G1, G2 astfel ca
L = L(G), L1 = L(G1) i L2 = L(G2).
Atunci, urmtoarele limbaje sunt de asemenea
regulate:
(a) L1 L2 (b) L1 L2 (c) L1 L2
(d) L1\L2 (e) L* (e) L
R

26
Proprieti de nchidere
Demonstraii
Fie G1 = (N1, T1, S1, P1) si G2 = (N2, T2, S2,P2) cu
L1 = L(G1), L2 = L(G2)
Presupunem N1 N2 = i gramaticile in form
normal

1. nchiderea la reuniune:
Gramatica G = (N1 N2 {S}, T1 T2, S, P1 P2 {S
S1, S S2}) genereaz limbajul L1 L2
27
Proprieti de nchidere
2. nchiderea la intersecie:
Gramatica G = (N1 N2, T1 T2, (S1, S2), P), unde P
const din:
(S1, S2) dac S1 i S2
(A1, B1) a(A2, B2) dac A1 aA2 i B1 aB2
(A1, A2) a dac A1 a i A2 a
genereaz limbajul L1 L2 (s-au considerat G1, G2 n
form normal)

28
Proprieti de nchidere

3. nchiderea la produs:
Gramatica G = (N1 N2, T1 T2, S1, P) unde P const
din:
- regulile de forma A aB din P1
- reguli A aS2 pentru orice regul A a din P1
- toate regulile din P2
genereaz limbajul L1L2


29

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