Anar a: Buscar
FIB > Els estudis > Pàgines de les assignatures > Departament LSI > CL Castellano | English
RI
P1
LI
ALG
A
IA
BD
COM
DABD
SIO
GSI
ASAI
PESBD
SGBDO
CL
PGPSI
VIG
DSBW
VA
ER
AIA
ES2
IL
TC
ES1
ALCC
PCD
ADA
PRAP
PROP
PS
LP
PLN
PRED
SGI



Compiladors ( CL )

Crèdits: Departament: Tipus: Requisits:
9.0 LSI
  • Obligatòria per l'EI
  • Optativa per l'ETIG
  • Optativa per l'ETIS
  • ALCC - Pre-requisit per l' ETIS
    EC1 - Pre-requisit per l' EI , ETIG , ETIS
    PRED - Pre-requisit per l' EI , ETIG
    PS - Pre-requisit per l' ETIS
    TC - Pre-requisit per l' EI , ETIG

    Professors

    Responsable:  Robert Nieuwenhuis (robertolsi.upc.edu).
    Altres:Guillem Godoy Balil (ggodoylsi.upc.edu).

    Objectius Generals

    Cubrir los contenidos especificados en la troncalidad de
    procesadores del lenguaje, y los siguientes objetivos especificos.

    Objectius Específics

    Coneixements

    1. Técnicas y herramientas generales, flexibles, y eficientes para la
      compilación de lenguajes de programacion y para otras aplicaciones,
      como los formateadores de texto (LaTeX, nroff), lenguajes gráficos
      (postscript, CIF, GIF, JPEG), lenguajes de descripción de hardware
      (VDHL, Verilog), lenguajes de simulación (simscript, GPSS),
      intérpretes de queries y comandos, o los compiladores de silicio.
    2. Una aplicación en la que se utilizan y consolidan multitud
      de conceptos aprendidos previamente: lenguajes formales y autómatas,
      programación estructurada y recursiva, tipos abstractos de datos, etc.

    Habilitats

    1. Ser capaz de desarrollar aplicaciones prácticas de las técnicas y
      herramientas estudiadas (por ejemplo, transformaciones de datos, o
      sencillos intérpretes).
    2. Ser capaz de completar algún módulo de un compilador modular
      moderno, como aplicación en la que son imprescindibles la robustez
      (ausencia de errores de ejecución) y la correción (del código objeto
      producido).

    Competències

    1. Ser mejores programadores a través de un mejor conocimiento de los
      lenguajes de programación, en su sintaxis, semántica, e implementación
      eficiente.

    Continguts

    Hores estimades de:

    T P L Alt L Ext. Est A Ext.
    Teoria Problemes Laboratori Altres activitats Laboratori extern Estudi Altres hores fora d'horari fixat

    1. Introducción y motivación
      T     P     L    Alt  L Ext  Est  A Ext Total
     2,0   0   0   0   0   2,0   0   4,0 
    Estructura y fases de un compilador.
    ¿Por qué estudiar compiladores?
    El porqué de la organización de la asignatura.

    2. Análisis léxico
      T     P     L    Alt  L Ext  Est  A Ext Total
     6,0   0   2,0   0   2,0   6,0   0   16,0 
    Definición del problema. Repaso de lenguajes regulares y
    autómatas finitos, varios algoritmos y sus costes. Tratamiento de
    errores, la herramienta Flex, otras aplicaciones.
    • Laboratori:
      Manejo de la herramienta flex y otras aplicaciones similares.
    • Activitats de laboratori addicionals:
      Lectura, comprensión y análisis de la hoja de laboratorio correspondiente a la sesión de análisis léxico.

    3. Análisis sintáctico
      T     P     L    Alt  L Ext  Est  A Ext Total
     14,0   0   4,0   0   4,0   14,0   0   36,0 
    Repaso de gramáticas de contexto libre y autómatas de pila.
    Árboles de sintaxis concreta y abstracta, técnicas de parsing
    descendente y ascendente, la herramienta Bison, otras aplicaciones.
    • Laboratori:
      Manejo de la herramienta Bison y otras aplicaciones.
    • Activitats de laboratori addicionals:
      Lectura, comprensión y análisis de las hojas de laboratorio correspondientes a la sesión de análisis sintáctico.

    4. Análisis semántico
      T     P     L    Alt  L Ext  Est  A Ext Total
     6,0   0   12,0   0   12,0   6,0   0   36,0 
    Lenguajes con estructura de bloques, paso de parámetros,
    comprobación de tipos, equivalencias de tipos, conversión explícita e
    implícita de tipos. Otros paradigmas de programación.
    • Laboratori:
      Implementación de la primera parte de la práctica que corresponde a las fases de análisis léxico, sintáctico y semántico.
      Evaluación de esta primera parte de la práctica
    • Activitats de laboratori addicionals:
      Lectura del documento que presenta la práctica de la asignatura en lo que corresponde a las fases de análisis léxico, sintáctico y semántico. Comprensión del mismo, y diseño interno de los módulos que compondrán esta primera parte de la práctica.

    5. Representaciones intermedias y máquinas virtuales
      T     P     L    Alt  L Ext  Est  A Ext Total
     6,0   0   0   0   0   6,0   0   12,0 
    Representaciones internas e intermedias: en árbol, código de tres
    direcciones, código para máquinas de pila. Máquinas virtuales:
    ventajas e inconvenientes. La Q-machine. Acceso a nombres locales y
    no-locales: cadenas estáticas, y displays.

    6. Generación de código intermedio
      T     P     L    Alt  L Ext  Est  A Ext Total
     14,0   0   10,0   0   10,0   14,0   0   48,0 
    Código para instrucciones sencillas. Compilación de expresiones
    booleanas, tipos estructurados, arrays estáticos y dinámicos,
    procedimientos y funciones como parámetros.
    • Laboratori:
      Implementación de la segunda parte de la práctica, correspondiente a la fase de generación de código.
      Evaluación de la práctica, donde sobre todo se evalúa esta segunda parte de la misma.
    • Activitats de laboratori addicionals:
      Lectura del documento que presenta la práctica de la asignatura en lo que corresponde a la fase de generación de código. Comprensión del mismo, y diseño interno de los módulos que compondrán esta segunda parte de la práctica.

    7. Optimizaciones independientes de la arquitectura
      T     P     L    Alt  L Ext  Est  A Ext Total
     8,0   0   0   0   0   8,0   0   16,0 
    Bloques básicos, grafo de control de flujo, vida de variables,
    uso y definiciones de variables, ejemplos de optimización
    (subexpresiones comunes, código muerto, propagación de constantes,
    invariantes y variables de inducción en bucles).


    - Total per tipus
      T     P     L    Alt  L Ext  Est  A Ext Total
     56,0   0   28,0   0   28,0   56,0   0   168,0 
    - Hores addicionals dedicades a l'avaluació:
    3,0
    - Total hores de treball per l'estudiant
    171,0

    Metodologia docent

    Se persiguen los objetivos expuestos estimulando el trabajo personal
    del estudiante. Así, las clases de laboratorio están destinadas
    a la realización de la práctica por parte del alumno, conjuntamente con
    consultas y discusiones acerca de la misma. Para las primeras
    prácticas con las herramientas Flex y Bison existen "hojas de
    laboratorio" con las explicaciones y ejercicios a realizar. Para las
    demás existe abundante material para la realización del compilador.

    No se distingue entre clases de teoría y de problemas, debido a que
    éstos últimos se concentran sólo en ciertos periodos del curso, y
    sería demasiado rígido tener que dedicarles un número fijo de horas
    semanales.

    Existen diversas listas de problemas, y el estudiante sabe con
    antelación cuándo en clase se van a resolver cúales de ellos. De esta
    manera debería intentar resolverlos primero por su cuenta.
    Además existe muy abundante material disponible en las páginas web de
    la asignatura: transparencias, módulos y enunciados para las
    prácticas, exámenes anteriores resueltos y sin resolver, listas de
    preguntas frecuentes, etc.

    El material ofrecido por la asignatura permite al estudiante realizar un
    seguimiento de la asignatura, tanto del modo habitual, asistiendo a clase y
    estudiando según el ritmo que marca la planificación propuesta, como de una
    forma independiente por propia planificación del alumno, en base a sus otras
    obligaciones o restricciones.

    Mètode d'avaluació

    Habrá un examen escrito de teoría (T), con ejercicios y preguntas
    cortas de tipo teórico. La nota de la práctica (P) provendrá de dos
    ejercicios prácticos, a realizar sobre el ordenador durante las
    sesiones de laboratorio (típicamente, una extensión o variación del compilador
    realizado por el propio estudiante). En caso de que, por motivos técnicos,
    no se pudieran realizar estas pruebas por este medio, alternativamente, se
    realizaría un examen escrito sobre la práctica.

    La nota final Fin se determina en funcion de T y P de la siguiente
    manera que fomenta un esfuerzo equilibrado en ambas partes:

    Si P>=4 Entonces Fin:= (2T+P)/3
    Si P<4 Entonces Fin:=((2T+P)/3) * (P/4)

    Bibliografía bàsica

    • R. Wilhelm, D. Maurer. Compiler Design: Theory, Constuction, Generation. , Addison-Wesley, 1995.
    • A.W. Appel Modern Compiler Implementation in C, Cambridge University Press, 1998.
    • A.V. Aho and R. Sethi and J.D. Ullman Compilers, Principles, Techniques and Tools, Addison-Wesley, 1986.
    • A.V. Aho and R. Sethi and J.D. Ullman Compiladores, Principios, Técnicas y Herramientas, Addison-Wesley Iberoamericana, 1990.
    • V. Paxson Flex - fast lexical analyzer generator, ftp://ftp.ee.lbl.gov/flex-2.5.3.tar.gz, 1995.
    • C. Donnelly and R. Stallman Bison - the YACC-compatible parser generator, Free Software Foundation, 1995.
    • R.M. Stallman Using and porting GNU CC, Free Software Foundation, 1992.

    Bibliografía complementària

    • N. Wirth Compiler Construction, Addison-Wesley, 1996.
    • S.S. Muchnick Advanced Compiler Design Implementation, Morgan Kaufmann Publishers, 1997.
    • C.N. Fischer and R.J. LeBlanc Crafting a Compiler, Benjamin/Cummings, 1988.
    • A.W. Appel Modern Compiler Implementation in ML, Cambridge University Press, 1998.
    • A.W. Appel Modern Compiler Implementation in Java, Cambridge University Press, 1998.
    • A.V. Aho and J.D. Ullman The theory of parsing, translation and compiling, Vols I and II, Prentice Hall, 1973.

    Enllaços web

    (Informació no introduïda)

    Capacitats prèvies

    Conocimientos de técnicas de programación estructurada y estructuras de
    datos y algoritmos; lenguajes, autómatas y gramáticas formales;
    estructura de computadores.



    versió per imprimir