Objectius |
Competències |
Adquirir una visió global del procés de traducció (compilació) dels llenguatges de programació imperatius. |
A5 A17
|
|
|
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ó. |
A5
|
|
|
Adquirir una formació teòrica básica en les técniques de definició i d'implementació dels llenguatges de programació imperatius. |
A5 A17
|
|
|
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. |
|
B1 B2 B3 B5 B14
|
|
Crear un document describint el disseny y la construcció de la part frontal d'un compilador. |
A5 A17
|
B1 B2 B3 B5 B14
|
C5
|
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 |
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
|
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.
|
|
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. |
|
|
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 |
|
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
|
|
Assignatures que en continuen el temari |
|
|
Altres comentaris |
Es recomana haver cursat prèviament l'assignatura:
Llenguatges, gramàtiques i autòmats |
|