Académique Documents
Professionnel Documents
Culture Documents
COMPILADORES
Asignatura Ingeniera Elctrica Divisin
1764
Clave Ingeniera en Computacin Departamento
7o
Semestre
09
Crditos
Consejo Acadmico del rea de las Ciencias Fsico Matemticas y de las Ingenieras
Asignatura obligatoria antecedente: Lenguajes Formales y Autmatas. Asignatura obligatoria consecuente: Ninguna. Objetivo(s) del curso: El alumno aplicar tcnicas y herramientas de desarrollo de compiladores para elaborar software de base (intrpretes, compiladores y otros traductores) obteniendo un software que optimice tanto memoria como desempeo. Adems el alumno podr discernir entre los diferentes traductores existentes para elaborar software eficiente y adecuado al tipo de problema a resolver. Temario
NM. NOMBRE HORAS
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Elementos para el estudio de los compiladores Anlisis lxico Anlisis sintctico Anlisis sintctico descendente Anlisis sintctico ascendente Traduccin dirigida por sintaxis Organizacin de memoria en tiempo de corrida Generacin de cdigo intermedio y anlisis semntico Optimizacin de cdigo Generacin de cdigo
8.0 8.0 6.0 8.0 10.0 8.0 6.0 6.0 6.0 6.0 72.0
0.0 72.0
COMPILADORES
(2 / 5)
1 Elementos para el estudio de los compiladores Objetivo: El alumno describir las etapas en el proceso de compilacin, sin importar el tipo de traductor de que se trate. Contenido: 1.1 Clasificacin de los traductores 1.2 Estructura de un compilador 1.3 Entornos de ejecucin 1.4 Consideraciones lxicas 1.5 Criterios generales de sintaxis 1.6 Problemas de traduccin 1.7 Especificacin de tipos y estructuras de datos
2 Anlisis lxico Objetivo: El alumno construir un analizador lxico a partir de la definicin de clases de componentes lxicos. Contenido: 2.1 Funciones de un Analizador Lxico 2.2 Identificacin de Clases lxicas 2.3 Estructura de las Tablas de smbolos 2.4 Manejo de errores lxicos 2.5 Programacin de un Analizador Lxico (scanner) 2.6 Generacin automtica de Analizadores Lxicos
3 Anlisis sintctico Objetivo: El alumno explicar a detalle la etapa del anlisis sintctico en el proceso de compilacin as como las gramticas idneas para definicin de la estructura de los lenguajes de programacin. Contenido: 3.1 Gramticas idneas para anlisis sintctico. 3.2 Representacin de sintaxis con gramticas BNF. 3.3 Clasificacin de los analizadores sintcticos
4 Anlisis sintctico descendente Objetivo: El alumno construir un analizador sintctico descendente a partir de una gramtica adecuada para este tipo de anlisis sintctico. Contenido: 4.1 Gramticas LL. 4.2 Construccin de la Tabla de Parser para un anlisis descendente 4.3 Manejo de errores sintcticos
COMPILADORES
(3 / 5)
4.4
5 Anlisis sintctico ascendente Objetivo: El alumno construir un analizador sintctico ascendente a partir de una gramtica adecuada para este tipo de anlisis sintctico. Contenido: 5.1 Gramticas LR 5.2 Analizador SLR(1) 5.3 Analizador LR(1) 5.4 Analizador LALR(1) 5.5 Deteccin y recuperacin de errores. 5.6 Generadores de analizadores de sintaxis LALR(1). YACC
6 Traduccin dirigida por la sintaxis Objetivo: El alumno modificar gramticas y realizar la traduccin dirigida por la sintaxis en analizadores descendentes y ascendentes. Contenido: 6.1 Gramticas de traduccin 6.2 Manejo de la tabla de smbolos 6.3 Traduccin dirigida por sintaxis en analizadores descendentes 6.4 Traduccin dirigida por sintaxis en analizadores ascendentes
7 Organizacin de memoria en tiempo de corrida Objetivo: El alumno analizar las estructuras para manejar la memoria en el momento de ejecucin del programa. Contenido: 7.1 Gramticas de traduccin 7.2 Diferentes tipos de organizaciones 7.3 Organizacin de pila o stack 7.4 Organizacin de heap 7.5 Paso de parmetros 8 Generacin de cdigo intermedio y anlisis semntico Objetivo: El alumno describir los diferentes tipos de cdigo intermedio y el anlisis semntico Contenido: 8.1 Atributos y gramticas con atributos 8.2 Algoritmos de manejo de atributos 8.3 Lenguajes intermedios 8.4 Revisin de tipos y declaraciones 8.5 Generacin de cdigo intermedio de diferentes sentencias
COMPILADORES
(4 / 5)
9 Optimizacin de cdigo Objetivo: El alumno utilizar las diferentes tcnicas para optimizar cdigo Contenido: 9.1 Principales fuentes para la optimizacin 9.2 Optimizacin de bloques bsicos 9.3 Grafos de flujo
10 Generacin de cdigo Objetivo: El alumno utilizar las tcnicas para generar y optimizar cdigo objeto Contenido: 10.1 La mquina objeto 10.2 Tcnicas bsicas de generacin de cdigo
Bibliografa bsica:
AHO, A. V., SETHI, Ravi, ULLMAN, J.D. Compiladores. Principios, tcnicas y herramientas. Mxico Addison-Wesley Iberoamericana, 2000 LOUDEN, Kenneth C. Compiler Construction. Principles and Practice U.S.A. Thompson Learning, 1997 PITTMAN, Thomas, PETERS, James The Art of Compiler Design; Theory and Practice Englewood cliffs New Jersey USA Prentice Hall, 1992 TREMBLAY, Jean-Paul, SORENSON, Paul G. The Theory and practice of compiler writing U.S.A. Mc. Graw-Hill, 1985
Todos
Todos
Todos
Todos
COMPILADORES
(5 / 5)
Bibliografa complementaria: BENNETT, J. P. Introduction to Compiling Techniques. A first Course using Ansi C, LEX and YACC U.S.A. Mc. Graw-Hill. Book Company Europe, 1996 KAPLAN, Randy M. Constructing Language Processor for Little Languages Portland Wiley, 1994 LEVINE, Jhon R, MASON, Tony, BROWN, Doug Lex and Yacc 2a. Edition U.S.A. OReilly, 1992 MAK, Ronald Writing Compilers and Interprets 2a. Edicin U.S.A. Willey, 1996 PRATT, T. W, ZELKOWITZ, M. V. Lenguajes de Programacin. Diseo e Implementacin. Mxico Prentice Hall, 1998 SCOTT, Michael L. Programming Language Pragmatics U.S.A. Morgan Kaufmann, 2000 Sugerencias didcticas: Exposicin oral Exposicin audiovisual Ejercicios dentro de clase Ejercicios fuera del aula Seminarios Forma de evaluar: Exmenes parciales Exmenes finales Trabajos y tareas fuera del aula Todos
Todos
2y5
Todos
Todos
X X X X
Lecturas obligatorias Trabajos de investigacin Prcticas de taller o laboratorio Prcticas de campo Otras
X X X
X X X
X X
Perfil profesiogrfico de quienes pueden impartir la asignatura Egresado de la carrera de Ingeniero en Computacin o afn; recomendable con grado de Maestro o Doctor. Conocimientos y experiencia en el diseo y construccin de lenguajes de programacin.