Ir a Contenido Principal

AURORA - Sistema de Información Académico

 

AYUDA | SALIR

Información detallada de curso

 

Primer semestre 2017
Abr 19, 2024
Imagen transparente
1. IDENTIFICACION DEL CURSO

Código y Nombre de la Asignatura: IST 7410 - COMPILADORES
División Académica: División de Ingenierías
Departamento Académico: Dpto. Ingeniería de Sistemas
IST 4031 Calificación mínima de 3.0 y IST 2110 Calificación mínima de 3.0
Número de créditos:
Intensidad horaria (semanal para nivel pregrado y total para nivel postgrado):
3.000 Horas de Teoría
0.000 Horas de Laboratorio
Niveles: Educación Continua, Educación Superior Pregrado
Tipos de Horario: Teoría

Se revisan los diferentes componentes de un compilador pasando por el análisis léxico hasta el análisis semántica y se dan las bases para el estudio de las fases correspondientes a la síntesis.

3. DESCRIPCION AMPLIA DE LA ASIGNATURA
Se estudian las diferentes fases que se deben llevar a cabo para el diseño y construcción de la estructura de un compilador. Estas fases comprenden el análisis léxico y generación de autómatas fínitos; el análisis sintáctico a través de métodos recursivos y las técnicas LR; el análisis semántico, el cual revisa el programa fuente para tratar de encontrar errores semánticos y lleva a cabo la verificación de tipos; la generación de código intermedio, que se puede considerar como un programa para una máquina abstracta y de aquí su fácil traducción al programa objeto; optimización del código, la cual mejora el código intermedio, de tal forma que resulta un código de máquina más rápido de ejecutar; y la generación de código objeto que puede ser relocalizable o ensamblador.

4. JUSTIFICACIÓN
Dentro de la Ingeniería de Sistemas la interrelación hombre- máquina es de vital importancia, pues de tal comunicación, depende el apoyo que la máquina puede prestar al hombre mediante el conocimiento en ella almacenada; por lo tanto es importante conocer los formalismos usados, ya que ellos permiten el mejor entendimiento de la estructura de los lenguajes de programación (sintáctica y semánticamente).

Para el futuro profesional es importante también conocer los fundamentos formales sobre los cuales se construyen los compiladores. Esto servirá de base para que, de igual forma, pueda aprovechar mucho mejor los recursos de programación, en especial cuando quiera aplicarlos en la solución de sus propios problemas, tales como el uso de las expresiones regulares.


5. OBJETIVOS.

5.1. Objetivo General
Identificar, comprender y manipular las herramientas básicas que guían los procesos de diseño y construcción de las partes constitutivas fundamentales de un compilador.

5.2. Objetivos Específicos
- Identificar claramente las etapas y fases de un compilador con sus respectivas entradas y salidas.
- Estar en capacidad de construir un modelo prototipo que incluya por lo menos los componentes de las fases de Análisis Léxico y Sintáctico.
- Interpretar en forma escrita y oral los conceptos que sobre nuevos avances en materia de lenguajes de programación se presenten como tendencias en la actualidad a través de investigaciones y consultas en Internet, revistas científicas y bases de datos especializadas.

5.3. Resultados de Aprendizaje
- Construir expresiones regulares a partir de enunciados y de autómatas finitos
- Construir autómatas finitos a partir de expresiones regulares
- Construir gramáticas libres de contexto a partir de expresiones regulares y enunciados verbales
- Construir analizadores sintácticos LL(1) a partir de gramáticas libres de contexto
- Generar tablas de precedencia de operadores aplicando el principio de mangos
- Generar los elementos de una gramática LR
- Llevar a cabo traducciones dirigidas por sintaxis a través de definiciones o esquemas de traducción

6. METODOLOGIA.
La asignatura se desarrollará con exposiciones por parte del profesor sobre conceptos fundamentales y desarrollo de ejemplos; el estudiante realizará en clase ejercicios e investigará sobre temas asignados por el profesor y deberá realizar algunas experiencias en lenguaje C aplicando los conceptos de Análisis Léxico y Análisis Sintáctico.

A través de los ejercicios en clases y el desarrollo de laboratorios por fuera de ésta, el estudiante aplicará con sentido integrador los conceptos que se desarrollen dentro del contenido de la asignatura.

También llevará a cabo consultas en bases de datos, textos especializados y revistas que le permitirán determinar cuál ha sido la evolución de los lenguajes de programación hasta alcanzar la cuarta generación y posteriores, presentando un trabajo escrito que sustente la información obtenida bajo la óptica crítica que le da el curso de la asignatura.

El catálogo Web de la asignatura servirá de soporte al desarrollo de la asignatura, ya que en este se asignarán tareas, lecturas y trabajos de distinta índole. Las lecturas pueden ser asignadas en Español como en Inglés.

