Limbaje Formale, Automate şi Compilatoare
Limbaje Formale, Automate şi Compilatoare Curs 1 2014-15 LFAC (2014-15) Curs 1 1 / 37
- Page 2 and 3: Structura cursului 1 Prezentare cur
- Page 4 and 5: Prezentare curs Limbaje Formale, Au
- Page 6 and 7: Prezentare curs Sistem evaluare AS
- Page 8 and 9: Prezentare curs Tematica cursului (
- Page 10 and 11: Prezentare curs Tematica laboratoru
- Page 12 and 13: Limbaje formale Structura cursului
- Page 14 and 15: Limbaje formale Alfabet, cuvânt, m
- Page 16 and 17: Limbaje formale Alfabet, cuvânt, m
- Page 18 and 19: Limbaje formale Operaţii pe cuvint
- Page 20 and 21: Limbaje formale Operaţii pe cuvint
- Page 22 and 23: Limbaje formale Operaţii pe cuvint
- Page 24 and 25: Limbaje formale Fie V un alfabet. O
- Page 26 and 27: Limbaje formale Operaţii cu limbaj
- Page 28 and 29: Mecanisme de generare a limbajelor:
- Page 30 and 31: Mecanisme de generare a limbajelor:
- Page 32 and 33: Mecanisme de generare a limbajelor:
- Page 34 and 35: Mecanisme de generare a limbajelor:
- Page 36 and 37: Mecanisme de generare a limbajelor:
- Page 38 and 39: Ierarhia lui Chomsky Ierarhia lui C
- Page 40 and 41: Ierarhia lui Chomsky Ierarhia lui C
- Page 42 and 43: Ierarhia lui Chomsky Exemple Ce tip
- Page 44 and 45: Ierarhia lui Chomsky Clasificarea l
- Page 46 and 47: Limbaje şi gramatici de tip 3 (reg
- Page 48 and 49: Limbaje şi gramatici de tip 3 (reg
- Page 50 and 51: Limbaje şi gramatici de tip 3 (reg
<strong>Limbaje</strong> <strong>Formale</strong>, <strong>Automate</strong> <strong>şi</strong> <strong>Compilatoare</strong><br />
Curs 1<br />
2014-15<br />
LFAC (2014-15) Curs 1 1 / 37
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 2 / 37
Prezentare curs<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 3 / 37
Prezentare curs<br />
<strong>Limbaje</strong> <strong>Formale</strong>, <strong>Automate</strong> <strong>şi</strong> <strong>Compilatoare</strong><br />
Titulari curs:<br />
O. Captarencu: otto@info.uaic.iasi.ro<br />
http://www.infoiasi.ro/˜otto/lfac.html<br />
A. Moruz:mmoruz@info.uaic.ro<br />
Titulari seminar/laborator:<br />
O. Captarencu<br />
A. Moruz<br />
B. Prelipcean<br />
C. Vârlan<br />
LFAC (2014-15) Curs 1 4 / 37
Prezentare curs<br />
Sistem evaluare<br />
7 seminarii, 6 laboratoare;<br />
AS = activitatea la seminar (max 10 puncte);<br />
AL = activitatea la laborator (max 10 puncte);<br />
T1,T2 teste scrise în săptămânile 8, respectiv în sesiune;<br />
Punctajul final se obţine astfel:<br />
P = 3 * AS + 3 * AL + 2 * T1 + 2 * T2<br />
Condiţii miminale de promovare: AS ≥ 5, AL ≥ 5;<br />
Punctaj minim pentru promovare: P ≥ 50;<br />
Nota finală se va stabili conform criteriilor ECTS;<br />
LFAC (2014-15) Curs 1 5 / 37
Prezentare curs<br />
Sistem evaluare<br />
AS = activitatea la seminar (max 10 puncte):<br />
media a două teste scrise<br />
până la 2 puncte bonus pentru activitatea din timpul seminarului<br />
AL = activitatea la laborator (max 10 puncte):<br />
1 test laborator, 2 teme laborator (note de la 0 la 10)<br />
AL = media celor 3 note<br />
LFAC (2014-15) Curs 1 6 / 37
Prezentare curs<br />
Tematica cursului (partea I)<br />
<strong>Limbaje</strong> <strong>şi</strong> gramatici<br />
<strong>Limbaje</strong> regulate; gramatici, automate , expresii regulate<br />
<strong>Limbaje</strong> independente de context; gramatici, automate pushdown<br />
Ma<strong>şi</strong>ni Turing<br />
LFAC (2014-15) Curs 1 7 / 37
Prezentare curs<br />
Tematica cursului (partea II)<br />
<strong>Limbaje</strong> de programare: proiectare <strong>şi</strong> implementare<br />
Analiza lexicală<br />
Analiza sintactică<br />
Traducere în cod intermediar<br />
LFAC (2014-15) Curs 1 8 / 37
Prezentare curs<br />
Tematica seminarului<br />
Exemple de limbaje <strong>şi</strong> gramatici<br />
<strong>Automate</strong> finite deterministe, nedeterministe, cu epsilon-tranziţii -<br />
Exemple<br />
Expresii regulate<br />
Gramatici independente de context, arbori de derivare, eliminarea<br />
simbolurilor inutile, eliminarea regulilor de ştergere, a<br />
redenumirilor<br />
Forma normală Chomsky, algoritmul CYK<br />
<strong>Automate</strong> pushdown - exemple<br />
LFAC (2014-15) Curs 1 9 / 37
Prezentare curs<br />
Tematica laboratorului<br />
Analiza lexicală folosind instrumente de tip LEX<br />
Analiza sintactică folosind instrumente de tip YACC<br />
Interpretor construit cu LEX <strong>şi</strong> YACC<br />
LFAC (2014-15) Curs 1 10 / 37
Prezentare curs<br />
Bibliografie (selecţii)<br />
1 A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman: Compilers:<br />
Principles, Techniques, and Tools. Boston: Addison-Wesley, 2007<br />
2 Gh. Grigoras. Constructia compilatoarelor - Algoritmi<br />
fundamentali, Ed. Universitatii Al. I. ”Cuza Iasi”, ISBN<br />
973-703-084-2, 274 pg., 2005<br />
3 Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2006).<br />
Introduction to Automata Theory, Languages, and Computation<br />
(3rd ed.). Addison-Wesley<br />
4 J. Toader - <strong>Limbaje</strong> formale <strong>şi</strong> automate, Editura Matrix Rom,<br />
Bucuresti, 1999.<br />
5 J. Toader, S. Andrei - <strong>Limbaje</strong> formale <strong>şi</strong> teoria automatelor. Teorie<br />
<strong>şi</strong> practică, Editura Universitatii ”Al. I. Cuza”, Iasi, 2002.<br />
LFAC (2014-15) Curs 1 11 / 37
<strong>Limbaje</strong> formale<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 12 / 37
<strong>Limbaje</strong> formale<br />
Alfabet, cuvânt, multţime de cuvinte<br />
Alfabet: V o mulţime finită (elementele lui V = simboluri )<br />
LFAC (2014-15) Curs 1 13 / 37
<strong>Limbaje</strong> formale<br />
Alfabet, cuvânt, multţime de cuvinte<br />
Alfabet: V o mulţime finită (elementele lui V = simboluri )<br />
Cuvânt: <strong>şi</strong>r finit de simboluri<br />
cuvântul nul este notat cu ǫ sau λ.<br />
LFAC (2014-15) Curs 1 13 / 37
<strong>Limbaje</strong> formale<br />
Alfabet, cuvânt, multţime de cuvinte<br />
Alfabet: V o mulţime finită (elementele lui V = simboluri )<br />
Cuvânt: <strong>şi</strong>r finit de simboluri<br />
cuvântul nul este notat cu ǫ sau λ.<br />
Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: |u|.<br />
|ǫ| = 0<br />
LFAC (2014-15) Curs 1 13 / 37
<strong>Limbaje</strong> formale<br />
Alfabet, cuvânt, multţime de cuvinte<br />
Alfabet: V o mulţime finită (elementele lui V = simboluri )<br />
Cuvânt: <strong>şi</strong>r finit de simboluri<br />
cuvântul nul este notat cu ǫ sau λ.<br />
Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: |u|.<br />
|ǫ| = 0<br />
V ∗ - multimea tuturor cuvintelor peste alfabetul V, inclusiv ǫ.<br />
{0, 1} ∗ = {ǫ, 0, 1, 00, 01, 10, 11, 000, 001,...}<br />
LFAC (2014-15) Curs 1 13 / 37
<strong>Limbaje</strong> formale<br />
Alfabet, cuvânt, multţime de cuvinte<br />
Alfabet: V o mulţime finită (elementele lui V = simboluri )<br />
Cuvânt: <strong>şi</strong>r finit de simboluri<br />
cuvântul nul este notat cu ǫ sau λ.<br />
Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: |u|.<br />
|ǫ| = 0<br />
V ∗ - multimea tuturor cuvintelor peste alfabetul V, inclusiv ǫ.<br />
{0, 1} ∗ = {ǫ, 0, 1, 00, 01, 10, 11, 000, 001,...}<br />
V + - multimea tuturor cuvintelor nenule peste alfabetul V<br />
{0, 1} + = {0, 1, 00, 01, 10, 11, 000, 001,...}<br />
LFAC (2014-15) Curs 1 13 / 37
<strong>Limbaje</strong> formale<br />
Operaţii pe cuvinte<br />
Concatenarea a doua cuvinte x, y: cuvântul x · y obţinut din<br />
simbolurile lui x, în ordinea în care apar, urmate de cele ale lui y<br />
de asemenea în ordinea în care apar:<br />
x = 0100, y = 100, x · y = 0100100<br />
x = 000, y = ǫ, x · y = 000<br />
LFAC (2014-15) Curs 1 14 / 37
<strong>Limbaje</strong> formale<br />
Operaţii pe cuvinte<br />
Concatenarea a doua cuvinte x, y: cuvântul x · y obţinut din<br />
simbolurile lui x, în ordinea în care apar, urmate de cele ale lui y<br />
de asemenea în ordinea în care apar:<br />
x = 0100, y = 100, x · y = 0100100<br />
x = 000, y = ǫ, x · y = 000<br />
Concatenarea este asociativă<br />
LFAC (2014-15) Curs 1 14 / 37
<strong>Limbaje</strong> formale<br />
Operaţii pe cuvinte<br />
Concatenarea a doua cuvinte x, y: cuvântul x · y obţinut din<br />
simbolurile lui x, în ordinea în care apar, urmate de cele ale lui y<br />
de asemenea în ordinea în care apar:<br />
x = 0100, y = 100, x · y = 0100100<br />
x = 000, y = ǫ, x · y = 000<br />
Concatenarea este asociativă<br />
(V ∗ ,·) este monoid (ǫ este element neutru), se numeşte monoidul<br />
liber generat de V .<br />
LFAC (2014-15) Curs 1 14 / 37
<strong>Limbaje</strong> formale<br />
Operaţii pe cuvinte<br />
Concatenarea a doua cuvinte x, y: cuvântul x · y obţinut din<br />
simbolurile lui x, în ordinea în care apar, urmate de cele ale lui y<br />
de asemenea în ordinea în care apar:<br />
x = 0100, y = 100, x · y = 0100100<br />
x = 000, y = ǫ, x · y = 000<br />
Concatenarea este asociativă<br />
(V ∗ ,·) este monoid (ǫ este element neutru), se numeşte monoidul<br />
liber generat de V .<br />
Cuvântul v este un prefix al cuvântului u dacă ∃w ∈ V ∗ : u = vw;<br />
dacă w ∈ V + , atunci v este un prefix propriu al lui u.<br />
LFAC (2014-15) Curs 1 14 / 37
<strong>Limbaje</strong> formale<br />
Operaţii pe cuvinte<br />
Concatenarea a doua cuvinte x, y: cuvântul x · y obţinut din<br />
simbolurile lui x, în ordinea în care apar, urmate de cele ale lui y<br />
de asemenea în ordinea în care apar:<br />
x = 0100, y = 100, x · y = 0100100<br />
x = 000, y = ǫ, x · y = 000<br />
Concatenarea este asociativă<br />
(V ∗ ,·) este monoid (ǫ este element neutru), se numeşte monoidul<br />
liber generat de V .<br />
Cuvântul v este un prefix al cuvântului u dacă ∃w ∈ V ∗ : u = vw;<br />
dacă w ∈ V + , atunci v este un prefix propriu al lui u.<br />
Cuvântul v este un sufix al cuvântului u dacă ∃w ∈ V ∗ : u = wv;<br />
dacă w ∈ V + , atunci v este un sufix propriu al lui u.<br />
LFAC (2014-15) Curs 1 14 / 37
<strong>Limbaje</strong> formale<br />
Fie V un alfabet. O submulţime L ⊆ V ∗ este un limbaj (formal)<br />
peste alfabetul V (sau V-limbaj) dacă L are o descriere<br />
(matematică) finită.<br />
O descriere poate fi:<br />
LFAC (2014-15) Curs 1 15 / 37
<strong>Limbaje</strong> formale<br />
Fie V un alfabet. O submulţime L ⊆ V ∗ este un limbaj (formal)<br />
peste alfabetul V (sau V-limbaj) dacă L are o descriere<br />
(matematică) finită.<br />
O descriere poate fi:<br />
neformală (în limbaj natural):<br />
multimea cuvintelor peste alfabetul {0, 1} care contin un numar par<br />
de 0.<br />
L = {x ∈ V + : |x| este par}.<br />
{a n b n |n ∈ N}.<br />
{w ∈ {0, 1} ∗ |w se termina in 00}.<br />
LFAC (2014-15) Curs 1 15 / 37
<strong>Limbaje</strong> formale<br />
Fie V un alfabet. O submulţime L ⊆ V ∗ este un limbaj (formal)<br />
peste alfabetul V (sau V-limbaj) dacă L are o descriere<br />
(matematică) finită.<br />
O descriere poate fi:<br />
neformală (în limbaj natural):<br />
multimea cuvintelor peste alfabetul {0, 1} care contin un numar par<br />
de 0.<br />
L = {x ∈ V + : |x| este par}.<br />
{a n b n |n ∈ N}.<br />
{w ∈ {0, 1} ∗ |w se termina in 00}.<br />
formală (descriere matematică):<br />
o descriere inductivă a cuvintelor<br />
o descriere generativă a cuvintelor (gramatică generativă)<br />
o descriere a unei metode de recunoaştere a cuvintelor din limbaj<br />
(automat finit, automat pushdown, etc.)<br />
LFAC (2014-15) Curs 1 15 / 37
<strong>Limbaje</strong> formale<br />
Operaţii cu limbaje<br />
Operatiile cu multimi (reuniune, intersectie etc)<br />
Produs de limbaje: L 1 · L 2 = {u · v|u ∈ L 1 , v ∈ L 2 }<br />
Iteraţia (produsul Kleene): L ∗ = ⋃ n≥0 Ln , unde:<br />
L 0 = {ǫ}<br />
L n+1 = L n · L<br />
L R = {w R |w ∈ L}; dacă w = a 1 a 2 ...a n , atunci w R = a n ...a 2 a 1<br />
LFAC (2014-15) Curs 1 16 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 17 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Gramatici<br />
Definiţie 1<br />
O gramatica este un sistem G = (N, T, S, P), unde:<br />
N <strong>şi</strong> T sunt două alfabete disjuncte:<br />
N este multimea neterminalilor<br />
T este multimea terminalilor<br />
S ∈ N este simbolul de start (neterminalul iniţial)<br />
P este o multime finita de reguli (producţii) de forma x → y, unde<br />
x, y ∈ (N ∪ T) ∗ <strong>şi</strong> x conţine cel puţin un neterminal.<br />
LFAC (2014-15) Curs 1 18 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Derivare<br />
Definiţie 2<br />
Fie G = (N, T, S, P) o gramatica <strong>şi</strong> u, v ∈ (N ∪ T) ∗ .<br />
Spunem că v este derivat direct (într-un pas) de la u prin aplicarea<br />
regulii x → y, <strong>şi</strong> notăm u ⇒ v, dacă ∃p, q ∈ (N ∪ T) ∗ astfel încât<br />
u = pxq <strong>şi</strong> v = pyq.<br />
LFAC (2014-15) Curs 1 19 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Derivare<br />
Definiţie 2<br />
Fie G = (N, T, S, P) o gramatica <strong>şi</strong> u, v ∈ (N ∪ T) ∗ .<br />
Spunem că v este derivat direct (într-un pas) de la u prin aplicarea<br />
regulii x → y, <strong>şi</strong> notăm u ⇒ v, dacă ∃p, q ∈ (N ∪ T) ∗ astfel încât<br />
u = pxq <strong>şi</strong> v = pyq.<br />
Daca u 1 ⇒ u 2 ... ⇒ u n , n > 1, spunem ca u n este derivat din u 1 în<br />
G <strong>şi</strong> notam u1 ⇒ + u n .<br />
LFAC (2014-15) Curs 1 19 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Derivare<br />
Definiţie 2<br />
Fie G = (N, T, S, P) o gramatica <strong>şi</strong> u, v ∈ (N ∪ T) ∗ .<br />
Spunem că v este derivat direct (într-un pas) de la u prin aplicarea<br />
regulii x → y, <strong>şi</strong> notăm u ⇒ v, dacă ∃p, q ∈ (N ∪ T) ∗ astfel încât<br />
u = pxq <strong>şi</strong> v = pyq.<br />
Daca u 1 ⇒ u 2 ... ⇒ u n , n > 1, spunem ca u n este derivat din u 1 în<br />
G <strong>şi</strong> notam u1 ⇒ + u n .<br />
Scriem u ⇒ ∗ v dacă u ⇒ + v sau u = v.<br />
LFAC (2014-15) Curs 1 19 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Limbaj generat<br />
Definiţie 3<br />
Limbajul generat de gramatica G este:<br />
L(G) = {w ∈ T ∗ |S ⇒ + w}<br />
LFAC (2014-15) Curs 1 20 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Limbaj generat<br />
Definiţie 3<br />
Limbajul generat de gramatica G este:<br />
L(G) = {w ∈ T ∗ |S ⇒ + w}<br />
Definiţie 4<br />
Două gramatici G 1 <strong>şi</strong> G 2 sunt echivalente dacă L(G 1 ) = L(G 2 ).<br />
LFAC (2014-15) Curs 1 20 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Exemplu<br />
L = {a n b n |n ≥ 1}<br />
Definiţia inductivă:<br />
ab ∈ L<br />
Daca X ∈ L, atunci aXb ∈ L<br />
Nici un alt cuvânt nu face parte din L<br />
LFAC (2014-15) Curs 1 21 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Exemplu<br />
L = {a n b n |n ≥ 1}<br />
Definiţia inductivă:<br />
ab ∈ L<br />
Daca X ∈ L, atunci aXb ∈ L<br />
Nici un alt cuvânt nu face parte din L<br />
Definiţia generativă:<br />
G = ({X},{a, b}, X, P), unde P = {X → aXb, X → ab}<br />
Derivarea cuvântului a 3 b 3 :<br />
X ⇒ aXb ⇒ aaXbb ⇒ aaabbb<br />
LFAC (2014-15) Curs 1 21 / 37
Mecanisme de generare a limbajelor: gramatici<br />
Exemplu<br />
L = {a n b n c n |n ≥ 1}<br />
= (N, T, S, P), N = {S, X}, T = {a, b, c}, P constă din:<br />
1 S → abc<br />
2 S → aSXc<br />
3 cX → Xc<br />
4 bX → bb<br />
Derivarea cuvântului a 3 b 3 c 3 :<br />
S ⇒ (2) aSXc ⇒ (2) aaSXcXc ⇒ (1) aaabcXcXc ⇒ (3)<br />
aaabXccXc ⇒ (4) aaabbccXc ⇒ (3) aaabbcXcc ⇒ (3)<br />
aaabbXccc ⇒ (4) aaabbbccc = a 3 b 3 c 3<br />
LFAC (2014-15) Curs 1 22 / 37
Ierarhia lui Chomsky<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 23 / 37
Ierarhia lui Chomsky<br />
Ierarhia lui Chomsky<br />
1 Gramatici de tip 0 (generale)<br />
Nu exista restrictii asupra regulilor<br />
LFAC (2014-15) Curs 1 24 / 37
Ierarhia lui Chomsky<br />
Ierarhia lui Chomsky<br />
1 Gramatici de tip 0 (generale)<br />
Nu exista restrictii asupra regulilor<br />
2 Gramatici de tip 1 (dependente de context)<br />
reguli de forma pxq → pyq unde x ∈ N, y ≠ ǫ, p, q ∈ (N ∪ T) ∗ ,<br />
S → ǫ, caz în care S nu apare în dreapta producţiilor<br />
LFAC (2014-15) Curs 1 24 / 37
Ierarhia lui Chomsky<br />
Ierarhia lui Chomsky<br />
1 Gramatici de tip 0 (generale)<br />
Nu exista restrictii asupra regulilor<br />
2 Gramatici de tip 1 (dependente de context)<br />
reguli de forma pxq → pyq unde x ∈ N, y ≠ ǫ, p, q ∈ (N ∪ T) ∗ ,<br />
S → ǫ, caz în care S nu apare în dreapta producţiilor<br />
3 Gramatici de tip 2 (independente de context)<br />
reguli de forma A → y unde A ∈ N <strong>şi</strong> y ∈ (N ∪ T) ∗<br />
LFAC (2014-15) Curs 1 24 / 37
Ierarhia lui Chomsky<br />
Ierarhia lui Chomsky<br />
1 Gramatici de tip 0 (generale)<br />
Nu exista restrictii asupra regulilor<br />
2 Gramatici de tip 1 (dependente de context)<br />
reguli de forma pxq → pyq unde x ∈ N, y ≠ ǫ, p, q ∈ (N ∪ T) ∗ ,<br />
S → ǫ, caz în care S nu apare în dreapta producţiilor<br />
3 Gramatici de tip 2 (independente de context)<br />
reguli de forma A → y unde A ∈ N <strong>şi</strong> y ∈ (N ∪ T) ∗<br />
4 Gramatici de tip 3 (regulate)<br />
reguli A → u sau A → uB unde A, B ∈ N <strong>şi</strong> u ∈ T ∗ .<br />
LFAC (2014-15) Curs 1 24 / 37
Ierarhia lui Chomsky<br />
Exemple<br />
Ce tip au urmatoarele gramatici?<br />
G = (N, T, S, P), N = {S, A, B}, T = {a, b, c}, P:<br />
(1)S → aaAc<br />
(2)aAc → aAbBc<br />
(3)bB → bBc<br />
(4)Bc → Abc<br />
(5)A → a<br />
G = (N, T, S, P), N = {S, X}, T = {a, b, c}, P:<br />
(1)S → abc<br />
(2)S → aSXc<br />
(3)cX → Xc<br />
(4)bX → bb<br />
LFAC (2014-15) Curs 1 25 / 37
Ierarhia lui Chomsky<br />
Exemple<br />
Fie<br />
G = ({E},{a,+,−,(,)}, E,{E → a, E → (E + E), E → (E − E)}).<br />
Ce tip are gramatica G ?<br />
Construiti derivari din E pentru cuvintele (a+a) si ((a+a)−aa)<br />
Cuvantul (a+a−a) poate fi derivat din E?<br />
Descrieti limbajul L(G)<br />
Fie G = ({A, B},{a, b}, A,{A → aA, A → B, B → bB, B → ǫ})<br />
Ce tip are gramatica G ?<br />
Descrieti limbajul L(G)<br />
LFAC (2014-15) Curs 1 26 / 37
Ierarhia lui Chomsky<br />
Clasificarea limbajelor<br />
Un limbaj L este de tipul j daca exista o gramatica G de tipul j<br />
astfel incat L(G) = L, unde j ∈ {0, 1, 2, 3}.<br />
Vom nota cu L j clasa limbajelor de tipul j, unde j ∈ {0, 1, 2, 3}.<br />
Din ierarhia lui Chomsky: L 3 ⊂ L 2 ⊂ L 1 ⊂ L 0<br />
Incluziunile sunt stricte:<br />
orice limbaj de tip j + 1 este si de tip j ∈ {0, 1, 2}<br />
exista limbaje de tip j care nu sunt de tip j + 1, j ∈ {0, 1, 2}<br />
LFAC (2014-15) Curs 1 27 / 37
Ierarhia lui Chomsky<br />
Proprietăţi<br />
Fiecare din familiile L j cu 0 ≤ j ≤ 3 contine toate limbajele finite<br />
Fiecare din familiile L j cu 0 ≤ j ≤ 3 este inchisa la operatia de<br />
reuniune:<br />
∀j : 0 ≤ j ≤ 3<br />
L 1 , L 2 ∈ L j =⇒ L 1 ∪ L 2 ∈ L j ,<br />
LFAC (2014-15) Curs 1 28 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 29 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Gramatici de tip 3<br />
O gramatică G = (N, T, S, P) este de tip 3 dacă regulile sale au<br />
forma: A → u sau A → uB unde A, B ∈ N <strong>şi</strong> u ∈ T ∗ .<br />
Exemplu: G = ({D},{0, 1,..., 9}, D, P)<br />
Unde P este:<br />
D → 0D|1D|2D|...|9D<br />
D → 0|1|...|9<br />
LFAC (2014-15) Curs 1 30 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Exemple<br />
Fie gramatica G = ({A, B},{l, d}, A, P) unde P este:<br />
A → lB, B → lB|dB|ǫ (l = litera, d = cifra)<br />
LFAC (2014-15) Curs 1 31 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Exemple<br />
Fie gramatica G = ({A, B},{l, d}, A, P) unde P este:<br />
A → lB, B → lB|dB|ǫ (l = litera, d = cifra)<br />
L(G): multimea identificatorilor<br />
Fie gramatica G = ({A, B},{+,−, d}, A, P) unde P este:<br />
A → +dB|−dB|dB, B → dB|ǫ (d = cifra)<br />
LFAC (2014-15) Curs 1 31 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Exemple<br />
Fie gramatica G = ({A, B},{l, d}, A, P) unde P este:<br />
A → lB, B → lB|dB|ǫ (l = litera, d = cifra)<br />
L(G): multimea identificatorilor<br />
Fie gramatica G = ({A, B},{+,−, d}, A, P) unde P este:<br />
A → +dB|−dB|dB, B → dB|ǫ (d = cifra)<br />
L(G): multimea constantelor intregi<br />
LFAC (2014-15) Curs 1 31 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Forma normală<br />
O gramatică de tip 3 este in formă normală daca regulile sale sunt<br />
de forma A → a sau A → aB, unde a ∈ T , si, eventual S → ǫ ( caz<br />
in care S nu apare in dreapta regulilor).<br />
Pentru orice gramatica de tip 3 exista o gramatica echivalenta in<br />
forma normala.<br />
LFAC (2014-15) Curs 1 32 / 37
<strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
Forma normală<br />
Obtinerea gramaticii in forma normala echivalenta cu o gramatica<br />
de tip 3:<br />
Se poate arata ca pot fi eliminate regulile de forma A → B<br />
(redenumiri) si cele de forma A → ǫ (reguli de stergere), cu<br />
exceptia, eventual a regulii S → ǫ.<br />
Orice regula de forma A → a 1 a 2 ...a n se inlocuieste cu<br />
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,<br />
B 1 ,...,B n−1 fiind neterminali noi.<br />
Orice regula de forma A → a 1 a 2 ...a n B se inlocuieste cu A → a 1 B 1 ,<br />
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<br />
fiind neterminali noi<br />
Transformarile care se fac nu modifica limbajul generat de<br />
gramatica<br />
LFAC (2014-15) Curs 1 33 / 37
Proprietăţi de închidere pentru familia de limbaje regulate<br />
Structura cursului<br />
1 Prezentare curs<br />
2 <strong>Limbaje</strong> formale<br />
3 Mecanisme de generare a limbajelor: gramatici<br />
4 Ierarhia lui Chomsky<br />
5 <strong>Limbaje</strong> <strong>şi</strong> gramatici de tip 3 (regulate)<br />
6 Proprietăţi de închidere pentru familia de limbaje regulate<br />
LFAC (2014-15) Curs 1 34 / 37
Proprietăţi de închidere pentru familia de limbaje regulate<br />
Fie L, L 1 , L 2 limbaje de tip 3 (regulate).<br />
Atunci, urmatoarele limbaje sunt de asemenea de tip 3:<br />
L 1 ∪ L 2<br />
L 1 · L 2<br />
L ∗<br />
L R<br />
L 1 ∩ L 2<br />
L 1 \ L 2<br />
LFAC (2014-15) Curs 1 35 / 37
Proprietăţi de închidere pentru familia de limbaje regulate<br />
Închiderea la reununiune<br />
Fie L, L 1 , L 2 limbaje de tip 3 (regulate).<br />
Fie G 1 = (N 1 , T 1 , S 1 , P 1 ) si G 2 = (N 2 , T 2 , S 2 , P 2 ) gramatici de tip 3 cu<br />
L 1 = L(G 1 ), L 2 = L(G 2 ).<br />
Presupunem N 1 ∩ N2 = ∅ si gramaticile in forma normala.<br />
Închiderea la reuniune: se arata ca L 1 ∪ L 2 ∈ L 3 :<br />
Gramatica G = (N 1 ∪ N 2 ∪{S}, T 1 ∪ T 2 , S, P 1 ∪ P 2 ∪{S → S 1 , S → S 2 })<br />
este de tip 3 si genereaza limbajul L 1 ∪ L 2<br />
LFAC (2014-15) Curs 1 36 / 37
Proprietăţi de închidere pentru familia de limbaje regulate<br />
Închiderea la operaţia de produs<br />
Fie L 1 , L 2 limbaje de tip 3 (regulate).<br />
Fie G 1 = (N 1 , T 1 , S 1 , P 1 ) si G 2 = (N 2 , T 2 , S 2 , P 2 ) gramatici de tip 3 cu<br />
L 1 = L(G 1 ), L 2 = L(G 2 ).<br />
Presupunem N 1 ∩ N2 = ∅ si gramaticile in forma normala.<br />
Gramatica G = (N 1 ∪ N 2 , T 1 ∪ T 2 , S 1 , P) unde P consta din:<br />
regulile de forma A → aB din P 1<br />
reguli A → aS 2 pentru orice regula de forma A → a din P 1<br />
toate regulile din P 2<br />
este de tip 3 si genereaza limbajul L 1 L 2 .<br />
LFAC (2014-15) Curs 1 37 / 37