UNIVERSIDAD RICARDO PALMA FACULTAD DE INGENIERÍA DEPARTAMENTO ACADEMICO DE INGENIERIA ESCUELA ACADÉMICO PROFESIONAL DE INGENIERÍA DE INFORMÁTICA SÍLABO 2008-1 PLAN DE ESTUDIOS 2000 I. DATOS GENERALES CURSO CÓDIGO CICLO CRÉDITOS CONDICIÓN NATURALEZA HORAS DE TEORÍA HORAS TALLER HORAS TOTALES REQUISITOS COORDINADOR PROFESORES II. : : : : : : : : : : : : LENGUAJES Y COMPILADORES. II 0812 VIII (Octavo). 03 Electivo Teórico-practico-experimental. 2 Hrs. 3 Hrs. 5 Hrs. II 0506 Estructura de Datos y Algorítmica II Lizardo Silva Ubaldo Lizardo Silva Ubaldo (Teoría - Laboratorio) SUMILLA La asignatura de Lenguajes y Compiladores es un curso desarrollado en forma teórico-práctico-experimental, que describe los diferentes componentes de un Compilador y los diferentes analizadores de un compilador, quedando capacitado para desarrollar un compilador. Las unidades de aprendizaje son: Fundamentos del Compilador, Analizador Léxico, Analizador Sintáctico, analizador Semántico, Código Intermedio. III. COMPETENCIAS DE LA CARRERA Desarrolla y mantiene sistemas de software confiables y eficientes y que sea económico desarrollarlos y mantenerlos y que satisfagan los requisitos definidos por los clientes IV. COMPETENCIAS DEL CURSO Los alumnos estarán en la capacidad de conocer los componentes básicos de un compilador y aplicarlos en el diseño y desarrollo del mismo. Los logros a alcanzar son los siguientes: Capacitar al alumno en los conocimientos fundamentales de construcción de Compiladores. V. Que el alumno esté en capacidad de diseñar y desarrollar un analizador lexicográfico. Que el alumno esté en capacidad de diseñar y desarrollar un analizador Sintáctico Que el alumno esté en capacidad de diseñar y desarrollar un analizador Semántico. Que el alumno esté en capacidad de diseñar y desarrollar un generador de código intermedio Que el alumno esté en capacidad para desarrollar un compilador. RED DE APRENDIZAJE Fundamentos del Compilador Forma parte Analizador Léxico Forma parte Forma parte Analizador Sintáctico Analizador Semántico Genera Genera Código Intermedio genera VI. UNIDADES DE APRENDIZAJE UNIDAD 1 : Fundamentos del Compilador Logro de la unidad: Capacitar al alumno en los conocimientos fundamentales de construcción de Compiladores. Semana 1,2 Sesión / Tema Arquitectura de un compilador Compiladores: clases y estructura básica. Fases del Compilador Análisis lexicográfico (scanner), análisis sintáctico (parser), análisis semántico, generación de código intermedio, generación de código objeto, tratamiento y recuperación de errores, administración de la tabla de símbolos. Actividades Exposición del profesor Programas básicos usando cadenas de caracteres. 2,3 Aspectos Formales. Sistemas y Gramáticas Formales: alfabeto, lenguajes, símbolos terminales y no terminales. Jerarquía de lenguajes, Forma Normal de Backus (BNF). Exposición del profesor Programas básicos usando cadenas de caracteres UNIDAD 2: Analizador Lexicográfico Logro de la unidad: Diseña y desarrolla un analizador lexicográfico. Semana 3, 4 5 Sesión / Tema Análisis Léxico Funciones y reconocimiento de tokens. Especificación de los componentes lexicográficos. Gramáticas regulares. Tratamiento y recuperación de errores lexicográficos. Autómatas finitos. Tabla de Símbolos. Estructura, organización, primitivas de acceso. Actividades Exposición del profesor Programación de un analizador lexicográfico Practica de Laboratorio 1 Practica de Teoría 1 Exposición del profesor Programación de una tabla de símbolos UNIDAD 3: Analizador Sintáctico Logro de la unidad: Diseña y desarrolla un analizador Sintáctico. Semana 6, 7 8 9, 10 Sesión / Tema Análisis Sintáctico. Métodos de análisis sintáctico: descendente y ascendente Tipos de parser. EXAMEN PARCIAL Análisis Sintáctico dirigido por tablas Gramáticas LL(1). Método de parser descendente. Algoritmos para generar la tabla del parser. Actividades Exposición del profesor Programación de un analizador sintáctico Practica de Laboratorio 2 Practica de Teoría 2 Exposición del profesor Programación de una tabla de símbolos UNIDAD 4: Analizador Semántico Logro de la unidad: Diseña y desarrolla un analizador Semántico. Semana 11 12 Sesión / Tema Manejo de Errores. Tipos de errores. Recuperación de errores Análisis Semántico. Funciones del Analizador Comprobación de tipos. semántico. Actividades Exposición del profesor Desarrollo del Proyecto Exposición del profesor Desarrollo del Proyecto Practica de Laboratorio 3 Practica de Teoría 3 UNIDAD 5: Generador de código intermedio Logro de la unidad: Diferenciar un programa escrito en código intermedio. Generar un programa usando código intermedio Semana 13 14 15 16 17 Sesión / Tema Código Intermedio Generación de código Código Objeto. Asignación de memoria. Actividades Exposición profesor Desarrollo Proyecto Exposición profesor Desarrollo Proyecto del del del del Exposición de Proyectos EXAMEN FINAL EXAMEN SUSTITUTORIO VII. METODOLOGIA Las clases de la parte teórica se desarrollarán en aula presentando las principales técnicas aplicadas a cada una de las fases del diseño de compiladores. Además, se combinarán con lecturas obligatorias compuestas por artículos o capítulos de libros que se discutirán en clase, por lo que éstos deben ser leídos antes de clase. Las clases de práctica servirá para discutir los aspectos del desarrollo del proyecto Las clases de laboratorio, empieza recordando la sintaxis y semántica de un Lenguaje de Programación. Para el desarrollo de software de base, los alumnos pueden usar el C#. VIII. EVALUACION Concepto Examen Parcial Teoría Porcentaje 25% Compuesto 100% Examen Parcial. Examen Final Teoría 25% 100% Examen Final. Promedio de Prácticas de Teoría 20% Promedio de Laboratorio 30% 40% Proyecto 60% Promedio de Evaluaciones 40% Proyecto. 60% Promedio de Evaluaciones Fórmula de evaluación Promedio Final = 0.25*PAR1 + 0.25*FIN1 + 0.30*(0.20*LAB1+0.20*LAB2+0.20*LAB3+0.40*PYL1) + 0.20*(0.20*PRA1+0.20*PRA2+0.20*PRA3+0.40*IFP1) PAR : FIN : PRA : LAB : PYL : IFP : Examen parcial Examen final Practicas calificadas de Teoría Practicas de laboratorio Promedio Proyecto Informe de Teoría IX. Referencias Bibliográficas (bibliografías, sitios web,revistas y otras fuentes de información) Compiladores Conceptos fundamentales. Teufel & Schmidt & Teufel. Addison-Wesley, 1996. Compiladores, Principios, Técnicas y Herramientas Alfred Aho & Ravi Sethi & Jeffrey Ullman. Addison-Wesley, 1990. Teoría de Autómatas y Lenguajes Formales. Kelley Dean,. Prentice Hall, 1995 Compiladores I – Una Introducción a la Fase de Análisis E. Vivancos, L. Moreno, V. Gisbert Lenguajes de Programación Diseño e Implementación Pratt Terrence & Zelkowitz Marvin. Prentice Hall 1998. Matemática Discreta y lógica. Grassmann Winfried Karl, Tremblay Jean-Paul. Prentice Hall 1997. Programa Calendarizado de Lenguajes y Compiladores Ciclo 2008- 1 Semana Teoría 1 Arquitectura de un compilador 2 Arquitectura de un compilador. Aspectos Formales. 3 Aspectos Formales. Análisis Léxico 4 Análisis Léxico. 19-Abr Evaluación 1 5 Análisis Léxico 6 Tabla de Símbolos. Análisis Sintáctico. 7 Análisis Sintáctico. 10-May Evaluación 2 8 9 10 11 Análisis Sintáctico dirigido por tablas Análisis Sintáctico dirigido por tablas Manejo de Errores. Análisis Semántico. 07-Jun Evaluación 3 12 Análisis Semántico. 13 Código Intermedio 14 Generación de código. Evaluación 4 28-Jun 15 Sustentación del proyecto 16 Laboratorio ( 3 horas ) Proyecto Ejercicios y Programas con Definir el lenguaje clases en C# Programas con cadenas de Definir el lenguaje caracteres Construcción de Programas de Análisis Léxico Construcción de Programas de Análisis Léxico Evaluación 1 Construcción de Programas de Análisis Léxico Diseño e implementación del scanner Modelo de arquitectura del proyecto Generación del código Intermedio Aspectos avanzados: desarrollo del intérprete. Evaluación 4 Sustentación del proyecto Generación de código intermedio Intérprete Diseño e implementación del scanner Tabla de símbolos Implementación de la Tabla Entrega de Informe 1-Teoría de símbolos (Definición del Lenguaje y Analizador Léxico). Construcción de Programas Entrega de Informe 1de Análisis Sintáctico. Lab. (Implementación Evaluación 2 del Analizador Léxico y Tabla de Símbolos) Diseño e implantación del parser Examen Parcial Construcción de Programas Diseño e implantación del de Análisis Sintáctico. parser Construcción de Programas de Análisis Sintáctico. Entrega de informe 2. Manejo de Errores (Teoría y Lab) Sintáctico Aspectos avanzados: Diseño e implantación del Desarrollo del Analizador parser. Semántico Evaluación 3 Aspectos avanzados: Análisis semántico Desarrollo del Analizador Entrega de Informe 3. Semántico (Teoría y Lab) Semántico Examen Final Entrega de Informe Final