Está en la página 1de 7

UNIVERSIDAD

TECNOLGICA DE PEREIRA FACULTAD DE INGENIERAS: ELCTRICA, ELECTRNICA, FSICA Y CIENCIAS DE LA COMPUTACIN PROGRAMA INGENIERA DE SISTEMAS Y COMPUTACIN ASIGNATURA: COMPILADORES CDIGO: IS744 CRDITOS: 4 INTENSIDAD: 4 Horas semanales para 64 horas totales REQUISITO: IS614 Arquitectura de computadores IS404 Estructura de Lenguajes OBJETIVO Al finalizar el curso, el estudiante estar en capacidad de construir un compilador para un lenguaje especfico de mediana complejidad. El compilador construido tendr incorporados los mdulos para el anlisis lexicogrfico, anlisis sintctico, anlisis semntico, generacin de cdigo intermedio y generacin de cdigo ejecutable (*.EXE y *.DLL). OBJETIVOS ESPECFICOS Utilizacin del Lenguaje Python y su mdulo PLY para acompaar al estudiante en el desarrollo de su prototipo. Se brindar al estudiante una slida formacin en la teora de gramticas y lenguajes formales, autmatas finitos, grafos sintcticos, mquinas de pila abstractas, etc. El estudiante estar en condiciones de utilizar estrategias recursivas descendentes y aplicarlas al diseo e implantacin de soluciones a un problema especfico. Utilizacin de Patrones de diseo como el Visitante para implementar estructuras como: rbol de Sintaxis, Analizador semntico y generacin de cdigo. Finalmente, se estudiar un conjunto de tcnicas extradas de la Ingeniera del Software, para lograr un desarrollo ms efectivo del software. LIBRO GUIA COMPILADORES. Principios, tcnicas y herramientas. V. Aho, Alfred. Sethi, Ravi D. Ullman, Jeffrey. Editorial Addison-Wesley IberoAmericana. Biblioteca Central Seccion de Reserva 005.453 A286 PLAN DE TRABAJO: 1. INTRODUCCION Tipos de sistemas de compilacin Ambientes de compilacin Anlisis y sntesis

Fases de compilacin 2. ASPECTOS FORMALES Gramticas y lenguajes formales Forma de Backus-Naur Tcnicas de anlisis Grafos sintcticos 3. ANALISIS LEXICO Autmatas finitos El analizador lxico Tabla de smbolos Optimizacin Generacin de analizadores lxicos 4. ANALISIS SINTACTICO Anlisis descendente Gramticas LL Estrategia descendente recursiva Anlisis sintctico tabular Anlisis ascendente Gramticas LR Anlisis por desplazamiento y reduccin Analizador sintctico LR Generador de analizadores sintcticos 5. ANALISIS SEMANTICO Y GENERACION DE CODIGO INTERMEDIO Cdigo intermedio Traduccin dirigida por la sintaxis Declaraciones Llamadas a procedimientos Comprobacin de tipos 6. MANEJO DE ERRORES Clasificacin de los errores Manejo de los errores lxicos Manejo de los errores sintcticos Errores semnticos Recuperacin de errores 7. GENERACION DE CODIGO EJECUTABLE La mquina objeto Asignacin de memoria Asignacin esttica y dinmica Paso de parmetros Direccionamiento de variables Representacin de bloques bsicos por medio de los GDA (Grafos acclicos dirigidos) Generacin de cdigo a partir de los GDA Generadores de generadores de cdigo 8. OPTIMIZACION DE CODIGO Las principales fuentes para la optimizacin Introduccin al anlisis global del flujo de datos Transformaciones para mejorar el cdigo Depuracin simblica de cdigo optimizado 9. ESTUDIO DE ALGUNOS COMPILADORES

Pascal C Fortran Modula-2 10. IMPACTO DE LOS AVANCES EN HARDWARE Arquitectura de computadoras y lenguajes de programacin Conjuntos de instrucciones y microcdigo Arquitectura RISC METODOLOGIA El curso se dictar con base en clases magistrales y con el apoyo de recursos multimediales cuando ello convenga. Adems, se realizarn prcticas en computadora para dar solidez a los temas vistos en clase. Dentro del esquema de formacin integral del ser humano, el profesor podr traer temas y ayudas que le permitan al estudiante reconocer la historia de la ciencia y la responsabilidad de la tecnologa frente a la sociedad. Estos temas y ayudas se presentaran a discrecionalidad del profesor. COMPETENCIAS COMPETENCIAS TRANSVERSALES / GENRICAS: - Aprendizaje autnomo - Capacidad de anlisis y sntesis - Capacidad de aplicar los conocimientos a la prctica - Resolucin de problemas - Trabajo individual y por parejas - Comunicacin oral y escrita COMPETENCIAS ESPECFICAS: - Cognitivas (Saber): - Idioma - Nuevas tecnologas TIC - Conocimientos de informtica - Procedimentales / Instrumentales (Saber hacer): - Redaccin en interpretacin de documentacin tcnica - Estimacin y programacin del trabajo - Planificacin, organizacin y estrategia. - Actitudinales (Ser): - Calidad - Toma de decisin - Capacidad de iniciativa y participacin TCNICAS DOCENTES Las tcnicas docentes que se van a utilizar son: - Clases de teora

- Exposiciones sobre trabajos de casos prcticos. - Tutoras colectivas de teora - Clases de prcticas - Correccin de las prcticas - Tutoras colectivas de prcticas - Tutoras individualizadas MECANISMOS DE CONTROL Y SEGUIMIENTO El profesor podr comprobar el grado de seguimiento de la asignatura mediante: - La asistencia a las clases de teora y prcticas - Las exposiciones de temas de teora. - La correccin de las prcticas. - Las tutoras personales - Los parciales DESARROLLO Y JUSTIFICACIN: Clases de teora: - Se har una resea inicial del contenido de cada tema y se indicar su relacin con los otros temas. - Se explicar detenidamente cada seccin de cada tema terico. Exposiciones: - El profesor propondr los trabajos sobre trabajos de casos prcticos, que los estudiantes debern preparar y exponer a lo largo del curso. - Los trabajos podrn hacerse individualmente o en parejas. Acerca de las prcticas: - Las prcticas y tutoras colectivas de prcticas, no estn sujetas a la disponibilidad de salas con computadores, el estudiante las deber realizar en el tiempo estipulado por el profesor. - Las prcticas persiguen consolidar el conocimiento adquirido sobre cada una de las fases de un compilador. Consistirn en la realizacin de pequeos programas que permitan bosquejar la teora vista en clase. - Se presentarn los recursos informticos necesarios para el desarrollo de las prcticas. Vgr: intrpretes , editores de texto, entorno grfico integrado, etc. - Se describirn los objetivos que se pretenden conseguir con la elaboracin de cada una de las prcticas. - Se utilizar el tablero para el desarrollo de los fundamentos prcticos y el proyector de transparencias y el material informtico (hardware: computadores; software: editores de texto, etc.) para desarrollar los ejemplos. - Se entregar a los estudiantes fotocopias o informacin digital de manuales del lenguaje JACC y otros que sean necesarios, ejemplos prcticos y los enunciados de las prcticas.

- Los estudiantes desarrollarn las prcticas codificando y documentando los programas. - Se podr corregir y evaluar en presencia del estudiante los trabajos de prcticas que haya realizado. - Se propender por indicarle al estudiante los posibles fallos y proponerle posibles soluciones alternativas. Tutoras colectivas de teora o prcticas Es una actividad desarrollada dentro de las horas de clase - El profesor responder a las preguntas que les planteen los estudiantes procurando que ellos intenten deducir las repuestas correctas. - Se procurar que las preguntas que se planteen no sean dudas particulares de un estudiante, sino dudas generales que puedan tener la mayora de los estudiantes. Las dudas particulares se deben plantear en las tutoras individuales. - El profesor tambin podr plantear preguntas a los estudiantes para comprobar si han aprendido correctamente los conceptos fundamentales de la asignatura. Tutoras individualizadas: Segn es reglamento estudiantil vigente, en su articulo 60.(ARTCULO 60o.: El estudiante de la Universidad tiene derecho a:Ser asistido, asesorado y odo por quienes tienen la responsabilidad administrativa y docente.. Subrayado nuestro), estas tutoras estn enmarcadas dentro de la actividad docente y los horarios debern ser concertados con todos los estudiantes o con la mayora cuando con todos no sea posible. - Los estudiantes con el fin de poder organizar y garantizar que la atencin sea individual, deber solicitar con anticipacin cita con el profesor. - Los estudiantes deben utilizar estas tutoras a lo largo de todo el curso y no slo antes de la fecha del examen. - El profesor intentar resolver las dudas particulares que pueda tener cada estudiante en relacin con los temas de teora, los trabajos de las exposiciones, las prcticas, etc. - Aunque las dudas ms simples puedan plantearse mediante correo electrnico, es preferible que haya una reunin del profesor y el estudiante para resolver las dudas ms complejas.

ORGANIZACIN SEMANAL

Semana 1

Temas INTRODUCCION - Curso - Python - Tipos sistemas compilacin - Ambientes de compilacin - Anlisis y sntesis - Fases de compilacin ASPECTOS FORMALES - Gramticas y lenguajes formales - Forma de Backus-Naur - Tcnicas de anlisis - Grafos sintcticos ANALISIS LEXICO - Autmatas finitos - El analizador lxico - Tabla de smbolos - Optimizacin - Generacin analizador lxico - Utilizacin de lex ANALISIS SINTACTICO - Anlisis descendente - Gramticas LL - Estrategia descendente recursiva - Anlisis sintctico tabular - Anlisis ascendente ANALISIS SINTACTICO - Gramticas LR ANALISIS SINTACTICO - Anlisis desplaz. y reduccin - Analizador sintctico LR ANALISIS SINTACTICO - Generador analizador sintcticos - Utilizacin de yacc ANALISIS SINTACTICO - rbol de Sintaxis ANALISIS SINTACTICO - rbol de Sintaxis ANALISIS SEMANTICO - Patrones de Diseo ANALISIS SEMANTICO - Tabla de Smbolos - Comprobacin de tipos GENERACION CODIGO INTERM. - Cdigo intermedio - Traduccin dirigida por la sintaxis - Declaraciones - Llamadas a procedimientos MANEJO DE ERRORES - Clasificacin de los errores - Manejo de los errores lxicos - Manejo de los errores sintcticos - Errores semnticos - Recuperacin de errores

Clase de Teora (Horas) 4

Tutoras Profesor (Horas) 2

Tutoras Monitor (Horas)

Prcticas (Horas)

Examen (Horas)

5 6 7 8 9 10 11 12

4 4 4 4 2 4 4 4

2 2 2 2 2 2 2 2

13

14

GENERACION CODIGO EJEC. - La mquina objeto - Asignacin de memoria - Asignacin esttica y dinmica - Paso de parmetros - Direccionamiento de variables - Rep. bloques bsicos - Generacin de cdigo - Generadores de cdigo OPTIMIZACION DE CODIGO - Fuentes para optimizacin - Int. anlisis global flujo datos. - Transf. mejorar el cdigo - Depuracin cdigo optimizado IMPACTO AVANCES EN HW - Arquitectura computadoras - lenguajes de programacin - Conjuntos de instrucciones - Microcdigo - Arquitectura RISC

15

16

EVALUACIN Segn el reglamento estudiantil vigente, en sus artculos 72 y 73.ARTCULO 72o.: Se entiende por Prueba Parcial aquella que se realiza individualmente para verificar el logro de los objetivos de las diferentes unidades o temas en que se divide cada asignatura. Estas no podrn ser menos de dos para cada asignatura... ARTCULO 73o.: Se entiende por Prueba Final aquella que se realiza individualmente para verificar el logro de los objetivos generales de cada asignatura. Esta prueba se realizar con estricta observancia de las fechas establecidas en el calendario acadmico..., subrayado y resaltado nuestro. Se realizarn 2 evaluaciones parciales y una final cada una con valor del 20%. El restante 40% se tomar a partir de entregas de proyectos (al menos 4) y talleres. BIBLIOGRAFA 1. COMPILADORES. Principios, tcnicas y herramientas. V. Aho, Alfred. Sethi, Ravi D. Ullman, Jeffrey. Editorial Addison-Wesley IberoAmericana. 2. COMPILADORES. Conceptos fundamentales. Teufel, Schmidt, Teufel. Editorial Addison-Wesley IberoAmericana. 3. Modern Compiler Implementation in Java. Appel, Andrew W. Cambidge 2002. 4. Compiladores Modernos. 5. Compiler Construction. Wirth, Niklaus. Addison Wesley, 2005 http://www.oberon.ethz.ch/WirthPubl/CBEAll.pdf