Anar a: Buscar
FIB > Els estudis > Pla 91 > Pàgines de les assignatures > Departament LSI > CL1 Castellano | English
A
AD
AED
AIA
AP
BDA
CL1
CL2
DBD
DLP
EA
EDA
ES:D1
ES:D2
ES:E
FBD
FP
FPC
GC
GPI
GSI
IBD
IEA
IIA
IL
IP
LGA
LPO
MAC
MFES
MGC
PC
PD
PGSI
PM
PP
R
RESI
SGBD
SIO
TC
TMIA
VRC



Compiladors I (CL1)

(http://www.lsi.upc.edu/~roberto)



Professors Responsables: ROBERT NIEUWENHUIS (robertolsi.upc.edu)
Crèdits: 4.5 (3.0 T 0.0 P 1.5 L)

Departament: LSI

Tipus d'assignatura

Obligatoria de segon cicle per la EI
Optativa per la ETIG , ETIS

Requisits de l'assignatura

LGA - Pre-requisit per la EI , ETIG , ETIS


Objectius docents

Mejorar la comprensión de los conceptos y estructuras de los lenguajes
de programación, su semántica y su implementación correcta y
eficiente (lo cual también ayuda a ser un mejor programador).
Proporcionar diversas metodologías (con su teoría y sus herramientas)
no sólo para el tratamiento de lenguajes de programación, sino también
para diversas otras aplicaciones como los intérpretes de comandos y de
queries, formateadores de texto (TeX, LaTeX, nroff) lenguajes de
simulación (simscript, GPSS), de descripción de hardware
(VDHL, Verilog), y gráficos (postscript, CIF, HPGL, GIF).
Llevar a la práctica un proyecto en el que muy diversos conceptos
previamente estudiados son totalmente imprescindibles: programación
estructurada y necesariamente correcta, modularidad, portabilidad,
tipos abstractos de datos (pilas, listas, árboles, grafos), lenguajes
formales y sus autómatas (lenguajes regulares/autómatas finitos,
gramáticas incontextuales/autómatas de pila, gramáticas de atributos).

Programa

1. Análisis Léxico
- papel en las fases de la compilación

- otras aplicaciones (recuperación de información, editores de texto,

sistemas operativos, lenguajes de programación: AWK, verificación de

circuitos)

- descripción del problema de análisis léxico

- construcción de Thompson de AFN

- uso directo del AFN vs. determinización

- detección y tratamiento de errores

- herramienta Flex
2. Análisis Sintáctico
- gramáticas de contexto libre: nomenclatura, poder expresivo, AST's, ambigüedades, transformaciones

- parsing descendente: recursivo, iterativo, con backtracking, características necesarias de la CFG,

algoritmo LL (first/follow), tratamiento de errores.

- parsing ascendente: algoritmo general con shift/reduce, prioridades de los operadores,

- parsing SLR.

- parsing LR canonico.

- parsing LALR.

- tratamiento de errores.

- herramienta Bison.
3. Análisis semántico
- propiedades semánticas vs. sintácticas

- árboles de sintaxis abstracta decorados

- recorridos

- tipos simples y estructurados

- conversión de tipos

- comprobación de parámetros

- cálculo de tipos

- detección y recuperación de errores semánticos

Avaluació

Evaluación de la práctica.
La evaluación del trabajo práctico en CL1 y CL2 se basará
exclusivamente en la realización de un examen escrito.
Evaluación de la asignatura.
La nota final F de la asignatura se calculará en función de los
exámenes de la práctica P y de teoría T como sigue.
Sea min=mínimo(T,P).
If min>5 Then F:=(2T+P)/3 Else F:=(min/5)*(2T+P)/3.

Càrrega

Los 4.5 créditos de la asignatura se descomponen en 3 de teoría y 1.5
de laboratorio, lo cual permite organizar la asignatura en dos horas
semanales de clases teóricas y una hora semanal de laboratorio (donde
estas últimas se agrupan en bloques de dos horas quincenales).
Las clases de laboratorio consisten en la utilización de herramientas
(Flex y Bison) que, en combinación con el lenguaje C, permiten
realizar ejercicios como tratamientos y búsquedas complejas en strings,
encriptar textos, calculadoras, y finalmente, realizar la práctica.
Hay una única práctica, individual, consistente en la
implementación de las primeras fases de un compilador
para un lenguaje de alto nivel llamado CL (tipo Pascal/Modula).
Esta implementación hará el análisis
léxico, sintáctico y semántico, detectando errores, y generará el árbol
de sintaxis abstracta decorado que sera utilizado en la asignatura
de CL-2 para producir código optimizado en el lenguaje Q,
que es el código ejecutado por la Q-machine.
Para facilitar el trabajo, los estudiantes tendrán a su
disposición una gramática de CL, diversos tipos abstractos
de datos ya implementados
(tablas de símbolos, árbol de sintaxis abstracta), y una
colección de programas-ejemplo escritos en CL (los llamados
juegos de prueba públicos).

Bibliografia

Bibliografia bàsica

- AHO, A.V.; ULLMAN, J.D Principles of Compiler Design Addison-Wesley, 1978
- AHO, A.V., SETHI, R., ULLMAN, J.D Compiladores, principios, técnicas y herramientas Addison-Wesley Iberoamericana. Madrid, 1990
- WILHELM, R., MAURER, D. Compiler Design Addison-Wesley P. C. , 1995
- DICK GRUNE, CERIEL JACOBS Parsing Techniques, A practical guide Els autors, 1995
- ANDREW W. APPEL Modern Compiler Implementation in (ML, Java, C) Cambridge University Press, 1998

Bibliografia complementària

- SCHREINER, A.T., FRIEDMAN Jr., H.G Introduction to Compiler Construction with UNIX Prentice-Hall Inc, 1985
- WAITE, T.; GOOS, G Compiler Construction Springer Verlag, 1984
- FISHER, C.N. LeBLANCH Jr., R.J Crafting a Compiler The Benjamin/Cummings Publ. Comp , 1998

Informació complementària

L'assignatura no inclou classes de problemes, però existeix una
llista de problemes i es recomana fortament a tots els alumnes que
intentin solucionar-los., aixi com els exercicis de laboratori per a aprendre
les eines flex i bison que us seran de gran utilitat al fer la pràctica.
Cada grup de teoria es divideix en 4 subgrups de laboratori. Cada grup de
laboratori té una freqüència quinzenal amb un professor de l'assignatura
com a responsable, i que està present a l'aula.


versió per imprimir