Cod: I3501
Titular curs: prof. univ. dr. I. Iancu
Forma de invatamant: cursuri de zi
Ciclul: 1, anul III, Semestrul 1
| Curs: 28h, Laborator: 28h/ AA: 28h |
Nr. credite: 5
Profil: informatica
Specializare: informatica
Tip disciplina: obligatorie
Categoria formativa: de specialitate
Obiective:
- Insusirea fundamentelor teoretice si practice care stau la baza proiectarii unui compilator
Continutul cursului:
I. Limbaje formale si automate
- Gramatici si limbaje
- Definitii, clasificarea Chomsky
- Proprietati
- Recursivitate
- Automate finite
- Definitii, reprezentare
- Automate finite complet deterministe
- Minimizarea automatelor finite
- Automate finite si limbaje regulate
- Limbaje independente de context
- Proprietati, reprezentare
- Simplificari ale gramaticilor independente de context
- Automate pushdown
- Definire, functionare
- Limbaje acceptate de automate pushdown
- Echivalarea limbajelor independente de context cu
cele acceptate de automate pushdown
- Clase speciale de gramatici independente de context
- Gramatici in forma normala Chomsky
- Gramatici nerecursive
- Gramatici LL
- Gramatici LR
- Gramatici de precedenta
II. Compilatoare
- Traducerea limbajelor
- Structura unui compilator
- Scheme de traducere orientate de sintaxa
- Traducatoare finite
- Traducatoare pushdown
- Analiza lexicala
- Generalitati
- Proiectarea unui analizor lexical
- Analiza sintactica
- Algoritmi generali
- Analiza LL(k)
- Analiza LR(k)
- Analiza de tip precedenta
- Analiza semantica
- Specificarea semanticii
- Model de analiza semantica
- Generarea codului intermediar
- Arbori sintactici
- Cod intermediar cu trei adrese: exemplu de traducerea in cod cu trei adrese
a unor instructiuni
- Optimizarea codului intermediar
- Optimizari simple
- Optimizari globale
- Optimizari locale
- Generarea codului obiect
- Tipuri de cod obiect
- Algoritmi de generare si eficientizare
- Tabela de simboluri
- Tipuri de tabele
- Tabele arborescente
- Tabele dispersate
- Tratarea erorilor
- Sursele erorilor
- Tehnici de corectare
Discipline anterioare cerute:
- Programare procedurala
Cod: I1104
- Programare orientata obiect
Cod: I1203
- Tehnici avansate de programare
Cod: I2402
Discipline anterioare recomandate:
- Arhitectura calculatoarelor
Cod: I1105
Forma de evaluare: examen si activitatea din timpul anului la laborator
- Examenul consta in proba scrisa (si proba orala pentru cei care care doresc sa-si
mareasca nota de la scris)
- Nota finala este media ponderata a notei de la examen si a celei de la laborator,
cu ponderile 60% si respectiv 40%
Cerinte minime pentru promovare:
- Cunoasterea urmatoarelor notiuni
- gramatici: definitie, clasificare , limbaj generat
- automate finite si pushdown: definitie, configuratie, functionare, limbaj acceptat
- structura unui compilator
- principiul de functionare al analizei sintactice ascendente/descendente
- un algoritm de analiza sintactica
- reprezentarea codului intermediar prin arbori sintactici
- tipuri de cod obiect
- generalitati despre tabela de simboluri: organizare, rolul ei in fazele compilarii
- Activitate la laborator
- prezenta la cel putin 50% din laboratoare
- nota de promovare la temele de laborator
Continutul laboratorului:
- Minimizarea automatelor finite
- Implementarea a doi algoritmi de simplificare a gramaticilor independente de context
- Implementarea unui algoritm de verificare ca o gramatica este LL(k) (sau LR(k) sau de precedenta)
- Implementarea unui analizor lexical
- Implementarea unui algoritm de analiza sintactica
- Implementarea unui algoritm de generare a codului intermediar
- Implementarea algoritmului pentru optimizari globale
- Implementarea algoritmilor de generare a codului obiect folosind grafuri orientate fara cicluri
- Implementarea unui algoritm de creare si accesare a tabelei de simboluri
Bibliografie:
- I. Iancu, Automate, limbaje si compilatoare , Editura SITECH, Craiova, 2008
- A. Dinca, M. Andrei, Limbaje formale si aplicatii , Editura Universitaria, Craiova, 2002
- Gh. Paun, Probleme actuale in teoria limbajelor formale, Editura Stiintifica si Enciclopedica, Bucuresti, 1984
- C. Popovici, N. Tandareanu, L. Livovschi, H. Georgescu, Bazele informaticii, Editura Didactica si Pedagogica, Bucuresti, 1981
- I. Iancu: Proiectarea compilatoarelor , Editura Universitaria, Craiova, 2002
- I. Iancu: Teoria compilatoarelor , Editura Vlad&Vlad, Craiova, 1997
- I. Iancu, M. Andrei: Teoria compilatoarelor si semantica limbajelor de programare.
Indrumar de laborator, Reprografia Universitatii din Craiova, 1998.
- L. D. Serbanati: Limbaje de programare si compilatoare, Ed. Academiei, 1987
- Ad. Atanasiu: Limbaje formale si tehnici de compilare. Caiet de lucrari practice.
Reprografia Univ. Bucuresti, 1974
- J. P. Tremblay, P. G. Sorenson: The theory and practice of compiler writing, Mc Graw-Hill, 1985
- D. Gries: Compiler construction for digital computers, Wiley and Sons, New York, 1971
- D. Vaida: Limbaje formale si tehnici de compilare, Tipografia Univ. Bucuresti, 1978
- A. V. Aho, J. D. Ullman: The theory of parsing, translation and compiling, Prentice-Hall, 1973
- A. V. Aho, R. Sethi, J. D. Ullman: Compilers. Principles, techniques and tools, Addison-Wesley,1986
- A. Hajjam el Hassani: Les compilateurss et leur principles, Ed. Scientifiques et Techniques, Mulhouse, 1993
|