Universitatea "Babes-Bolyai" Cluj-Napoca
Facultatea de Matematica si Informatica
FISA DISCIPLINEI

Metode de proiectare a compilatoarelor
Cod
Semes-
trul
Ore: C+S+L
Credite
Tipul
Sectia
MI046
6
2+0+2
6
obligatorie
Informatică
Cadre didactice indrumatoare
Lect. Dr. MOTOGNA Simona Claudia, motogna@cs.ubbcluj.ro
Prof. Dr. CSORNYEI Zoltan
Obiective
Cursul urmareste prezentarea sistematica a notiunilor si metodelor de baza utilizate la proiectarea si implementarea limbajelor de programare. Laboratorul are ca tematica construirea unui compilator pentru un mini-limbaj de programare, cu utilizarea unora din metodele prezentate la curs.
Continut
1. Prezentarea generala a problemelor proiectarii si implementarii limbajelor de programare. Limbaje de programare,interpretare si compilare. Structura generala a unui compilator.
2. Analiza lexicala. Rolul analizei lexicale in procesul compilarii. Structura si gestionarea tabelului de simboluri si a formei interne a programului. Gestionarea memoriei.
3. Analiza sintactica. Rolul analizei sintactice. Moduri de reprezentare a arborelui de analiza sintactica. Metode descendente de analiza sintactica (LL(1), elemente de teoria gramaticilor de tip LL(k) ). Metode ascendente de analiza sintactica (precedenta simpla, precedenta a operatorilor, LR(0), SLR, LR(1),LALR, elemente de teoria gramaticilor de tip LR(k) ).
4. Forme intermediare ale programelor: forme poloneze, codul cvadrupletelor, codul tripletelor, arbore sintactic abstract. Translatarea orientata de sintaxa a diverselor tipuri de instructiuni.
5. Analiza semantica. Rolul analizei semantice. Stiva semantica in compilarea ascendenta. Actiuni semantice in compilarea descendenta. Gramatici de atribute si utilizarea lor in translatare. Exemple de translatare la forme intermediare a principalelor constructii a limbajelor de programare.
6. Tratarea erorilor in diferitele faze ale compilarii.
7. Optimizarea codului intermediar. Principalele surse de optimizare independente de masina si utilizarea lor in compilare.
8. Generarea codului obiect pentru calculatore cu acumulator si pentru calculatore cu registri generali in cazul limbajelor fara si cu structura de bloc.
Bibliografie
1. J.E. Hopcroft, J.D. Ullman - Introduction to Automata Theory, Languages and Computation, Addison Wesley, 1979
2. L.D. Serbanati - Limbaje de programare si compilatoare, Ed. Academiei RSR, 1987
3. A.V. Aho, D.J. Ullman - Principles of computer design, Addison-Wesley, 1978
4. A.V. Aho, D.J. Ullman - The theory of parsing, translation and compiling, Prentice-Hall, Engl. Cliffs., N.J., 1972, 1973
5. D. Gries - Compiler construction for digital computers,, John Wiley, New York, 1971
6. G. Moldovan, V. Cioban, M. Lupea - Limbaje formale si automate. Culegere de probleme, Univ. "Babes-Bolyai", Cluj-Napoca, 1996
Evaluare
Nota finala se acorda pe baza urmatoarelor activitati:
-lucrari de laborator
-examen final