3051 Compiladores

Anuncio
GOBIERNO CONSTITUCIONAL DEL ESTADO LIBRE Y SOBERANO DE OAXACA
INSTITUTO ESTATAL DE EDUCACIÓN PÚBLICA DE OAXACA
COORDINACIÓN GENERAL DE PLANEACIÓN EDUCATIVA
COORDINACIÓN GENERAL DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
PROGRAMA DE ESTUDIOS
NOMBRE DE LA ASIGNATURA:
COMPILADORES
CICLO
QUINTO SEMESTRE
CLAVE DE LA ASIGNATURA
3051
TOTAL DE HORAS
102
OBJETIVOS GENERALES DE LA ASIGNATURA:
Al término de la asignatura, el alumno obtendrá los elementos teórico-prácticos suficientes para analizar, diseñar e
implementar compiladores; para lo cual, conocerá las diferentes fases que componen esta herramienta.
1.
TEMAS Y SUBTEMAS
INTRODUCCIÓN AL PROCESO DE COMPILACIÓN.
1.1. Introducción a la compilación.
1.2. Estructura de un compilador.
1.3. Fases de compilación.
1.4. Lenguajes y tipos de traductores.
1.5. Herramientas para el desarrollo de un compilador.
1.6. Clasificación de los compiladores.
2.
ANÁLISIS LÉXICO.
2.1. Funcionalidad del analizador léxico.
2.2. Especificación y reconocimiento de los símbolos de un lenguaje.
2.3. Diseño e implementación de un analizador léxico.
2.4. Control de errores léxicos.
3.
ANÁLISIS SINTÁCTICO.
3.1. Funcionalidad del analizador sintáctico.
3.2. Gramáticas libres de contexto.
3.3. Árboles de derivación.
3.4. Especificación sintáctica de un lenguaje.
3.5. Análisis sintáctico ascendente.
3.6. Análisis sintáctico descendente.
3.7. Generadores de analizadores sintácticos.
4.
ANÁLISIS SEMÁNTICO.
4.1. Funcionalidad del analizador semántico.
4.2. Traducción dirigida por la sintaxis.
4.3. Gramáticas de atributos.
4.4. Comprobaciones semánticas.
4.5. Comprobación de tipos.
5.
GENERADORES DE CÓDIGO.
5.1. Aspectos del diseño de un generador de código.
5.2. Lenguajes intermedios.
5.3. La máquina objeto.
5.4. Administración de la memoria durante la ejecución.
5.5. Bloques básicos y diagramas de flujo.
5.6. Un generador de código simple.
5.7. Distribución y asignación de registros.
5.8. Representación de bloques por medio de GDA (Diagrama Dirigido Acíclico).
5.9. Generadores de código.
6.
OPTIMIZACIÓN DE CÓDIGO.
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
Principales fuentes para la optimización.
Optimización independiente de la máquina objeto.
Optimización de bloques básicos.
Lazos en los diagramas de flujo.
Análisis del flujo de datos.
Optimización dependiente de la máquina objeto: registros e instrucciones.
ACTIVIDADES DE ENSEÑANZA-APRENDIZAJE:






Sesiones dirigidas por el profesor. Las sesiones se desarrollarán utilizando medios de apoyo didáctico como son la
computadora, cañón y pizarrón.
Revisión bibliográfica del tema por los alumnos en la bibliografía básica y de consulta.
Análisis, diseño e implementación de analizadores léxicos sencillos en un lenguaje de alto nivel utilizando un
generador de analizadores léxico gráficos como LEX o JFLEX.
Análisis, diseño e implementación de analizadores sintácticos sencillos en un lenguaje de alto nivel utilizando
generadores de analizadores sintácticos como YACC o BISON.
Análisis, diseño e implementación de una máquina virtual en un lenguaje de alto nivel.
Análisis, diseño, implementación y puesta a punto de un proyecto final de mediana complejidad donde se emplee la
gran mayoría de los conceptos vistos en el transcurso del semestre.
CRITERIOS Y PROCEDIMIENTOS DE EVALUACIÓN Y ACREDITACIÓN:
Al inicio del curso el profesor indicará el procedimiento de evaluación para la obtención de la calificación final, de la cual el
50% lo representará el promedio de las calificaciones parciales y el otro 50 % el examen ordinario. Para tener derecho a cada
evaluación, el alumno deberá cumplir con un mínimo de 85% de asistencia.
BIBLIOGRAFÍA (TIPO, TÍTULO, AUTOR, EDITORIAL Y AÑO):
BÁSICA




Diseño de compiladores modernos, Grune Dick, Editorial McGraw-Hill, 2007.
Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Ravi Sethi and Jeffrey D. Ullman, Second edition,
Adisson Wesley editorial, 2006.
Compiladores e interpretes: teoría y práctica, Manuel Alfonseca, et. al, Editorial Pearson Education, 2006.
Compiladores: Traductores y Compiladores con Lex/Yacc, Jflex/Cup y JavaCC, Sergio Gálvez, et al. Editoiral
Universidad de Malaga, 2005.
CONSULTA

Lex & Yacc, John R. Levine, Tony Mason and Doug Brown, O’Reilly & Associates editorial, 1995.

The Theory And Practice Of Compiler Writing, Jean-Paul Tramblay and Paul G. Sorenson, Mc Graw-Hill editorial,
1985.

Building Parsers with Java, Steven John Metsker, Addison-Wesley editorial, 2001.

Introduction to Automata Theory, Languages, and Computation, J. Hopcroft and J.D. Ullman, Second edition,
Addison-Wesley editorial, 2000.
PERFIL PROFESIONAL DEL DOCENTE:
Maestría o doctorado en ciencias de la computación o área afín, con habilidades para la programación de sistemas y/o
compiladores.
Experiencia profesional y docente mínima de 1 año.
Descargar