1151049 - Compiladores
Institución: Universidad Autónoma Metropolitana, Azcapotzalco.
Instructor: Rodrigo Alexander Castro Campos.
Trimestre: 2025-O.
Grupo: CSI01.
Horario: Martes y jueves de 7:00 a 9:15.
Salón: Edificio T, Sala BYRON.
Contenido oficial del curso:
- Traductores y lenguajes.
- Lenguaje y máquina objetivo.
- Análisis léxico.
- Análisis sintáctico descendente.
- Análisis sintáctico ascendente.
- Análisis semántico.
- Ambientes de ejecución.
- Generación de código.
- Mejoramiento de código.
Calificación:
Habrá ocho tareas con un valor de 12.5 puntos cada una. Las tareas consistirán en escribir programas para la plataforma omegaUp que resuelvan al 100% el problema de programación indicado para la evaluación. Sus datos de registro deberán enviarse mediante este formulario antes de la entrega de la primera evaluación. Cada tarea estará disponible con al menos una semana de anticipación con respecto a la fecha de entrega. No habrá evaluación terminal. El curso se impartirá en el lenguaje C++.
La calificación en acta se obtiene como sigue tras sumar los puntos provenientes de las tareas:
- Al menos 60 puntos para acreditar con S.
- Al menos 73 puntos para acreditar con B.
- Al menos 87 puntos para acreditar con MB.
Todas las actividades solicitadas deben realizarse exclusivamente por el alumno a ser evaluado, y no por otras personas ni por herramientas de generación tales como las basadas en inteligencia artificial. De acuerdo al Reglamento de Alumnos de la UAM, es falta de los alumnos en contra de la institución el suplantar o permitir ser suplantado en la realización de actividades académicas, presentar como propios trabajos u obra intelectual que sean de la autoría o titularidad de otra persona, y engañar a una persona para obtener ilícitamente un bien o para alcanzar un beneficio indebido. Quienes incurran en estas faltas no tendrán derecho a aprobar el curso y podrán recibir sanciones por parte de la institución que van desde la amonestación escrita hasta la suspensión. En caso de que haya una sospecha razonable por parte del profesor de que el alumno está incurriendo en esta falta, el profesor podrá solicitarle al alumno presentar evaluaciones adicionales presenciales e individuales para aclarar la situación.
Pueden consultar esta lista de problemas de "Programación Estructurada" para que practiquen.
Pueden consultar esta lista de problemas de "Algoritmos y Estructuras de Datos" para que practiquen.
¡¡¡ Participa en el XXII Concurso de Programación de la UAM "Luis Erick González Moreno" !!!
Calendario: El calendario es tentativo y podrá cambiar. Pueden consultar programas de ejemplo de los temas del curso.
- 02/10: Presentación del curso. Introducción a omegaUp. Expresiones regulares y autómatas finitos.
- 07/10: Anclas y clases de caracteres. Capturas de subgrupos. Capturas glotonas y no glotonas.
- 09/10: Expresiones regulares en programación. Motores de expresiones regulares. Biblioteca en C++.
- 14/10: Operaciones de reemplazo y retroreferencias. Gramáticas libres de contexto. Tarea 1 para el 23/10. Envíos aceptados.
- 16/10: Algoritmos de análisis gramatical. Gramáticas LL y LR.
- 21/10: Algoritmos de análisis de gramáticas LL. Tarea 2 para el 30/10. Envíos aceptados.
- 23/10: Traductores. Ejecución nativa e interpretada. Estudio de un lenguaje de bajo nivel. Referencia de máquina virtual.
- 28/10: Estructura e implementación de intérpretes de lenguajes de bajo nivel. Tarea 3 para el 07/11. Envíos aceptados.
- 30/10: Implementación eficiente de intérpretes. Estudio de un lenguaje de alto nivel. Referencia de lenguaje de alto nivel.
- 04/11: Estructura de un compilador. Tipos de símbolos léxicos y anotaciones a símbolos. Preprocesador de inclusiones.
- 06/11: Implementación del análisis léxico del lenguaje de alto nivel. Tarea 4 para el 17/11. Envíos aceptados.
- 11/11: Árboles de sintaxis abstracta. Análisis sintáctico de sentencias.
- 13/11: Análisis sintáctico de expresiones primarias y unarias y binarias.
- 18/11: Análisis sintáctico de expresiones binarias. Tarea 5 para el 02/12. Envíos aceptados.
- 20/11: Día de descanso obligatorio.
- 25/11: Análisis semántico y la tabla de símbolos. Evaluación de tipos.
- 27/11: Pila de símbolos. Implementación del análisis semántico global.
- 02/12: Implementación del análisis semántico de expresiones y sentencias. Tarea 6 para el 11/12 y nota. Envíos aceptados.
- 04/12: Generación de código para funciones y para el inicio del programa.
- 09/12: Cálculo de direcciones. Generación de código para sentencias. Tarea 7 para el 18/12. Envíos aceptados.
- 11/12: Generación de código para expresiones. Optimización de código y asignación de registros. Tarea 8 para el 18/12. Envíos aceptados.
- Calificaciones finales.
Entornos de programación que pueden usar localmente:
Entornos de programación que pueden usar en línea:
Bibliografía:
- Nystrom R., "Crafting Interpreters", Genever Benning, 2021.
- Aho V., Ullman J., Lam M., Seti R., "Compiladores: principios, técnicas y herramientas", Pearson, 2007.
- Appel W., "Modern Compiler Implementation in C", Cambridge University Press, 1998.
- Brown D., Levine J., Mason T., "lex & yacc", O'Reilly Media, 1992.
- Grune D., Bal H. E., Jacobs C. J., Langendoen K. G., "Diseño de compiladores modernos", McGraw-Hill, 2007.
- Louden K. C., "Construcción de compiladores", Thomson, 2004.
- Morgan B., "Building and Optimizing Compiler", Digital Press, 1998.
- Muchnick S. S., "Advanced Compiler Design & Implementation", Morgan Kauffman, 2003.
Enlaces de interés: