UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA DEPARTAMENTO DE FORMACION BASICA DEPARTAMENTO DE FORMACION PROFESIONAL Y VINCULACION UNIVERSITARIA PROGRAMA DE ASIGNATURA POR COMPETENCIAS I. DATOS DE IDENTIFICACION 1.- Unidad Académica: Facultad de Ciencias Químicas e Ingeniería 2.- Carreras (s): Ingeniero en Computación 3.- Vigencia del plan: 2003-01 4.- Nombre de la asignatura: Introducción a la compilación 6.- No. de horas Teóricas: 3 10.- Ciclo escolar: 2004-1 12.- Carácter de la asignatura: Optativa 5.- Clave: 5057 7.- Prácticas: 2 8.- Totales: 5 9.- No. Créditos: 6 11.- Etapa de formación a la que pertenece: Optativa Disciplinaria 13.- Requisitos para cursar la asignatura: Programación estructurada 14.- Tipología: Formuló: Dr. Cristobal Salas V.B. Subdirector Dr. Gmo. Rodriguez Ventura II. PROPOSITO GENERAL DEL CURSO Aplicar de manera sistemática los principios técnicos y herramientas de compilación para la especificación de lenguajes y la construcción de traductores. III. COMPETENCIAS DEL CURSO. El estudiante será competente para formalizar un lenguaje de programación, diseñar e implementar un compilador o intérprete para traducir código en un lenguaje de alto nivel a código ejecutable IV. EVIDENCIAS DE DESEMPEÑO Proyecto que involucre el diseño de un lenguaje y la construcción de un traductor aplicando las 3 primeras fases de la compilación V. DESARROLLO POR UNIDADES Unidad 1. Introducción a la compilación Entender las partes que componen un compilador y el software necesario para auxiliar el proceso de compilación CONTENIDO 1.1 Compiladores e Intérpretes 1.2 ¿Por qué Estudiar Compiladores? 1.3 Compiladores y la Productividad de la Programación 1.4 Otros Usos de la Traducción de Programas 1.5 Entorno de Sistemas 1.6 Los Compiladores son Traductores 1.7 Idea básica de un compilador 1.8 La compilación y la presencia de errores 1.9 Partes del proceso de compilación 1.10 Herramientas para manipulación de los programas fuente 1.11 Programas relacionados con un compilador 1.12 Procesamiento de un programa 1.13 Fases de un compilador 1.14 Tabla de símbolos Unidad 2. Bases Teóricas Entender, aplicar y desarrollar herramientas para su uso dentro del proceso de compilación CONTENIDO 1.1 Definiciones (Símbolo, cadena, alfabeto, lenguaje) 1.2 Operaciones aplicadas a lenguajes 1.3 Expresiones regulares 1.4 Diagramas de transiciones 1.5 Autómatas de estado finito 1.6 Autómata de estado finito determinista (AFD) 1.7 Tabla de transiciones 1.8 AFN a partir de una expresión regular 1.9 Gramáticas 1.10 Gramáticas independientes del contexto 1.11 Árbol de análisis sintáctico 1.12 La ambigüedad 1.13 Recursion por la izquierda DURACION 6 horas DURACION 10 horas Unidad 2. Análisis Léxico Aplicar las técnicas tradicionales para la construcción de un analizador léxico CONTENIDO 1.1 Función principal del AL 1.2 Razones para separar el AL del analizador sintáctico 1.3 Algunas definiciones (componente léxico, patrón y lexema) 1.4 Errores léxicos 1.5 Leyendo el programa fuente 1.6 Diseñando un AL 1.7 Implementando un AL DURACION 15 horas Unidad 2. Análisis Semántico Desarrollar una gramática libre del contexto e implementar un analizador sintáctico que acepte cadenas de esa gramática CONTENIDO DURACION 1.1 Objetivo del AS 15 horas 1.2 Tipos de AS 1.3 Manejador de errores en un AS 1.4 Estrategias para la recuperacion de errores 1.5 AS Descendente con retroceso 1.6 AS Descendente Predictivo 1.7 AS Descendente predictivo no recursivo 1.8 AS ascendente (por desplazamiento y reducción) 1.9 AS por precedencia de operadores Unidad 3. Comprobación de tipos Desarrollar un comprobador de tipos de datos básicos y estructuras de datos como parte del proceso de compilación CONTENIDO 1.1 Expresiones de tipos 1.2 Coerciones 1.3 Definiciones (polimorfismo y sobrecarga de operadores) DURACION 6 horas VI. ESTRUCTURA DE LAS PRACTICAS Descripción Material de Apoyo No. de Práctica 1 Competencia (s) Duración Competente para desarrollar un autómata de estado finito para realizar operaciones del analizador léxico y sintáctico Hacer un autómata de estado finito determinístico que realice lo siguiente: Leer una gramática Deberá leer una cadena de entrada y decir si una cadena pertenece al lenguaje Procure usar una tabla de transiciones Notas del curso 4 horas 2 Diseñar, desarrollar y administrar una tabla de símbolos centralizada y distribuida Notas de curso 3 horas 3 Diseñar un analizador léxico 1) Notas de curso 2) Compiladores – principios, tecnicas y herramientas. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley Iberoamericana ISBN: 0201-62903-8 6 horas 4 Desarrollar un analizador sintáctico en linea Realizar una tabla de símbolos Añadir datos a la tabla Consultar datos Usar tablas hash para búsqueda de datos Agregar al menos los siguientes campos ID, nombre de variable, posición inicial, tipo de dato, contexto de ejecución Realizar un analizador léxico que pueda reconocer los siguientes componentes léxicos Enteros positivos y negativos Flotantes positivos, negativos y con exponente Variables Palabras reservadas int, float, double, char Realizar un parser 1) Notas del curso 6 horas 5 Diseñar e implementar un traductor en linea (analizador sintáctico) para 3 comandos del sistema operativo Linux por ejemplo: grep, ls, gzip, find 2) Compiladores – principios, tecnicas y herramientas. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley Iberoamericana ISBN: 0201-62903-8 Traducir los 3 comandos realizados en la etapa anterior a comandos de MS-DOS, con la condición que ambos comandos (bajo linux y bajo MS-DOS) muestren el mismo comportamiento 1) Notas del curso 2) Compiladores – principios, tecnicas y herramientas. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley Iberoamericana ISBN: 0201-62903-8 8 horas VII. METODOLOGIA DE TRABAJO. El estudiante recibe durante las horas clase la teoría y ejemplos de aplicación del conocimiento. Las prácticas son realizadas con asesoría dentro de las horas de clase y fuera de ellas. VIII. CRITERIOS DE EVALUACIÓN Se considera para su evaluación: puntualidad en la entrega del trabajo, documentación presentada, modularidad del compilador, eficiencia del compilador, claridad en el manejo de errores IX. BIBLIOGRAFIA Básica Complementaria CONSTRUCCION DE COMPILADORES Compiladores – principios, tecnicas y herramientas. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley Iberoamericana ISBN 970-686-299-4 Ed. Thompson Learning ISBN: 0-201-62903-8 Autor: Kenneth C. Louden Wim Bohm. Introduction to Compilers. Colorado State University. 2003. http://www.cs.colostate.edu/~cs453/