DADES IDENTIFICATIVES 2010_11
Assignatura (*) COMPILADORS I Codi 175171105
Ensenyament
Intel·ligència Artificial (2006)
Cicle 2n
Descriptors Crèd. Tipus Curs Període
4.5 Obligatòria Primer Únic anual
Llengua d'impartició
Castellà
Departament Enginyeria Informàtica i Matemàtiques
Coordinador/a
VIEJO GALICIA, LUIS ALEXANDRE
Adreça electrònica alexandre.viejo@urv.cat
Professors/es
VIEJO GALICIA, LUIS ALEXANDRE
Web http://moodle.urv.net/moodle/course/view.php?id=7034
Descripció general i informació rellevant L'objectiu docent de l'assignatura és doble. Per una banda, pretén que l'alumne adquireixi una formació básica en les tècniques de definició i d'implementació dels llenguatges de programació imperatius i, per una altra, que aquest sigui capaç d'aplicar-los al disseny, implementació i validació de sistemes de traducció de llenguatges concrets.

Competències
Tipus A Codi Competències Específiques
  Recerca
  AR6 Aplicar metodologies per a l'enginyeria del software.
  AR13 Analitzar, dissenyar i desenvolupar eines de programació
Tipus B Codi Competències Transversals
  Comú
  BC1 Creativitat. Desenvolupar idees i projectes originals
  BC2 Treballar autònomament amb iniciativa
  BC3 Flexibilitat. Disponibilitat per a l’adaptació en ambients canviants
  BC5 Transferibilitat. Aplicar coneixements i habilitats en entorns nous o no familiars i en contextos multidisciplinars relatius a la seva àrea específica
  BC14 Planificació i organització.
Tipus C Codi Competències Nuclears
  Comú
  CC5 Gestió del temps per al desenvolupament acadèmic i professional

Objectius d'aprenentatge
Objectius Competències
Adquirir una visió global del procés de traducció (compilació) dels llenguatges de programació imperatius. AR6
AR13
Comprendre el funcionament d'un analitzador lèxic, sintàctic i la funció d'una taula de símbols en el procés de compilació. AR6
Adquirir una formació teòrica básica en les técniques de definició i d'implementació dels llenguatges de programació imperatius. AR6
AR13
Uitilitzar l'eina de generació d'analitzadors lèxics lex i l'eina de generació d'analitzadors sintàctics yacc, per tal de dissenyar i construir la part frontal d'un compilador. BC1
BC2
BC3
BC5
BC14
Crear un document describint el disseny y la construcció de la part frontal d'un compilador. AR6
AR13
BC1
BC2
BC3
BC5
BC14
CC5

Continguts
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

Planificació
Metodologies  ::  Proves
  Competències (*) Hores a classe Hores fora de classe (**) Hores totals
Activitats Introductòries
2 0 2
 
Sessió Magistral
25 37.5 62.5
Pràctiques a laboratoris
12 9 21
Treballs
0 24 24
 
Atenció personalitzada
2 0 2
 
Proves de desenvolupament
2 0 2
 
(*) En el cas de docència no presencial, són les hores de treball amb suport vitual del professor.
(**) Les dades que apareixen a la taula de planificació són de caràcter orientatiu, considerant l’heterogeneïtat de l’alumnat

Metodologies
Metodologies
  Descripció
Activitats Introductòries Presentació de l'assignatura, on es descriuran els punts següents:

Objectius de l'assignatura
Continguts de l'assignatura
Bibliografia recomanada
Metodologia de treball
Treballs que es realitzaran al llarg del curs
Avaluació
Sessió Magistral La major part de les classes seran magistrals.
En elles, el professor explicarà conceptes teòrics de l'assignatura.
Pràctiques a laboratoris Cada dues setmanes els alumnes tindran una sessió de dues hores de laboratori.
En aquestes sessions s'introduiran les eines que s'utilitzaran durant el curs és a dir, flex i bison.
Els treballs a realitzar per part dels alumnes s'explicaran i comentaran a les classes de laboratori.
Els alumnes disposaran de les sessions de laboratori per avançar en la realització dels treballs.
Treballs Durant el curs es realitzaran tres treballs:
Utilizació de l'eina de generació automàtica flex.
Utilització de l'eina de generació automàtica d'analitzadors sintàctics bison.
Construcció de la part frontal del compilador.

Els treballs es realitzaran en grups de dues persones.

Atenció personalitzada
 
Atenció personalitzada
Treballs
Sessió Magistral
Pràctiques a laboratoris
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 147 o al Laboratori 131.

Avaluació
  Descripció Pes
Treballs Els estudiants han de lliurar tres treballs per tal de superar l'assignatura. El no lliurament d'un dels treballs suposarà no superar l'assignatura.

El treballs són els següents:

Utilització de l'eina de generació automàtica flex.

Utilització de l'eina de generació automàtica d'analitzadors sintàctics bison.

Construcció de la part frontal del compilador.

En cada lliurament del treball es realitzarà una entrevista. Si l'entrevista no es favorable el treball es considerarà no superat.
15% primer treball

15% segon treball

50% tercer treball
Proves de desenvolupament Examen dels conceptes teòrics explicats a les classes magistrals 20%
Altres

L'evaluació de la segona convocatoria es realitzarà mitjançant un examen de teoria i l'entrega dels treballs requerits a la part de pràctiques

 
Altres comentaris i segona convocatòria

Fonts d'informació

Bàsica Aho, A.; Sethi, R.; Ullman, J., Compiladores: Principios, técnicas y herramientas, Addison-Wesley Iberoamericana, 1990
Mason, T.; Brown, D., Lex & Yacc, O'Reilly & Associates, 1990
Codina i Banti, J.; Mejías i Jiménez, D.; Minguillón i Alfonso, J., Compiladors I, Barcelona UOC, 2002

Complementària Fischer, C. N.; LeBlanc, R. J., Crafting a Compiler with C, Benjamin/Cummings, 1991
Pyster, A.B., Compiler Design and Construction. Tools and Techniques, Van Nostrand Reinhold, 1988
Schreiner, A.T.; Friedman, H.G., Introduction to Compiler Construction with Unix, Prentice-Hall, Inc., 1985
Holub, A.I., Compiler Design in C, Prentice-Hall International, 1990
Watt, D.A., Programming Language Processors, Prentice-Hall International Series in Computer Science, 1993
Waite, W.M.; Goos, G., Compiler Construction, Springer-Verlag, 1984
Fisher, C.N.; LeBlanc, R.J., Creating a Compiler, The Benjamin/Cummings Publishing Company, 1988
Gough, K.J., Syntax Analysis and Software Tools, International Computer Science Series. Addison-Wesley, 1988
Bennett, J.P., Introduction to Compiling Techniques. A First Course using ANSI C, LEX and YACC., Series in Software Engineering. McGraw-Hill International, 1990
Aho, A.; Ullman J.D., The theory of parsing, translations and compiling, volume I, Aho, A.; Ullman J.D., 1972
Tremblay, J.P.; Sorenson, P.G., The Theory and Practice of Compiler Writing, McGraw-Hill Computer Science Series, 1985

Recomanacions

Assignatures que en continuen el temari
COMPILADORS II/17012012


 
Altres comentaris
Es recomana haver cursat prèviament l'assignatura: Llenguatges, gramàtiques i autòmats
(*)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