1. IDENTIFICACIÓN

Asignatura COMPILADORES
Área Básicas de la Ingeniería Nivel VIII
Código CPI-82 Pensum
Correquisito(s) Prerrequisito(s) MII-72
Créditos TPS 2 TIS 4 TPT 32 TIT 64

2. JUSTIFICACIÓN

Se pretende que el estudiante adquiera los conocimientos básicos del funcionamiento de un compilador y las técnicas que se emplean en la construcción de los mismos, con la finalidad de disponer de una herramienta más para el diseño de cualquier otro tipo de sistema automatizado.

3. OBJETIVO GENERAL

Construir un compilador de capacidades básicas aplicando las técnicas y herramientas de programación. Dicho compilador incluirá los módulos para el análisis lexicográfico, análisis sintáctico, análisis semántico, generación de código intermedio y generación de código ejecutable.

4. OBJETIVOS ESPECÍFICOS

  • Establecer relaciones entre los lenguajes regulares y los autómatas de estado finito
  • Desarrollar habilidades para construir analizadores léxicos, sintácticos y semánticos.
  • Aplicar los conocimientos adquiridos sobre gramáticas formales y autómatas al proceso de diseño de lenguajes y a su traducción.
  • Implementar las reglas semánticas de un lenguaje sencillo.

  • 5. COMPETENCIAS Y CONTENIDOS TEMÁTICOS DEL CURSO

    COMPETENCIAS CONTENIDO TEMÁTICOINDICADOR DE LOGRO
    Implementar un analizador léxico a partir de expresiones regulares de un lenguaje. Presentación del curso
    - Introducción
    - Tipos sistemas compilación
    - Ambientes de compilación
    - Análisis y síntesis
    - Fases del proceso de compilación
    .
    Identifica las etapas correspondientes al proceso de traducción de programa fuente a ejecutable.
    Aspectos formales
    - Gramáticas y lenguajes formales
    - Forma de Backus-Naur
    - Técnicas de análisis
    - Grafos sintácticos
    Manipula las herramientas para el análisis de léxico.
    Análisis de léxico
    -Lenguajes y gramáticas
    -Expresiones regulares
    - Autómatas finitos: determinísticos y no determinísticos.
    - El analizador léxico
    - Tabla de símbolos
    - Optimización
    - Generación analizador léxico
    Diseñar y construir un analizador sintáctico Análisis de sintaxis
    - Análisis descendente
    - Gramáticas LL
    - Estrategia descendente recursiva
    - Análisis sintáctico tabular
    - Análisis ascendente
    - Gramáticas LR
    - Análisis por desplazamiento y reducción
    - Analizador sintáctico LR
    - Generador de analizadores sintácticos.
    Manipula las herramientas para el análisis de sintaxis.
    Representa y manipula expresiones regulares.
    Saber Implementar las reglas semánticas de un lenguaje sencillo Análisis semántico
    - Patrones de Diseño
    - Tabla de Símbolos
    - Comprobación de tipos
    Generación de código
    - Código intermedio
    - Traducción dirigida por la sintaxis
    - Declaraciones
    - Llamadas a procedimientos
    Manejo de errores
    - Clasificación de los errores
    - Manejo de los errores léxicos
    - Manejo de los errores sintácticos
    - Errores semánticos
    - Recuperación de errores
    Identifica errores y es capaz de depurarlos con la ayuda de las herramientas.
    Generación de código ejecutable
    - La máquina objeto
    - Asignación de memoria
    - Asignación estática y dinámica
    - Paso de parámetros
    - Direccionamiento de variables
    - Representación de bloques básicos (por grafos acíclicos dirigidos)
    - Generación de código
    - Generadores de código
    Optimización de código
    - Fuentes para optimización
    - Análisis global flujo datos.
    - Mejora de código
    - Depuración código optimizado

    Algunos compiladores


    6.ESTRATEGIAS DIDÁCTICAS / METODOLÓGICAS

    La metodología consiste en el aprendizaje basado en proyectos.
    Por parte del docente:
  • Clase Magistral. Se emplea la conversación heurística
  • Clase taller con acompañamiento del docente
  • Planteamiento de proyectos de programación para que sean realizados por los estudiantes en su tiempo independiente, con la planificación de espacios de seguimiento.
  • Por parte del estudiante
  • Clase Lectura de documentos. Asignados por el docente para que los resuelvan como trabajo independiente e individual y luego socialización en la clase.
  • Realización de proyectos de programación; durante los mismo los estudiantes
    deberán implementar partes del código de acuerdo con diseño que se lleve hasta el momento.
  • Medios utilizados:
  • Aula de clase
  • Salas de computadores con el software necesario.
  • Talleres de problemas
  • Material bibliográfico y artículos de revistas

  • 7. ESTRATEGIAS DE SEGUIMIENTO Y EVALUACIÓN

    INDICADORES DE LOGRO ESTRATEGIAPORCENTAJE
    Identifica las etapas correspondientes al proceso de traducción de programa fuente a ejecutable. Prueba escrita 20%
    • Manipula las herramientas para el análisis de léxico. Proyecto en sala de cómputo
    Prueba escrita
    10%
    10%
    Manipula las herramientas para el análisis de sintaxis.

    Proyecto en sala de cómputo
    Prueba escrita
    10%
    10%
    Representa y manipula expresiones regulares. Proyecto en sala de cómputo
    Prueba escrita
    10%
    10%
    Identifica errores y es capaz de depurarlos con la ayuda de las herramientas. Proyecto en sala de cómputo 20%

    8. BIBLIOGRAFÍA

    ROSENKRANTZ, STEARNS and LEWIS II. Compiler design Theory. Addison
    Wesley. 1996
    HOLUB, Allen Compiler design in C. Addison Wesley. 1990
    AHO, A. V.; LAM, M.; SETHI, R.; ULLMAN, J. D. (2008). Compiladores. Principios, Técnicas y Herramientas. Pearson - Addison-Wesley. 2da Edición. 1009 páginas
    LOUDEN, K. (2004). Construcción de compiladores. Thomson Editores. 1ra Edición. 592 páginas.
    PULIDO, E.;DE LA CRUZ M.;ORTEGA A.;ALFONSECA M. (2006). Compiladores e interpretes: teoría y práctica. Editorial Pearson Educación. 1ra Edición. 361 páginas.