plan de estudios de compiladores
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA
UNIDAD CULHUACAN
ASIGNATURA: COMPILADORES
ALUMNO: GRUPO: 5CV34
Pérez Rojas Bárbara Lizbeth
SEMESTRE 22-1
Agosto - Diciembre 2021
Profesor: Resendiz Colin Pilar
Programa sintético
CARRERA: Ingeniería en Computación
ASIGNATURA: Compiladores
Fundamentación de la asignatura
El progreso de las ciencias de la computación ha sido basado en la notación formal matemática y lógica dentro de la cual se han desarrollado los lenguajes formales, estos junto con los Autómatas de estado finito han dado pauta a la creación de compiladores que traducen diferentes lenguajes de programación a un solo tipo de lenguaje, código de maquina, lo cual permite la utilización de computadoras con diferente propósito y de utilización masiva y común.
El estudio de los Compiladores permitirá al profesional de la carrera de Ingeniería en Computación comprender el funcionamiento y trabajo desempeñado en el intento por comunicar ideas a trabajo computacional: la computación y los lenguajes de programación evolucionan y se acercan mas a la comunicación directa hombre - máquina.
Las Matemáticas discretas y la Teoría de Autómatas son antecedentes de esta asignatura cuyos conceptos y herramientas serán aplicables consecuentemente a la materia de Sistemas Operativos, Arquitectura de Computadoras y Lenguajes de Arquitecturas en Paralelo.
El estudio de los Compiladores permitirá al profesional de la carrera de Ingeniería en Computación comprender el funcionamiento y trabajo desempeñado en el intento por comunicar ideas a trabajo computacional: la computación y los lenguajes de programación evolucionan y se acercan mas a la comunicación directa hombre - máquina.
Las Matemáticas discretas y la Teoría de Autómatas son antecedentes de esta asignatura cuyos conceptos y herramientas serán aplicables consecuentemente a la materia de Sistemas Operativos, Arquitectura de Computadoras y Lenguajes de Arquitecturas en Paralelo.
Objetivo de la Asignatura
El alumno diseñará un compilador que funcione completamente y con cada una de sus partes. Explicará las etapas de diseño y su trabajo respectivo en la traducción de un lenguaje de alto nivel hasta uno de bajo nivel.
UNIDAD 1: Introducción
1.1 Historia
1.2 Programas relacionados con los compiladores
1.3 Proceso de traducción
1.4 Estructuras de datos principales en un compilador
1.5 Otras cuestiones referentes a la estructura del compilador
1.6 Arranque automático y portabilidad
1.7 Lenguaje y compilador de muestra TINY
1.8 Un lenguaje para un proyecto de compilador
1.8.1 Ejercicios
UNIDAD 2: Análisis Léxico
2.1 El proceso de análisis léxico
2.2 Expresiones regulares
2.3 Autómatas finitos
2.4 Desde las expresiones reulares hasta los DFA
2.5 Implementación de un analizador léxico TINY ("Diminuto")
2.6 Uso de Lex para generar automáticamente un analizador léxico
2.6.1 Ejercicios
UNIDAD 3: Análisis Sintáctico
3.1 Procesos del análisis sintáctico
3.1.1 Gramáticas libres de contexto
3.1.2 Arboles de análisis gramáticas y árboles sintáctitos abtractos
3.1.3 Ambigüedad
3.2 Notaciones extendidas: EBNF y diagramas de sintaxis
3.3 Sintaxis del lenguaje TINY
3.4 Análisis sintáctico descendente mediante método descendente recursivo
3.4.1 Análisis sintáctico LL(1)
3.4.2 Un analizador sintáctico descendente recursivo para lenguaje TINY
3.4.3 Recuperación de errores en analizadores sintácticos descendentes
3.5 Perspectiva general del análisis sintáctico ascendente
3.5.1 Autómatas finitos de elementos LR (0) y análisis sintáctico LR(0)
3.5.2 Análisis sintáctico SLR(1)
3.5.3 Yacc un generador de analizadores sintácticos LALR(1)
3.5.4 Recuperación de errores en analizadores sintácticos ascendentes
UNIDAD 4: Análisis Semántico
4.1 Atributos y gramáticas con atributos
4.1.1 Algoritmos para cálculo de atributos
4.2 La tabla de símbolos
4.3 Tipos de datos y verificación de tipos
4.4 Un analizador semántico para el lenguaje TINY
4.4.1 Ejercicios
UNIDAD 5: Código Intermedio
5.1 Código intermedio y estructuras de datos para generación de código
5.2 Técnicas básicas de generación de código
5.3 Técnicas de optimación de código
5.3.1 Ejercicios
UNIDAD 6: Generación de Código
6.1 Generación de código de referencias de estructuras de datos
6.2 Generación de código de sentencias de control y expresiones lógicas
6.3 Generación de código de llamadas de procedimientos y funciones
6.4 Generación de código en compiladores comerciales dos casos de estudio
6.5 TM: Una máquina objetivo simple
BIBLIOGRAFIA
Kenneth C. and Louden, Construcción de Compiladores Principios y Practica,
Edit. Thomnson, México 2003. p. 446
Alfred V. Aho Compiladores Principios, Técnicas y Herramientas Edit. Addison-Wesley, U.S.A, Edic May 2000. p. 500
F. Sanchis Llorca Compiladores, Teoría y Construcción November 1991. p. 32-77
Kelley, Dean, Introducción a la Teoría de Autómatas y Lenguajes Formales, Edit. Prentice Hall, España, Edic. 1995. p. 380
Kimber, Efim., Theory of Computing, Edit.Prentice Hall, Inglaterra, Edic.2001. p. 1-88
Edit. Thomnson, México 2003. p. 446
Alfred V. Aho Compiladores Principios, Técnicas y Herramientas Edit. Addison-Wesley, U.S.A, Edic May 2000. p. 500
F. Sanchis Llorca Compiladores, Teoría y Construcción November 1991. p. 32-77
Kelley, Dean, Introducción a la Teoría de Autómatas y Lenguajes Formales, Edit. Prentice Hall, España, Edic. 1995. p. 380
Kimber, Efim., Theory of Computing, Edit.Prentice Hall, Inglaterra, Edic.2001. p. 1-88
Flynn, Ida M., McHoes, Ann M. Sistemas Operativos International Thomson Editores, Tercera Edición, 2003. p. 235-271
Hopcroft,John E. and Ullman Jefrey D. Introducción a la Teoría de Autómatas, Lenguajes y Computación Edit. Addison-Wesley, U.S.A, Edic. 2002. p. 91-233,
p. 273-326
HORARIO
Lunes 19:00 - 20:30
Miércoles 17:30 - 19:00
Viernes 19:00 - 20:30