Tema |
Subtema |
Introducció |
1 Llenguatges
1.1 Divisió dels llenguatges de programació
1.2 Classificaci´o dels llenguatges de programació
2 Nocions bàsiques
3 Context d’un compilador
3.1 Preprocessador
3.2 Enllaçador
3.3 Depurador (debugger)
3.4 Assemblador
4 Estructura bàsica d’un compilador
4.1 Anàlisi lèxica
4.2 Anàlisi sintàctica
4.3 Anàlisi semàntica
4.4 Generador de codi intermedi
4.5 Optimitzador de codi
4.6 Generador de codi
4.7 Tractament d’errors
4.8 Gestor de la Taula de Símbols
4.9 Exemple
5 Construcció d’un compilador
5.1 Àmbits d’aplicació
5.2 Diagrames de Tombstone
5.3 Compilador enllaçador
5.4 Compilador creuat
5.5 Bootstrapping
5.6 Compilador interpretatiu |
Anàlisi lèxica |
1 Organització
1.1 Funcionament de l’analitzador lèxic
2 Construcció de l’analitzador lèxic
3 Especificació d’un analitzador lèxic
3.1 Tractament de les paraules clau (reservades)
4 Tractament d’errors
5 El sistema d’entrada
5.1 Mètode de la parella
5.2 Mètode del sentinella
5.3 Sistema d’entrada del LEX
6 La taula de símbols (TS)
6.1 Operacions
6.2 Organització de la TS
6.3 Definició d’un node |
Anàlisi sintàctica |
1 Introducció
2 Conceptes generals
2.1 Forma de Backus-Naur estesa (BNF)
2.2 Disseny de gramàtiques per a llenguatges de programaci´o
3 Anàlisi sintàctica descendent
3.1 Eliminació de la recursivitat per l’esquerra
3.2 Analitzador descendent recursiu
3.3 Anàlisi descendent predictiva
4 Anàlisi sintàctica ascendent
4.1 Gramàtiques LR(k)
4.2 Anàlisi SLR(1) |
Anàlisi semàntica |
1 Introducció
2 Anàlisi semàntica
2.1 Gramàtiques atribuïdes
3 Generació de codi intermedi
3.1 Representacions intermèdies
3.2 Notació postordre
3.3 Codi de tres adreces
3.4 Comparació de la implantació amb triples i quadruples. |
Lex - Lexical Analyzer Generation - (Laboratori) |
1 Esquema d’una especificació LEX
1.1 Declaracions
1.2 Regles
2 Expressions regulars LEX
2.1 Operadors
2.2 Funcions dels operadors
3 Secció de declaracions
3.1 Definicions
3.2 Condicions inicials
3.3 Altres declaracions
4 Accions
4.1 Variables
4.2 Funcions
4.3 MACROS
5 Ambigüitat de regles
6 Funcionament intern i utilització amb Bison
7 Generació d’un analitzador amb les eines FLEX i BISON |
BISON - GNU parser generator - (Laboratori) |
1 Introducció
2 Esquema d’una especificació BISON (YACC)
2.1 Declaracions
2.2 Regles
2.3 Procediments auxiliars
3 Accions semàntiques
4 L’analiltzdor sintàctic
5 Gramàtiques ambigües. Conflictes.
6 Precedència i associabilitat.
7 Mecanismes de recuperació d’errors.
8 Interacció analitzador lèxic/ analitzador sintàtic
8.1 Tipus de valors arbitraris
8.2 Nom dels arxius |
SYMTAB - Taula de símbols - (Laboratori) |
1 Introducció
2 Conceptes previs
3 Fitxers
4 Estructures de dades
4.1 Valors
4.2 Noms
4.3 Àmbit global
4.4 Àmbit imbricat
5 Funcions
5.1 Afegir entrades a la TS
5.2 Cercar entrades a la TS
5.3 Eliminar entreades a la TS
5.4 Àmbits imbricat: tractament
5.5 Optimitzacions |
Descripció |
En les sessions magistrals els estudiants podran comentar els dubtes de l'assignatura durant els descans de les classes o un cop finalitzada la sessió.
A les práctiques de laboratori els estudiants podran comentar els problemes sorgits durant les pràctiques.
Si els estudiants tenen un dubte durant la realització dels treballs podran enviar un correu electrònic al professor per tal de comentar-li el problema. El professor respondrà el correu amb una possible solució o demanant als estudiants que passin pel seu despatx per resoldre el dubte.
El professor es trobarà durant les hores de consulta al despatx 242 o al Laboratori 131. |
|
Altres comentaris i segona convocatòria |
El sistema d'avaluació serà fer un Examen final que comptarà el 100% de la nota |
Bàsica |
Aho, A.; Sethi, R.; Ullman, J., Compiladores: Principios, técnicas y herramientas, Addison-Wesley Iberoamericana, 1990
Codina i Banti, J.; Mejías i Jiménez, D.; Minguillón i Alfonso, J., Compiladors I, Barcelona UOC, 2002
Mason, T.; Brown, D., Lex & Yacc, O'Reilly & Associates, 1990
|
|
Complementària |
Waite, W.M.; Goos, G., Compiler Construction, Springer-Verlag, 1984
Pyster, A.B., Compiler Design and Construction. Tools and Techniques, Van Nostrand Reinhold, 1988
Holub, A.I., Compiler Design in C, Prentice-Hall International, 1990
Fischer, C. N.; LeBlanc, R. J., Crafting a Compiler with C, Benjamin/Cummings, 1991
Fisher, C.N.; LeBlanc, R.J., Creating a Compiler, The Benjamin/Cummings Publishing Company, 1988
Schreiner, A.T.; Friedman, H.G., Introduction to Compiler Construction with Unix, Prentice-Hall, Inc., 1985
Bennett, J.P., Introduction to Compiling Techniques. A First Course using ANSI C, LEX and YACC., Series in Software Engineering. McGraw-Hill International, 1990
Watt, D.A., Programming Language Processors, Prentice-Hall International Series in Computer Science, 1993
Gough, K.J., Syntax Analysis and Software Tools, International Computer Science Series. Addison-Wesley, 1988
Tremblay, J.P.; Sorenson, P.G., The Theory and Practice of Compiler Writing, McGraw-Hill Computer Science Series, 1985
Aho, A.; Ullman J.D., The theory of parsing, translations and compiling, volume I, Aho, A.; Ullman J.D., 1972
|
|
(*)La Guia docent és el document on es visualitza la proposta acadèmica de la URV. Aquest document és públic i no es pot modificar, llevat de casos excepcionals revisats per l'òrgan competent/ o degudament revisats d'acord amb la normativa vigent |
|