Universitat de Girona

Programa de l'assignatura

Curs 2003-04

3105200730 MÈTODES I EINES DE COMPILACIÓ


Objectius  

- Proporcionar a l'alumne les tècniques bàsiques que permeten la construcció de traductors o intèrprets de llenguatges de programació. TMostrar que aquestes tècniques són fàcilment exportables a qualsevol tipus de traductor o intèrpret.
- Aquesta assignatura proporciona una visió sistematitzada i profunda de com són, funcionen i s'estructuren els llenguatges de programació, tant des del punt de vista intern com extern.
- Aprendre a usar eines d'ajut a la construcció de compiladors i conèixer el seu funcionament.
- Aprofundir en els components semàntics i de generació de codi.
- Contemplar les diferències existents en els compiladors dels diferents tipus de llenguatges.

 
Prerrequisits  

Obligatoris: cap
Recomanats: Llenguatges, gramàtiques i autòmats

 
Contingut (Programa)  

1.- Introducció. ( Temporalització: 2h) 1.1 Traductors. Compiladors i intèrprets.
1.2 Utilitat de les tècniques de compilació.
1.3 Estructura d'un compilador.
1.4 Compilació d'un compilador.
2.- Anàlisi lèxic. (Temporalització: 8h) 2.1 Descripció i tasques.
2.2 especificació dels Tokens.
2.3 Expressions regulars i llenguatges regulars.
2.4 Autòmats finits.
2.5 Programació d'un autòmat finit determinista.
2.6 Programació d'un autòmat finit indeterminista.
3.- Gramàtiques lliures de context.. (Temporalització: 8h.) 3.1 Definició de gramàtica.
3.2 Gramàtiques lliures de context.
3.3 Derivacions. Arbre de derivació.
3.4 Ambigüitat. Recursivitat.
3.5 Anul·lable. Primer. Següent.
3.6 Gen. dels conceptes de conjunt primer i de següent.
3.7 Manipulacions de gramàtiques.
3.8 Autòmats de pila.
4.- Anàlisi sintàctic. (Temporalització: 8 h.) 4.1 Descripció, tasques i tipus.
4.2 Anàlisi sintàctic descendent.
4.3 Anàlisi sintàctic ascendent.
4.4 Comparació entre mètodes de anàlisi.
5.- Taula de símbols. (Temporalització: 2 h.) 5.1 Estructura.
5.2 Funcionament.
5.3 Organització.
6.- Anàlisi semàntic. (Temporalització: 8 h.) 6.1 Descripció i tasques.
6.2 Gramàtiques d'atributs.
6.3 Sistema de tipus.
6.4 Gestió de memòria.
7.- Codi intermedi. (Temporalització: 4h.) 7.1 Descripció i tipus.
7.2 Exemples de generació.
8.- Optimització. (Temporalització: 8h.) 8.1 Descripció i tipus.
8.2 Transformacions bàsiques.
8.3 Dintre blocs bàsics.
9.- Generació de codi. (Temporalització: 6h.) 9.1 Descripció i tipus.
9.2 Assignació de registres.
9.3 Anàlisi del flux de dades.
 
Bibliografia  


Bibliografia bàsica a utilitzar durant el curs.

- AHO, A.; SETHI, R.; ULMAN, J.D.: "Compiladores. Principios, técnicas y herramientas" Addison-Wesley Iberoamericana (1990).
- PARR, T.J: "Language translation using PCCTS and C++ a reference guide" San Jose Automata Publishing Company 1996
- FISHER, C.N.; LEBLANC St. R.J.: "Grafting a Compiler" The Benjamin/Cummings Publ. Comp. 1988.
- Manual de PCCTS. ftp://ftp.th_darmstad.de/pub/programming/languages/compiler-compiler/pccts/documntation/
- WILHELM, R.; MAURER, O.: "Compiler Design" Ed. Addison-Wesley, 1995

Altra bibliografia utilitzada:

- AHO, A.; ULMAN, J.D.: "The theory of parsing, tranlation and Compiling" Vol I-II. Prentice-Hall
- LEWIS, P.M.; ROSENKRANTS, D.J.; STEARNS, R.E.: "Compiler design theory" Addison-Wesley
- BACKHOUSE, R.C.: "Sintax of programming languages", Prentice-Hall
- HALMES, J.: "Object-Oriented compiler construction" Prentice-Hall (1995)
- SCHREINER, A.T.; FRIEDMAN, Jr. M.G.: "Introduction to Compiler Construction with UNIX" Prentice-Hall, 1985
- Manual de Flex-Bison. ftp://ftp.th_darmstad.de/pub/gnu/
- TEUFEL, B.; SCHMIDT, S.; TEUFEL, T.: "Compiladores. Conceptos fundamentales", Addison-Wesley

 
Mètodes docents  

Classes de teoria i problemes: 4 hores setmanals
Pràctiques: 2 hores setmanals   

 
Tipus d'exàmens i avaluacions  

70% teoria + 30% pràctiques. Nota mínima de cada part 4.5/10.

 
Informació addicional  

Realització d'una pràctica d'anàlisi lèxic, sintàctic i semàntic sobre PCCTS.

 
Llengua de les classes  

Català