Nom de l`assignatura : Compiladors Objectius Capacitats prèvies

Anuncio
Enginyeria Informàtica
Guia Docent
Curs acadèmic 2007-08
Nom de l’assignatura : Compiladors
Codi
21289
Tipus
• Optativa
• Semestral
Curs/semestre
Crèdits ECTS
3er curs / 2n semestre
5
Professors
Nom
Dpt/Unitat
Despatx
Direcció e-mail
DCC
S/247
Javier arroba cvc.uab.es
F.J. Sánchez
Telèfon
Objectius
Conocimientos:
•
Análisis lexicográfico, sintáctico y semántico.
•
Organización de memoria de los programas durante su ejecución.
•
Generación de código.
•
Gestión de memoria.
Habilidades y competencias:
•
Un mayor conocimiento sobre el funcionamiento de los compiladores.
•
Aprovechar mejor las capacidades de los compiladores.
•
Escribir programas más óptimos y legibles.
•
Entender los errores de compilación.
•
Depuración más rápida de programas.
•
Programación más abstracta.
Capacitats prèvies
Conocimientos sobre programación imperativa, estructuras de datos, arquitectura de ordenadores.
Enginyeria Informàtica
Guia Docent
Curs acadèmic 2007-08
Continguts
(T:teoria, S:seminaris, PS:preparació de seminaris, L:laboratorios, PP:preparació pràctiques, E:estudi, AA:altres
activitats)
T S PS L E PP AA
2
1
Compilador. Interprete. Código fuente. Código objeto. Gramáticas y lenguajes de
programación. Etapas de compilación: análisis lexicográfico, análisis sintáctico, análisis
semántico y generación de código. Tabla de símbolos. Compiladores y Recursividad.
Tema 1. Introducción y conceptos básicos
Total
3
T S PS L E PP AA Total
4 2 2
3 5 2
18
Símbolo. Scanner. Expresiones regulares. Autómatas finitos y scanners. Consideraciones
prácticas. Palabras reservadas. Final del código fuente. Análisis de múltiples caracteres hacia
delante. Recuperación de errores léxicos.
Tema 2. Análisis lexicográfico: Scanners
T S PS L E PP AA
8 3 3
6 14 3
GRAMÁTICAS. Gramáticas Libres del Contexto. Definición de gramática. Clasificación:
regulares, libres del contexto, dependientes del contexto, recursivas.
Tema 3. Gramáticas y análisis sintáctico: Parser
Total
37
NOTACIONES. Notación BNF extendida. Diagramas Sintácticos. Traducción de BNF a
diagramas sintácticos.
GRAMÁTICAS Y LENGUAJES DE PROGRAMACIÓN. Características de las Gramáticas y
Lenguajes de Programación. Árbol sintáctico. Ambigüedad gramatical. Estructura de un
lenguaje y su gramática
PARSERS. .Gramáticas y Parsers LL(1): Análisis un símbolo en adelante sin vuelta a tras.
Primeros y siguientes. Definición de gramática LL(1). Construcción de un parser LL(1):
traducción de las reglas BNF en un parser, traducción de los diagramas sintácticos en un parser
ERRORES. Recuperación de Errores.
T S PS L E PP AA Total
4 1 1
3 7 1
17
TRADUCCIÓN DIRIGIDA POR LA SINTAXIS. Rutinas semánticas, símbolos de acción,
atributos.
Tema 4. Análisis semántico
TABLA DE SÍMBOLOS. Contenido: símbolos y atributos. Técnicas básicas de búsqueda:
secuencial, árbol binario, tabla hash. Estructura de bloques de la tabla de símbolos para:
lenguajes no estructurados, lenguajes estrucados por bloques anidados, etc. Representación
de atributos recursivos (tipos). Consideraciones de orden práctico: Creación y destrucción en la
tabla de símbolos.
ANÁLISIS SEMÁNTICO DE DECLARACIONES. Tipos de datos. Variables. Funciones.
Procedimientos.
ANÁLISIS SEMÁNTICO DE EXPRESIONES E INSTRUCCIONES. Expresiones aritméticas.
Expresiones de acceso. Llamadas a funciones. Instrucciones de control de flujo.
Enginyeria Informàtica
Guia Docent
Curs acadèmic 2007-08
T S PS L E PP AA Total
Tema 5. Organización de memoria en tiempo de
ejecución
6 1 1
2 10 1
21
AMBIENTE DE EJECUCIÓN. Máquina abstracta. Organización de memoria de un programa.
ASIGNACION ESTATICA DE MEMORIA. Segmento de datos. Segmento de código. Enlazado
de ficheros objeto, librerías estáticas y dinámicas. Representación de estructuras de datos:
Arrays. Registros (estructuras y uniones). Conjuntos.
PILA DE EJECUCIÓN. Asignación de la Pila. Registro de activación. Enlaces estáticos y
dinámicos. Displays. Llamada y retorno de una función. Resultados intermedios. Códigos de
llamada a funciones y acceso a variables locales.
HEAP. Asignación Dinámica de Memoria. Liberación explicita: lista ordenada de bloques libres,
bloques etiquetados en los extremos, bloques compañeros. Liberación Implícita: contador de
referencias, marcar y barrer, recolector por copia, compactación.
T S PS L E PP AA
6 3 3
6 9 2
GENERACIÓN DE CÓDIGO. Procesamiento de declaraciones y tabla de símbolos.
Compilación de Estructuras de Control.
Tema 6. Generación de código
Total
29
GENERACIÓN DE CÓDIGO DE EXPRESIONES. Notación postfija. Pila para los resultados
intermedios. Casos: expresiones PASCAL y C.
DIRECCIONES. Procesar referencias a Estructuras de Datos. Selectores como operadores.
Cálculo de la dirección. Casos: estructuras de datos PASCAL y C.
Metodologia docent
Teoría: Clases magistrales en las que el profesor explica el temario de la asignatura basándose en
presentaciones realizadas con ordenador y la explicación de un compilador que los alumnos pueden probar
y modificar para entender su funcionamiento.
Problemas: A partir del compilador y el generador de compiladores utilizado en teoría, se propondrán
problemas que los alumnos han de solucionar. Algunos se realizarán en clase y otros serán ejercicios a
entregar. Para cada ejercicio a entregar se aportará el enunciado, una plantilla (fichero) para realizarlo y
un autotest. El alumno implementará la solución para poderla probar con el autotest. Se harán entregas
personalizadas donde se tratarán las principales dudas que hayan surgido en la realización de los
ejercicios.
Prácticas: Desarrollo de un micro compilador que supondrá la puesta en práctica de los conocimientos
adquiridos en la teoría.
Enginyeria Informàtica
Guia Docent
Curs acadèmic 2007-08
Avaluació
La evaluación se hará a partir de los ejercicios entregados y la práctica. En las entregas se harán
preguntas sobre el trabajo realizado para poder evaluar la adquisición de los conocimientos por parte del
alumno.
Avaluació continuada
SI.
Entrega de problemas y los
módulos de la práctica. En estas
entregas se hará un seguimiento
personalizado.
Examen final
Solo para los alumnos que no
hayan seguido la
evaluación continuada.
2ª convocatòria
No hay.
Bibliografia bàsica
Crafting a Compiler with C, Charles N. Fisher & Richard J. Leblanc jr., The Benjamin /
Cummings Publishing Company inc., 1991.
Modern Compiler Design. Dick Grune et al. Wiley, 2000.
The Theory and Practice of Compiler Writing, Jean-Paul Tremblay & Paul G. Sorenson,
MCGRAW-HILL, 1985.
Compiladores: Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi & Jeffrey
D. Ullman, Addison-Wesley, 1990.
Bibliografia complementària
Programming Language Concepts and Paradigms, David A. Watt, Prentice Hall, 1990.
Programming Language Processors, David A. Watt, Prentice Hall, 1993.
Programming Languages: Design and Implementation, Terrence W. Pratt, Prentice Hall
International Editions, 1984.
Compiler Construction. An Advanced Course, Edited by G. Goos and J. Hartmanis,
Springer-Verlag, 1974.
Enginyeria Informàtica
Guia Docent
Curs acadèmic 2007-08
The Design of an Optimizing Compiler, William Wulf et all., North Holland, 1980.
An Implementation Guide to Compiler Writing, Jean-Paul Tremblay & Paul G.
Sorenson, MCGRAW-HILL, 1982.
Writing Compilers & Interpreters: An Applied Approach, Ronald Mak, Wiley, 1991.
Writing Interactive Compilers and Interpreters, J. P. Brown, Wiley, 1979.
Compiler Design in C, Allen Y. Holub, Prentice Hall, 1990.
Garbage Collection, Richard Jones y Rafael Lins, Wiley 1996.
Enllaços web
http://www.cvc.uab.es/shared/teach/a21289/c21289.htm
Descargar