Compiladores - Facultad de Ciencias Químicas e Ingeniería

Anuncio
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/
Descargar