Download Compiladores_SilaboUPN_2011
Document related concepts
Transcript
SÍLABO DEL CURSO COMPILADORES FACULTAD DE INGENIERÍA CARRERA DE INGENIERÍA DE SISTEMAS 1 DATOS GENERALES Facultad Carrera Profesional Departamento Tipo de curso Requisitos Ciclo de Estudios Duración del curso Inicio Término Extensión horaria Créditos Período lectivo Docente : Ingeniería y Arquitectura : Ingeniería de Sistemas : Ingeniería de Sistemas : Obligatorio : Lenguajes de Programación :8 : 17 semanas : 22 de agosto del 2011 : 17 de diciembre del 2011 : 4 horas semanales :4 : 2011 – 2 : Ms. Ingº Carlos Castillo Diestra. ccd@upnorte.edu.pe 2 FUNDAMENTACIÓN Esta asignatura es de naturaleza teórica y práctica y tiene por objetivo que los alumnos del VIII ciclo de la carrera de Ingeniería de Sistemas conozcan y apliquen los principios y técnicas de escritura de compiladores. En el curso se tratará el proceso de compilación, describiendo los componentes de un compilador, el entorno en que trabajan los compiladores y algunas herramientas de software que facilitan la construcción de compiladores. Los alumnos realizarán un proyecto de aplicación, utilizando como lenguaje de programación C/C++ y los generadores de código FLEX y BISON. 3 COMPETENCIA Al final del curso el alumno será capaz de aplicar los principios y técnicas de escritura de compiladores en la construcción de los componentes de un compilador, utilizando el lenguaje de programación C/C++ y los generadores de código FLEX y BISON. 4 OBJETIVOS ESPECÍFICOS DEL CURSO 4.1 Conocer en detalle las fases del proceso de traducción de programas. 4.2 Entender el uso de las expresiones regulares y autómata finitos para implementar analizadores léxicos. 4.3 Implementar analizadores léxicos usando C/C++ y FLEX 4.4 Entender las principales técnicas de análisis sintáctico ascendente y descendente. 4.5 Implementar un analizador sintáctico usando C/C++ y BISON 4.6 Conocer la función del análisis semántico 4.7 Conocer las técnicas involucradas en la generación de código intermedio y código objeto eficiente. 5 CONTENIDOS CONCEPTUALES Lenguajes y gramáticas Expresiones regulares Programación de sistemas Procesadores de lenguajes El compilador Autómatas finitos Análisis léxico Análisis sintáctico Análisis semántico Generación de código intermedio. Formas internas. Tipos de formas interna Tabla de símbolos Generación de código objeto: introducción 6 CONTENIDOS PROCEDIMENTALES Ejercitación reflexiva en diversas técnicas, destrezas y/o estrategias para hacer cosas concretas. Sílabo del Curso COMPILADORES Para el aprendizaje de técnicas, se establecerá la secuencia de acciones y con entrenamiento debe concluir en una automatización de la cadena, con el fin de alcanzar una rápida y certera ejecución, al tiempo que menos costosa en recursos cognitivos. Propiciar el desarrollo de capacidad reflexiva para la aplicación de técnicas en situaciones diversas, modificándolas para adecuarlas a nuevas condiciones y condiciones ideales de uso. A través de casos reales, mostrar la aplicación de estrategias para aspectos de planificación, toma de decisiones y controlar la aplicación de las técnicas para adaptarlas a las necesidades específicas de cada tarea. Capacitar para una aplicación organizada y controlada de técnicas y recursos disponibles. Proveer el entrenamiento para la aplicación de los conocimientos en contextos diferenciados, debido a que todo aquello que haya aprendido será más útil en la medida en que pueda utilizarlo en situaciones imprevisibles. Para organizar una adecuada secuencia de contenidos procedimentales se considera primeramente el dominio de aquellos procedimientos considerados como básicos, es decir, que respondan a necesidades urgentes a satisfacer; en segundo lugar, se procura asegurar el aprendizaje de aquellos procedimientos que resulten más potentes que otros en la solución de tareas, o como requisito para otros aprendizajes. 7 CONTENIDOS ACTITUDINALES Responsabilidad individual y colectiva Disposición a la investigación y a la búsqueda de información adicional Actitud crítica para el análisis de problemas Valoración de los conocimientos adquiridos Disposición al trabajo en equipo Disposición a recibir criticas del docente y sus compañeros Disposición a ser reflexivos y creativos Capacidad de escucha Mentalidad abierta 8 METODOLOGÍA GENERAL DEL CURSO El desarrollo del curso es Teórico - Práctico, los conocimientos adquiridos en las clases teóricas, son aplicados y puestos a discusión en el laboratorio para la verificación del mismo, de esa forma, el alumno pone a prueba lo aprendido y puede profundizar más sus conocimientos gracias a la realización de prácticas de laboratorio. Además, los alumnos en grupo de hasta tres alumnos realizarán un proyecto de aplicación. 9 PROGRAMACIÓN UNIDAD SEM 1 UNIDAD 1 Introducción a la Teoría de Lenguajes y Compiladores (4 Semanas) 2 3 4 2 ACTIVIDAD LENGUAJES Y GRAMÁTICAS Alfabeto, cadena, gramática, derivación, derivación más a la izquierda, derivación más a la derecha, sentencia, lenguaje, clausura, clausura positiva. Laboratorio: Reconocimiento de cadenas Jerarquía de gramáticas según Chomsky. Lenguajes, Gramáticas y Autómatas. EXPRESIONES REGULARES Expresión regular Definición regular PROGRAMACIÓN DE SISTEMAS PROCESADORES DE LENGUAJES Intérpretes, Traductores: compiladores y ensambladores. Laboratorio: Reconocimiento de cadenas EL COMPILADOR El Compilador Estructura de un compilador Proceso de Compilación Laboratorio: Implementación de una ER en C/C++ T1: PRACTICA CALIFICADA ESCRITA Laboratorio: Flex FUENTES BIBLIOGRÁFICAS: [01] Capítulos 1, 3 COMPILADORES 5 UNIDAD 2 Análisis léxico (3 Semanas) 6 7 8 9 UNIDAD 3 Análisis Sintáctico (4 Semanas) 10 11 y 12 13 UNIDAD 4 Análisis Semántico, Tabla de Símbolos y Síntesis (3 Semanas) 14 15 16 17 AUTÓMATAS FINITOS Autómatas Finitos: tipos (AFND, AFD) Conversión de una ER a un AFND Conversión de un AFND a un AFD Laboratorio: Implementación de AFDs ANÁLISIS LÉXICO Análisis léxico Tokens, lexemas, patrones Implementación del analizador léxico de un lenguaje de programación. Laboratorio: Implementación analizadores léxicos mediante AFDs de un lenguaje de programación. Construcción automática de analizadores léxicos: FLEX PROYECTO: Construcción de un analizador léxico-sintáctico para un lenguaje de programación de alto nivel en grupos de hasta tres alumnos. (Entrega del proyecto en la semana 15) FUENTES BIBLIOGRÁFICAS: [01] Capítulo 3 EXAMEN PARCIAL ANÁLISIS SINTÁCTICO Gramática Libres de Contexto.(GLC) Arboles de derivación. Notación BNF. Ambiguedad. Recursividad. Eliminación de la recursividad por la izquierda Factorización por la izquierda. Laboratorio: BISON Analizador predictivo no recursivo Esquema General. Algoritmo. Construcción de Tabla de Análisis. Laboratorio: BISON Analizadores Ascendentes. Analizadores LR. Construcción de un analizador SLR(0): Items. Gramática aumentada. Conjuntos CLAUSURA y GOTO. Colección Canónica. Construcción de tablas de análisis. Laboratorio: BISON T2: PRACTICA CALIFICADA ESCRITA FUENTES BIBLIOGRÁFICAS: [01] Capítulos 4 ANALISIS SEMANTICO. Comprobación estática. Sistemas de tipos. Especificación de un Comprobador de Tipos sencillo. Conversión de tipos. Laboratorio: Asesoría de proyecto Traducción Dirigida por la Sintaxis. Atributos. Reglas Semánticas. Generación de Código Intermedio. Formas Internas. Tipos de Formas Interna Laboratorio: Asesoría de proyecto Semántica de Operadores de Formas Internas. Estructuras de datos. Semántica de operadores aritméticos y saltos. Operadores CARGA y CARGADIR y CARGAVAL Tabla de Símbolos GENERACIÓN DE CÓDIGO OBJETO: Introducción Laboratorio: T3 REVISIÓN DE PROYECTOS FUENTES BIBLIOGRÁFICAS: [01] Capítulos 5, 6, 8, y 9 EXAMEN FINAL EXAMEN SUSTITUTORIO 3 Sílabo del Curso 10 COMPILADORES SISTEMA DE EVALUACIÓN DEL CURSO El cronograma de la evaluación continua del curso es el siguiente: ESPECIFICACIÓN DE TRABAJOS DEL CURSO T Descripción Semana T1 Práctica calificada escrita 4 T2 Practica calificada escrita 12 T3 Presentación y Exposición Final de Proyectos del Curso 15 El peso de cada T es: EVALUACIÓN T01 T02 T03 TOTAL PESO (%) 20 35 45 100% ESCALA VIGESIMAL 2,4 4,2 5,4 12 Los pesos ponderados de las clases de evaluación son los siguientes: EVALUACIÓN PARCIAL CONTINUA FINAL TOTAL PESO (%) 20 60 20 100% ESCALA VIGESIMAL 4 12 4 20 El examen Parcial se llevará a cabo en la semana 8 y el Examen Final se llevará a cabo en la semana 16. La Evaluación Sustitutoria evalúa toda la temática desarrollada en el semestre y se rinde la semana consecutiva al término de los exámenes finales y su nota reemplazará, necesariamente, a la nota de un Examen (Parcial o Final) o a la nota de un T (Evaluación Continua), de tal manera que el resultado final sea favorable al alumno. 11 12 BIBLIOGRAFÍA OBLIGATORIA # 01 CODIGO 005.453 AHO 02 03 04 005.133C PAPP/M 005.133C HEKM 005.133C++ DEIT/J TITULO Compiladores principios, técnicas herramientas Manual de Borland C C++, guia para programadores en C / Cómo programar en C / C++ y Java / y BIBLIOGRAFÍA COMPLEMENTARIA # 05 06 07 4 AUTOR Aho, A.; Sethi, R.; Ullman, J Pappas, Chris Hekmatpour, Sharam Deitel, Harvey M AUTOR Beck, L. Trembaly, J., Sorenson, P.G. Holub, A.I TITULO Software de sistemas: Introducción a la programación de sistemas. Ed. Addison-Wesley Iberoamericana, USA, 1988 The theory and practice of compiler writing Compiler Design in C. Prentice Hall, 1990