Limbaje Formale, Automate şi Compilatoare

dascaleacvladut
from dascaleacvladut More from this publisher
20.11.2014 Views

Limbaje Formale, Automate şi Compilatoare Curs 1 2014-15 LFAC (2014-15) Curs 1 1 / 37

<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!