Limbaje Formale, Automate şi Compilatoare Curs 1 2018-19 LFAC (2018-19) Curs 1 1 / 45
Prezentare curs Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 2 / 45
Prezentare curs Limbaje Formale, Automate şi Compilatoare Titulari curs: O. Captarencu: otto@info.uaic.ro http://profs.info.uaic.ro/ otto/lfac.html A. Moruz:mmoruz@info.uaic.ro LFAC (2018-19) Curs 1 3 / 45
Prezentare curs Sistem evaluare 7 seminarii, 6 laboratoare; AS = activitatea la seminar (max 10 puncte); AL = activitatea la laborator (max 10 puncte); T1,T2 teste scrise în săptămânile 8, respectiv în sesiune; Punctajul final se obţine astfel: P = 3 * AS + 3 * AL + 2 * T1 + 2 * T2 Condiţii miminale de promovare: AS 5, AL 5, T 1 5, T 2 5; Punctaj minim pentru promovare: P 50; Nota finală se va stabili conform criteriilor ECTS; LFAC (2018-19) Curs 1 4 / 45
Prezentare curs Sistem evaluare AS = activitatea la seminar (max 10 puncte): două teste scrise AL = activitatea la laborator (max 10 puncte): 1 test laborator, 1 proiect (note de la 0 la 10) AL = media celor 2 note LFAC (2018-19) Curs 1 5 / 45
Prezentare curs Tematica cursului (partea I) LFAC (2018-19) Curs 1 6 / 45
Prezentare curs Tematica cursului (partea I) LFAC (2018-19) Curs 1 7 / 45
Prezentare curs Tematica cursului (partea I) Limbaje şi gramatici Limbaje regulate; gramatici, automate, expresii regulate Limbaje independente de context; gramatici, automate pushdown LFAC (2018-19) Curs 1 8 / 45
Prezentare curs Tematica cursului (partea II) Limbaje de programare: proiectare şi implementare Analiza lexicală Analiza sintactică Traducere în cod intermediar LFAC (2018-19) Curs 1 9 / 45
Prezentare curs Bibliografie (selecţii) 1 A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman: Compilers: Principles, Techniques, and Tools. Boston: Addison-Wesley, 2007 2 Gh. Grigoras. Constructia compilatoarelor - Algoritmi fundamentali, Ed. Universitatii Al. I. Cuza Iasi, ISBN 973-703-084-2, 274 pg., 2005 3 Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2006). Introduction to Automata Theory, Languages, and Computation (3rd ed.). Addison-Wesley 4 J. Toader - Limbaje formale şi automate, Editura Matrix Rom, Bucuresti, 1999. 5 J. Toader, S. Andrei - Limbaje formale şi teoria automatelor. Teorie şi practică, Editura Universitatii Al. I. Cuza, Iasi, 2002. LFAC (2018-19) Curs 1 10 / 45
Limbaje formale Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 11 / 45
Limbaje formale Alfabet, cuvânt, multţime de cuvinte Alfabet: V o mulţime finită (elementele lui V = simboluri ) LFAC (2018-19) Curs 1 12 / 45
Limbaje formale Alfabet, cuvânt, multţime de cuvinte Alfabet: V o mulţime finită (elementele lui V = simboluri ) Cuvânt: şir finit de simboluri cuvântul nul este notat cu ǫ sau λ. LFAC (2018-19) Curs 1 12 / 45
Limbaje formale Alfabet, cuvânt, multţime de cuvinte Alfabet: V o mulţime finită (elementele lui V = simboluri ) Cuvânt: şir finit de simboluri cuvântul nul este notat cu ǫ sau λ. Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: u. ǫ = 0 LFAC (2018-19) Curs 1 12 / 45
Limbaje formale Alfabet, cuvânt, multţime de cuvinte Alfabet: V o mulţime finită (elementele lui V = simboluri ) Cuvânt: şir finit de simboluri cuvântul nul este notat cu ǫ sau λ. Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: u. ǫ = 0 V - multimea tuturor cuvintelor peste alfabetul V, inclusiv ǫ. {0, 1} = {ǫ, 0, 1, 00, 01, 10, 11, 000, 001,...} LFAC (2018-19) Curs 1 12 / 45
Limbaje formale Alfabet, cuvânt, multţime de cuvinte Alfabet: V o mulţime finită (elementele lui V = simboluri ) Cuvânt: şir finit de simboluri cuvântul nul este notat cu ǫ sau λ. Lungimea unui cuvânt u: numarul simbolurilor sale. Notaţie: u. ǫ = 0 V - multimea tuturor cuvintelor peste alfabetul V, inclusiv ǫ. {0, 1} = {ǫ, 0, 1, 00, 01, 10, 11, 000, 001,...} V + - multimea tuturor cuvintelor nenule peste alfabetul V {0, 1} + = {0, 1, 00, 01, 10, 11, 000, 001,...} LFAC (2018-19) Curs 1 12 / 45
Limbaje formale Operaţii pe cuvinte Concatenarea a doua cuvinte x, y: cuvântul x y obţinut 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, x y = 0100100 x = 000, y = ǫ, x y = 000 LFAC (2018-19) Curs 1 13 / 45
Limbaje formale Operaţii pe cuvinte Concatenarea a doua cuvinte x, y: cuvântul x y obţinut 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, x y = 0100100 x = 000, y = ǫ, x y = 000 Concatenarea este asociativă LFAC (2018-19) Curs 1 13 / 45
Limbaje formale Operaţii pe cuvinte Concatenarea a doua cuvinte x, y: cuvântul x y obţinut 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, x y = 0100100 x = 000, y = ǫ, x y = 000 Concatenarea este asociativă (V, ) este monoid (ǫ este element neutru), se numeşte monoidul liber generat de V. LFAC (2018-19) Curs 1 13 / 45
Limbaje formale Operaţii pe cuvinte Concatenarea a doua cuvinte x, y: cuvântul x y obţinut 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, x y = 0100100 x = 000, y = ǫ, x y = 000 Concatenarea este asociativă (V, ) este monoid (ǫ este element neutru), se numeşte monoidul liber generat de V. Cuvântul v este un prefix al cuvântului u dacă w V : u = vw; dacă w V +, atunci v este un prefix propriu al lui u. LFAC (2018-19) Curs 1 13 / 45
Limbaje formale Operaţii pe cuvinte Concatenarea a doua cuvinte x, y: cuvântul x y obţinut 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, x y = 0100100 x = 000, y = ǫ, x y = 000 Concatenarea este asociativă (V, ) este monoid (ǫ este element neutru), se numeşte monoidul liber generat de V. Cuvântul v este un prefix al cuvântului u dacă w V : u = vw; dacă w V +, atunci v este un prefix propriu al lui u. Cuvântul v este un sufix al cuvântului u dacă w V : u = wv; dacă w V +, atunci v este un sufix propriu al lui u. LFAC (2018-19) Curs 1 13 / 45
Limbaje formale Fie V un alfabet. O submulţime L V este un limbaj (formal) peste alfabetul V (sau V-limbaj) dacă L are o descriere (matematică) finită. O descriere poate fi: LFAC (2018-19) Curs 1 14 / 45
Limbaje formale Fie V un alfabet. O submulţime L V este un limbaj (formal) peste alfabetul V (sau V-limbaj) dacă L are o descriere (matematică) finită. O descriere poate fi: neformală (în limbaj natural): multimea cuvintelor peste alfabetul {0, 1} care contin un numar par de 0. L = {x V + : x este par}. {a n b n n N}. {w {0, 1} w se termina in 00}. LFAC (2018-19) Curs 1 14 / 45
Limbaje formale Fie V un alfabet. O submulţime L V este un limbaj (formal) peste alfabetul V (sau V-limbaj) dacă L are o descriere (matematică) finită. O descriere poate fi: neformală (în limbaj natural): multimea cuvintelor peste alfabetul {0, 1} care contin un numar par de 0. L = {x V + : x este par}. {a n b n n N}. {w {0, 1} w se termina in 00}. formală (descriere matematică): o descriere inductivă a cuvintelor o descriere generativă a cuvintelor (gramatică generativă) o descriere a unei metode de recunoaştere a cuvintelor din limbaj (automat finit, automat pushdown, etc.) LFAC (2018-19) Curs 1 14 / 45
Limbaje formale Operaţii cu limbaje Operatiile cu multimi (reuniune, intersectie etc) Produs de limbaje: L 1 L 2 = {u v u L 1, v L 2 } Exemplu: L 1 = {a n, n 1}, L 2 = {b n, n 1} L 1 L 2 = {a n b m, n 1, m 1} Iteraţia (produsul Kleene): L = n 0 Ln, unde: L 0 = {ǫ} L n+1 = L n L Exemplu: L = {a}, L 0 = {ǫ}, L 1 = L, L 2 = {aa},...,l n = {a n } L = {a n, n 0} LFAC (2018-19) Curs 1 15 / 45
Mecanisme de generare a limbajelor: gramatici Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 16 / 45
Mecanisme de generare a limbajelor: gramatici Gramatici Definiţie 1 O gramatica este un sistem G = (N, T, S, P), unde: N şi T sunt două alfabete disjuncte: N este multimea neterminalilor T este multimea terminalilor S N este simbolul de start (neterminalul iniţial) P este o multime finita de reguli (producţii) de forma x y, unde x, y (N T) şi x conţine cel puţin un neterminal. LFAC (2018-19) Curs 1 17 / 45
Mecanisme de generare a limbajelor: gramatici Derivare Definiţie 2 Fie G = (N, T, S, P) o gramatica şi u, v (N T). Spunem că v este derivat direct (într-un pas) de la u prin aplicarea regulii x y, şi notăm u v, dacă p, q (N T) astfel încât u = pxq şi v = pyq. LFAC (2018-19) Curs 1 18 / 45
Mecanisme de generare a limbajelor: gramatici Derivare Definiţie 2 Fie G = (N, T, S, P) o gramatica şi u, v (N T). Spunem că v este derivat direct (într-un pas) de la u prin aplicarea regulii x y, şi notăm u v, dacă p, q (N T) astfel încât u = pxq şi v = pyq. Daca u 1 u 2... u n, n > 1, spunem ca u n este derivat din u 1 în G şi notam u1 + u n. LFAC (2018-19) Curs 1 18 / 45
Mecanisme de generare a limbajelor: gramatici Derivare Definiţie 2 Fie G = (N, T, S, P) o gramatica şi u, v (N T). Spunem că v este derivat direct (într-un pas) de la u prin aplicarea regulii x y, şi notăm u v, dacă p, q (N T) astfel încât u = pxq şi v = pyq. Daca u 1 u 2... u n, n > 1, spunem ca u n este derivat din u 1 în G şi notam u1 + u n. Scriem u v dacă u + v sau u = v. LFAC (2018-19) Curs 1 18 / 45
Mecanisme de generare a limbajelor: gramatici Limbaj generat Definiţie 3 Limbajul generat de gramatica G este: L(G) = {w T S + w} LFAC (2018-19) Curs 1 19 / 45
Mecanisme de generare a limbajelor: gramatici Limbaj generat Definiţie 3 Limbajul generat de gramatica G este: L(G) = {w T S + w} Definiţie 4 Două gramatici G 1 şi G 2 sunt echivalente dacă L(G 1 ) = L(G 2 ). LFAC (2018-19) Curs 1 19 / 45
Mecanisme de generare a limbajelor: gramatici Exemplu G = (N, T, S, P), N = {S, X, A}, T = {a, b}, P constă din: 1 S axb 2 ax aab 3 Xb ba 4 aa aa 5 A ǫ L(G) = {ab, abb, aabb} Gramatică echivalentă cu un singur neterminal? Ce limbaj generează gramatica dacă sunt eliminate utlimele două reguli? LFAC (2018-19) Curs 1 20 / 45
Mecanisme de generare a limbajelor: gramatici Exemplu L = {a n b n n 1} Definiţia inductivă: ab L Daca X L, atunci axb L Nici un alt cuvânt nu face parte din L LFAC (2018-19) Curs 1 21 / 45
Mecanisme de generare a limbajelor: gramatici Exemplu L = {a n b n n 1} Definiţia inductivă: ab L Daca X L, atunci axb L Nici un alt cuvânt nu face parte din L Definiţia generativă: G = ({X},{a, b}, X, P), unde P = {X axb, X ab} Derivarea cuvântului a 3 b 3 : X axb a(axb)b aa(ab)bb LFAC (2018-19) Curs 1 21 / 45
Mecanisme de generare a limbajelor: gramatici Exemplu L = {a n b n c n n 1} G = (N, T, S, P), N = {S, X}, T = {a, b, c}, P constă din: 1 S abc 2 S asxc 3 cx Xc 4 bx bb Derivarea cuvântului a 3 b 3 c 3 : S (2) asxc (2) aasxcxc (1) aaabcxcxc (3) aaabxccxc (4) aaabbccxc (3) aaabbcxcc (3) aaabbxccc (4) aaabbbccc = a 3 b 3 c 3 LFAC (2018-19) Curs 1 22 / 45
Ierarhia lui Chomsky Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 23 / 45
Ierarhia lui Chomsky Ierarhia lui Chomsky 1 Gramatici de tip 0 (generale) Nu exista restrictii asupra regulilor LFAC (2018-19) Curs 1 24 / 45
Ierarhia lui Chomsky Ierarhia lui Chomsky 1 Gramatici de tip 0 (generale) Nu exista restrictii asupra regulilor 2 Gramatici de tip 1 (dependente de context) reguli de forma pxq pyq unde x N, y ǫ, p, q (N T), S ǫ, caz în care S nu apare în dreapta regulilor LFAC (2018-19) Curs 1 24 / 45
Ierarhia lui Chomsky Ierarhia lui Chomsky 1 Gramatici de tip 0 (generale) Nu exista restrictii asupra regulilor 2 Gramatici de tip 1 (dependente de context) reguli de forma pxq pyq unde x N, y ǫ, p, q (N T), S ǫ, caz în care S nu apare în dreapta regulilor 3 Gramatici de tip 2 (independente de context) reguli de forma A y unde A N şi y (N T) LFAC (2018-19) Curs 1 24 / 45
Ierarhia lui Chomsky Ierarhia lui Chomsky 1 Gramatici de tip 0 (generale) Nu exista restrictii asupra regulilor 2 Gramatici de tip 1 (dependente de context) reguli de forma pxq pyq unde x N, y ǫ, p, q (N T), S ǫ, caz în care S nu apare în dreapta regulilor 3 Gramatici de tip 2 (independente de context) reguli de forma A y unde A N şi y (N T) 4 Gramatici de tip 3 (regulate) reguli A u sau A ub unde A, B N şi u T. LFAC (2018-19) Curs 1 24 / 45
Ierarhia lui Chomsky Exemple Tip 1: pxq pyq unde x N, y ǫ, p, q (N T), S ǫ G = (N, T, S, P), N = {S, A, B}, T = {a, b, c}, P: (1)S aaac (2)aAc aabbc (3)bB bbc (4)Bc Abc (5)A a Gramatica tip 1 G = (N, T, S, P), N = {S, X}, T = {a, b, c}, P: (1)S abc (2)S asxc (3)cX Xc (nu este regulă de tip 1!, gramatica va fi de tip 0) (4)bX bb LFAC (2018-19) Curs 1 25 / 45
Ierarhia lui Chomsky Exemple Tip 2: A y unde A N şi y (N T) Tip3: A u sau A ub unde A, B N şi u T. G: (1)x axb (2)x ǫ (Gramatică tip 2) G: (1)x ax (2)x bx (3)x ǫ (Gramatică tip 3) LFAC (2018-19) Curs 1 26 / 45
Ierarhia lui Chomsky Exemple Fie G = ({E},{a,+,,(,)}, E,{E a, E (E + E), E (E E)}). Ce tip are gramatica G? Construiti derivari din E pentru cuvintele (a+a) si ((a+a) a) Cuvantul (a+a a) poate fi derivat din E? Descrieti limbajul L(G) Fie G = ({A, B},{a, b}, A,{A aa, A B, B bb, B ǫ}) Ce tip are gramatica G? Descrieti limbajul L(G) LFAC (2018-19) Curs 1 27 / 45
Ierarhia lui Chomsky Clasificarea limbajelor Un limbaj L este de tipul j daca exista o gramatica G de tipul j astfel incat L(G) = L, unde j {0, 1, 2, 3}. Vom nota cu L j clasa limbajelor de tipul j, unde j {0, 1, 2, 3}. Are loc: L 3 L 2 L 1 L 0 Incluziunile sunt stricte: orice limbaj de tip j + 1 este si de tip j {0, 1, 2} exista limbaje de tip j care nu sunt de tip j + 1, j {0, 1, 2} LFAC (2018-19) Curs 1 28 / 45
Ierarhia lui Chomsky Proprietăţi Fiecare din familiile L j cu 0 j 3 contine toate limbajele finite Fiecare din familiile L j cu 0 j 3 este inchisa la operatia de reuniune: j : 0 j 3 L 1, L 2 L j = L 1 L 2 L j, LFAC (2018-19) Curs 1 29 / 45
Ierarhia lui Chomsky Notaţii alternative pentru gramatici de tip 2: BNF LFAC (2018-19) Curs 1 30 / 45
Ierarhia lui Chomsky gramatici DTD generează mulţimea documentelor XML cu o anumită structură (limbaj independent de context) LFAC (2018-19) Curs 1 31 / 45
Ierarhia lui Chomsky gramatici DTD Un cuvânt din limbajul generat de gramtica DTD: LFAC (2018-19) Curs 1 32 / 45
Ierarhia lui Chomsky XML Schema - rol similar gramaticilor DTD LFAC (2018-19) Curs 1 33 / 45
Limbaje şi gramatici de tip 3 (regulate) Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 34 / 45
Limbaje şi gramatici de tip 3 (regulate) Gramatici de tip 3 O gramatică G = (N, T, S, P) este de tip 3 dacă regulile sale au forma: A u sau A ub unde A, B N şi u T. Exemplu: G = ({D},{0, 1,..., 9}, D, P) Unde P este: D 0D 1D 2D... 9D D 0 1... 9 LFAC (2018-19) Curs 1 35 / 45
Limbaje şi gramatici de tip 3 (regulate) Exemple Fie gramatica G = ({A, B},{l, d}, A, P) unde P este: A lb, B lb db ǫ (l = litera, d = cifra) LFAC (2018-19) Curs 1 36 / 45
Limbaje şi gramatici de tip 3 (regulate) Exemple Fie gramatica G = ({A, B},{l, d}, A, P) unde P este: A lb, B lb db ǫ (l = litera, d = cifra) L(G): multimea identificatorilor Fie gramatica G = ({A, B},{+,, d}, A, P) unde P este: A +db db db, B db ǫ (d = cifra) LFAC (2018-19) Curs 1 36 / 45
Limbaje şi gramatici de tip 3 (regulate) Exemple Fie gramatica G = ({A, B},{l, d}, A, P) unde P este: A lb, B lb db ǫ (l = litera, d = cifra) L(G): multimea identificatorilor Fie gramatica G = ({A, B},{+,, d}, A, P) unde P este: A +db db db, B db ǫ (d = cifra) L(G): multimea constantelor intregi LFAC (2018-19) Curs 1 36 / 45
Limbaje şi gramatici de tip 3 (regulate) Forma normală O gramatică de tip 3 este in formă normală daca regulile sale sunt de forma A a sau A ab, unde a T, si, eventual S ǫ ( caz in care S nu apare in dreapta regulilor). Pentru orice gramatica de tip 3 exista o gramatica echivalenta in forma normala. LFAC (2018-19) Curs 1 37 / 45
Limbaje şi gramatici de tip 3 (regulate) Forma normală Obtinerea gramaticii in forma normala echivalenta cu o gramatica de tip 3: Se poate arata ca pot fi eliminate regulile de forma A B (redenumiri) si cele de forma A ǫ (reguli de stergere), cu exceptia, eventual a regulii S ǫ. Orice regula de forma A a 1 a 2...a n se inlocuieste 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 regula de forma A a 1 a 2...a n B se inlocuieste 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 Transformarile care se fac nu modifica limbajul generat de gramatica LFAC (2018-19) Curs 1 38 / 45
Proprietăţi de închidere pentru familia de limbaje regulate Limbaje Formale, Automate şi Compilatoare - Curs 1 1 Prezentare curs 2 Limbaje formale 3 Mecanisme de generare a limbajelor: gramatici 4 Ierarhia lui Chomsky 5 Limbaje şi gramatici de tip 3 (regulate) 6 Proprietăţi de închidere pentru familia de limbaje regulate LFAC (2018-19) Curs 1 39 / 45
Proprietăţi de închidere pentru familia de limbaje regulate Fie L, L 1, L 2 limbaje de tip 3 (regulate). Atunci, urmatoarele limbaje sunt de asemenea de tip 3: L 1 L 2 L 1 L 2 L L 1 L 2 L 1 \ L 2 LFAC (2018-19) Curs 1 40 / 45