DADES IDENTIFICATIVES 2006_07
Assignatura COMPILADORS I Codi 175111105
Ensenyament
Enginyeria Informàtica i de la Seguretat (2006)
Cicle 2on
Descriptors Crèd. Tipus Curs Període
4.5 Obligatòria Primer Únic anual
Llengua d'impartició
Català
Departament Enginyeria Informatica i Matematiques
Coordinador/a
Adreça electrònica jordi.castella@urv.cat
Professors/es
CASTELLA ROCA, JORDI
Web http://www.etse.urv.es/EngInf/assig/cli/
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
  AR17 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
  BC4 Resoldre problemes de manera efectiva
  BC6 Actuar amb un esperit crític i responsable
  BC13 Aprendre a aprendre
  BC14 Planificació i organització
Tipus C Codi Competències Nuclears
  Comú
  CC1 Domini de l’expressió i la comprensió del/s idioma/es estrangers per al desenvolupament professional derivat del curs del postgrau.
  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. AR17
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
AR17
Adquirir una formació teòrica básica en les técniques de definició i d'implementació dels llenguatges de programació imperatius. AR6
AR17
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
BC4
BC6
BC13
BC14
Crear un document describint el disseny y la construcció de la part frontal d'un compilador. AR17
BC1
BC2
BC4
BC6
BC13
BC14
CC1
CC5

Continguts
Tema Subtema
Introducció a les técniques de traducció Tipus de traductors
Llenguatges de programació
Estructura d'un compilador
Agrupació de les fases de compilació
Context d'un compilador
Eines de suport a la contrucció de compiladors
Anàlisi lèxica Funció de l'analitzador lèxic
Tokens, patrons i lexemes
El sistema d'entrada
Especificació dels components lèxics. Definicions regulars
Reconeixement dels components lèxics
Tractament de les paraules reservades
Detecció i recuperació d'errors lèxics
Disseny d'un analitzador lèxic per a un llenguatge senzill
Lex - Lexical Analyzer Generation - Lex - Lexical Analyzer Generation -
Anàlisi sintàctica Funció de l'analitzador sintàctic
Especificació de la sintaxi dels llenguatges de programació
Arbres d'anàlisi sintàctica. Procés de construcció.
Tècniques generals d'anàlisi sintàctica
Analitzadors sintàctics descendents predictius Gramàtiques LL(k)
Transformació de gramàtiques en LL(1)
Analitzador sintàctic LL(1)
Implementació recursiva de l'analitzador sintàctic LL(1)
Tractament de l'ambigüitat a l'anàlisi sintàctica LL(1)
Analitzadors sintàctics ascendents predictius Anàlisi sintàctica predictiva per desplaçament i reducció
Gramàtiques de precedència d'operadors
Gramàtiques de precedència simple
Analitzadors sintàctics LR
Gramàtiques LR(k)
Algorisme general d'anàlisi sintàctica LR
Anàlisi sintàctica LR(0)
Anàlisi sintàctica SLR(1)
Anàlisi sintàctica LR canònic
Anàlisi sintàctica LALR(1)
Generació eficient dels conjunts dítems LR(1) a l'anàlisi sintàctica LR
Tractament d'errors a l'anàlisi sintàctica LR
Yacc - Yet Another Compiler Compiler - Yacc - Yet Another Compiler Compiler -
Traducció dirigida per la sintaxi Estructura d'un compilador dirigit per la sintaxi
Definicions dirigides per la sintaxi
Avaluació de les regles semàntiques
Arbres sintàctics abstractes
Algorismes d'avaluació d'atributs basats en el recorregut d'arbres
Esquemes de traducció dirigits per la sintaxi
Taules de símbols Funció de la taula de símbols
Contingut de la taula de símbols
El TAD taula de símbols
Tècniques bàsiques d'implementació
Llenguatges estructurats en blocs
Extensions a les estructures de bloc

Planificació
Metodologies  ::  Proves
  Competències (*) Hores a classe Hores fora de classe (**) Hores totals
Activitats Introductòries
2 0 2
 
Sessió Magistral
26 39 65
Pràctiques a laboratoris
12 9 21
Treballs
0 24 24
 
Atenció personalitzada
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, lex i yacc.
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 lex.
Utilització de l'eina de generació automàtica d'analitzadors sintàctics yacc.
Construcció de la part frontal del compilador.

Els treballs es realitzaran en grups de dues persones.

Atenció personalitzada
 
Sessió Magistral
Pràctiques a laboratoris
Treballs
Atenció personalitzada
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:

Utilizació de l'eina de generació automàtica lex.
Utilització de l'eina de generació automàtica d'analitzadors sintàctics yacc.
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.
10% primer treball

20% segon treball

70% tercer treball
 
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
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

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