Universitatea "Babeş-Bolyai" din Cluj-Napoca

Facultatea de Matematică şi Informatică
FISA DISCIPLINEI

Metode de proiectare a compilatoarelor Compiler design methods
Cod
Semes-
trul
Ore: C+S+L
Credite
Tipul
Sectia
MI046
6
2+0+2
6
obligatorie
Informatică
(Computer Science)
Cadre didactice indrumatoare Teaching Staff in Charge
Prof. Dr. CSORNYEI Zoltan
Lect. Dr. MOTOGNA Simona Claudia, motogna@cs.ubbcluj.ro
Obiective Aims
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.
The purpose of this course is a complete presentation of the basic notions and methods used in the design and implementation of the programming languages. The laboratory aims are to construct a compiler for a very simple programming language, using some of the methods introduced in the course.
Continut
1. Prezentarea generala a problemelor proiectarii si implementarii limbajelor de programare. Limbaje de programare,interpretare si compilare. Structura generala si moduri de a compilatoarelor.
2. Analiza lexicala. Rolul analizei lexicale in procesul compilarii. Gramaticile regulare, expresiile regulare si automatele finite ca instrumente de specificare a atimilor lexicali. Structura si gestionarea tabelului de simboluri si a formei interne a programului. Gestionarea memoriei. Metode de generare automata a analizorilor lexicali; generatorul LEX.
3. Analiza sintactica. Rolul analizei sintactice. Moduri de reprezentare a arborelui de analiza sintactica. Metode tabelare de analiza sintactica ( Cocke-Younger-Kasami, Earley ). Metode descendente de analiza sintactica ( recursiv-descendenta, 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) ). Generarea automata a analizorilor sintactici; generatorul YACC.
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 ( declaratii, expresii, instructiunea de atribuire, instructiunile de control case-while-repeat-for, proceduri, instructiuni de intrare-iesire.
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 Assessment
Nota finala se acorda pe baza urmatoarelor activitati:
-lucrari de verificare periodice
-lucrari de laborator
-examen final
-periodical assessments
-laboratory work
-final exam