Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. IDENTIFICACION
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.
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
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.
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.
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.
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.
7. MEDIOS
Para el desarrollo de las clases se utilizan los siguientes medios tradicionales: tiza y tablero;
retroproyector, portátil y video beam.
8. CONTENIDO
# TOPICO Numero
de Horas
1. INTRODUCCION A COMPILADORES 3
1.1. Compiladores y sus relacionados (Preprocesadores,
ensambladores, cargadores)
1.2. Análisis de un Programa Fuente (Lectura)
1.3. Fases de un compilador
2. ANALISIS LEXICO 9
2.1. Función del analizador léxico
2.2. Manejo de los Buffers de entrada (Lectura - Opcional)
2.3. Especificación de los componentes léxicos
2.4. Reconocimiento de los componentes léxicos
2.5. Autómatas Finitos
2.6. Construcción de Autómatas Finitos a partir de expresiones
regulares
2.7. Diseño de un generador de analizadores lexicográfico (Opcional)
2.8. Optimización de buscadores por concordancia de patrones
basados en AFD
3. ANALISIS SINTACTICO 18
3.1. Función del analizador sintáctico
3.2. Gramáticas independientes del contexto
3.3. Consideraciones en la escritura de una Gramática
3.4. Análisis Sintáctico Descendente
3.5. Análisis Sintáctico Ascendente
3.6. Análisis Sintáctico por Precedencia de Operadores
3.7. Analizadores Sintácticos LR
3.8. Uso de Gramáticas Ambiguas
3.9. Generadores de Analizadores Sintácticos (Opcional)
4. TRADUCCION DIRIGIDA POR LA SINTAXIS 10
4.1. Definiciones dirigidas por la Sintaxis
4.2. Construcción de Arboles de Sintaxis
4.3. Evaluación Ascendente de Definiciones con atributos
4.4. sintetizados
4.5. Definiciones con atributos por la Izquierda
4.6. Traducción Descendente
5 Exámenes 4
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.
Tabla II. Correspondencia de salidas del curso, productos evaluables y las áreas de
dominio cognitivo
Resultados de
CO1 CO2 CO3 CO4 CO5 CO6 CO7 SOg
Aprendizaje
Dominio Cognitivo
Conocimiento
Comprensión
Aplicación ID
Análisis P1 P1 P2 P2 P2 EF EF
Diseño
Evaluación
10. BIBLIOGRAFIA
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
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.