7. MEDIOS
Para el desarrollo de las clases se utilizan los siguientes medios tradicionales: tiza y tablero; retroproyector, portátil y video beam.

Para la realización de laboratorios, se dispone de:
- Sala de usuarios con lenguaje Builder C++
- Bases de datos internacionales en la biblioteca.
- Catálogo Web de la asignatura.
- Textos en Biblioteca

8. CONTENIDO

1. INTRODUCCION A COMPILADORES
- Compiladores y sus relacionados (Preprocesadores, ensambladores, cargadores)
- Análisis de un Programa Fuente (Lectura)
- Fases de un compilador

2. ANALISIS LEXICO
- Función del analizador léxico
- Manejo de los Buffers de entrada (Lectura - Opcional)
- Especificación de los componentes léxicos
- Reconocimiento de los componentes léxicos
- Autómatas Finitos
- Construcción de Autómatas Finitos a partir de expresiones regulares
- Diseño de un generador de analizadores lexicográfico (Opcional)
- Optimización de buscadores por concordancia de patrones basados en AFD

3. ANALISIS SINTACTICO
- Función del analizador sintáctico
- Gramáticas independientes del contexto
- Consideraciones en la escritura de una Gramática
- Análisis Sintáctico Descendente
- Análisis Sintáctico Ascendente
- Análisis Sintáctico por Precedencia de Operadores
- Analizadores Sintácticos LR
- Uso de Gramáticas Ambiguas
- Generadores de Analizadores Sintácticos (Opcional)

4. TRADUCCION DIRIGIDA POR LA SINTAXIS
- Definiciones dirigidas por la Sintaxis
- Construcción de Arboles de Sintaxis
- Evaluación Ascendente de Definiciones con atributos sintetizados
- Definiciones con atributos por la Izquierda
- Traducción Descendente


9. EVALUACION
Se llevará a cabo una evaluación constante, siempre teniendo en cuenta el cumplimiento de los objetivos trazados desde un principio. Se realizarán trabajos, exámenes parciales y laboratorios. Se retroalimentará cada prueba que se realice con el fin de aclarar las dudas a que hubiese lugar.

Los exámenes parciales, y trabajos se evaluarán en forma escrita. Los laboratorios se evaluarán teniendo en cuenta cuál es el objetivo propio de éste.

Ponderación de la evaluación es la siguiente:
- Primer Parcial (P1) . 20%. 3ª. Semana. Introducción a Compiladores y Análisis Léxico
- Segundo Parcial (P2). 20%. 6ª. Semana. Análisis Sintáctico (3.1 - 3.6)
- Examen Final (EF). 30%. 18ª. Semana. Temas anteriores (en forma general), Analizadores Sintácticos LR, Traducción Dirigida por la Sintaxis
- Laboratorio (L). 15%. 14ª. Semana. Análisis Léxico-Análisis Sintáctico
- Investigación y Desarrollo (ID). 15%. 9ª. Semana. Temas asociados al análisis léxico y gramáticas independientes del contexto.

NOTA: Las evaluaciones, incluidos los laboratorios de programación, se realizarán SIN EXCEPCIÓN en las semanas del semestre en las cuales están programadas, es decir, no se realizaran aplazamientos para ninguna de ellas, debido a que el 80% de la nota definitiva debe estar registrada a mas tardar la semana 14.


10. BIBLIOGRAFIA

10.1. Texto Guía
AHO, Alfred. Sethi Ravi, ULLMAN, Jeffrey. Compiladores: Principios, Técnicas y Herramientas. Addison-Wesley. 1990.
LOUDEN, Keneth C. Construcción de Compiladores: Principios y Práctica. Thomson. 2004

10.2. Otras referencias
WILHELM, Reinhard y MURER, Dieter. Compiler Design. Addison-Wesley. 1995.
WIRTH, Niklaus. Compile Construction. An Introduction. Addison-Wesley. 1996.
PRATT, Terence. Programming Languages: Design and Implemtation. Segunda Edición. Prentice-Hall. 1984.
KLESER. Melvin. Design of Very High-Level Computer Languages. McGraw-Hill. 1991.
FISCHER, Charles. Crafting a Compiler. Benjamín-Cummings. 1988.
PITTMAN, Thomas. The Art of Compiler Design. Prentice-Hall. 1992.
CAROLL, John. Theory of Finite Autómata with an introduction to Formal Languages. Prentice-Hall. 1989.

Direcciones de interés:
http://www.phil-fak.uni-duesseldorf.de/FTP/FAQ/comp/compilers
http:/sunsite.doc.ic.ac.uk/usenet/news.answers/comp/compilers
http:/www.pu.informatic.th-darmstadt.de/welcome-e.html
http://www.shadowmac.org/pub/mirrors/RTFM/usenet-by-groups/comp.compilers

BASES DE DATOS : Computer Select

Regresar a Anterior Nueva búsqueda
Imagen transparente
Versión: 8.7.2 [BSC: 8.10]