Código: 240702 | Asignatura: PROCESADORES DEL LENGUAJE | ||||
Créditos: 6 | Tipo: Obligatoria | Curso: 4 | Periodo: 1º S | ||
Departamento: Estadística, Informática y Matemáticas | |||||
Profesorado: | |||||
FARIÑA FIGUEREDO, FEDERICO (Resp) [Tutorías ] |
Compiladores. Análisis Léxico. Análisis Sintáctico. Análisis semántico. Generación de código
Las competencias genéricas que un estudiante debe adquirir en esta asignatura son:
G1- Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
G2- Capacidad para dirigir las actividades objeto de los proyectos en el ámbito de la informática
G4- Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas. servicios y aplicaciones informáticas.
G6- Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
G9- Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
G10- Conocimientos para la realización de mediciones, cálculos, valoraciones, tasaciones, peritaciones, estudios, informes, planificación de tareas y otros trabajos análogos de informática
T1- Capacidad de análisis y síntesis.
T3- Comunicación oral y escrita.
T4- Resolución de problemas.
T5- Toma de decisiones.
T6- Trabajo en equipo.
T8- Aprendizaje autónomo.
T9- Creatividad.
Un alumno que supere esta asignatura será capaz de:
Metodología - Actividad
|
Horas Presenciales
|
Horas no presenciales
|
A-1 Clases magistrales
|
30
|
|
A-2 Sesiones prácticas en grupos reducidos
|
15
|
|
A-3 Aprendizaje basado en problemas y/o casos en grupos reducidos |
7,5
|
|
A-4 Preparación de presentaciones de trabajos, proyectos, etc. |
|
7,5 |
A-5 Programación/experimentación u otros trabajos en ordenador/laboratorio |
|
22,5
|
A-6 Estudio autónomo
|
|
30
|
A-7 Actividades de evaluación
|
4,5
|
|
A-8 Tutorías en grupos muy reducidos
|
3
|
|
A-9 Elaboración de trabajos y/o proyectos y escritura de memorias |
|
15
|
A-10 Resolución de problemas, ejercicios y otras actividades de aplicación |
15
|
|
Total
|
60
|
90
|
Resultado de aprendizaje | Sistema de evaluación | Peso (%) | Carácter recuperable |
R1, R2, R3, R4, R5, R6, R7, R8 | Entrega de prácticas en tiempo y forma | 10% | No |
R1, R2, R4, R6, R8 | Registro del profesor | 15% | No |
R3, R5, R7 | Trabajo en pareja en el que se aplican los conocimientos adquiridos para construir un compilador Nota mínima para que pondere en la calificación: 4,5 sobre 10 | 25% | Recuperable mediante una prueba de laboratorio en la que el alumno corregirá los defectos que el profesor le señale |
R1, R2, R4 | Prueba escrita que recoja los conceptos adquiridos Nota mínima para que pondere en la calificación: 4,5 sobre 10 | 25% | Recuperable mediante prueba escrita |
R4, R6, R8 | Prueba escrita que recoja los conceptos adquiridos Nota mínima para que pondere en la calificación: 4,5 sobre 10 | 25% | Recuperable mediante prueba escrita |
Programa de teoría: Las clases de teoría se organizan en 15 sesiones de 2 horas de duración con los siguientes contenidos
Tema 1. Introduccion a la compilación: 1.1 ¿Que es un compilador? 1.2 En el principio. 1.3. Estructura de un compilador. !.4. Construcción de compiladores.
Tema 2. Autómatas y Lenguajes: 2.1 Conceptos fundamentales. 2.2 Descripción informal de autómatas finitos. 2.3 Autómatas finitos deterministas. 2.4 Automatas finitos no deterministas. 2.5 Equivalencia entre AFNs y AFDs. 2.6 Equivalencia y minimización de autómatas.
Tema 3. Especificación de lenguajes regulares: 3.1 Expresiones regulares. 3.2 Obtención de un AFD que reconoce una expresión regular 3.3 Gramáticas regulares. 3.4 Jerarquia de Chömsky.
Tema 4. Análisis lexicográfico: 4.1 Funciones del analizador léxico. 4.2 Componentes léxicos 4.3 Especificación de componentes léxicos. 4.4 Reconocimiento de componentes léxicos.
Tema 5. Especificación sintáctica de un lenguaje independiente del contexto: 5.1 Gramáticas independientes del contexto. 5.2 Derivaciones. 5.3 Árboles de derivación. 5.4 Ambigüedad.
Tema 6. Analisis sintáctico: 6.1 Parsers. 6.2 Parsers Top-Down y Bottom-Up 6.3 Análisis recursivo descendente y el parser LL. 6.4 Gestión de errores en el parser LL. 6.5 La familia de parsers LR(k). 6.6 La familia de parsers LALR(k). 6.7 Errores en los parsers LALR(k)
Tema 7. Traducción dirigida por la sintaxis: 7.1 Rutinas semánticas. 7.2 Traducciones7.3 Representación intermedia del código. 7.4 Algunos ejemplos de gfeneración de código intermedio
Tema 8. La tabla de símbolos: 8.1 Contenido de la tabla de símbolos. 8.2 Posibles estructuras de datos8.3 Representación del ámbito de validez
Tema 9. Otras cuestiones a considerar: 9.1 Ambientes de ejecución. 9.2 Optimización de código
Programa de prácticas: Las prácticas se organizan en sesiones de 2 horas de duración. Durante estas sesiones el alumno irá construyendo partes de un compilador. El alumno irá tomando decisiones que afectarán a las características de su compilador. Al final de cada práctica el alumno entregará un pequeño informe que permitirá al docente ir evaluando su progresión:
1. La utilidad flex
2. Uso de flex para construir un scanner
3. La utilidad bison
4. Construcción de un analizador sintáctico con bison
5. Creación de una tabla de símbolos
6. Análisis semántico y rutinas semánticas
Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.
Bibliografía básica
- A. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman: Compiladores: Principios, técnicas y Herramientas; Addison-Wesley Iberoaméricana, 2008.
Bibliografía complementaria
- D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen; Diseño de Compiladores Modernos; McGraw-Hill, 2007.
- K. C. Louden; Construcción de compiladores: principios y prácyica; Thomson, 2004.
- A. W. Appel, J. Palsberg; Modern Compiler Implemrntation in Java; Cambridge University Press, 2002.
- A. Garrido, J. M. Iñesta, F. Moreno, J. A. Pérez; Diseño de compiladores; Servicio de publicaciones de la Universidad de Alicante, 2002.
- A. V. Aho, R. Sethi, J. D. Ullman; Compiladores: Principios, técnicas y Herramientas; Addison-Wesley Iberoaméricana, 1990.
- A. V. Aho, J. D. Ullman; Principles of compiler design; Addison-Wesley, 1977
Bibliografía para la parte práctica
- GNU; Bison 1,35; GNU, 2002
- V. Paxson; Flex version 2.5: A fast scanner generator; GNU, 1995.
- J. P. Bennett; Introduction to compiling techiniques: A first course using ANSI C, LEX & YACC; McGraw-Hill, 1990.
- J. R. Levine; T. Manson; D. Brown; Lex & Yacc; O'Reilly & Associates Inc. 1992.
Otros recursos
- M. E. Lesk, E. Schmidt; Lex - A lexical analyzer generator; (Documento original de los autores de Lex), http://www.cs.uaf.edu/%7Ecs631/lex-docs.txt
- S. C. Johnson; Yacc: Yet another compiler-compiler; AT&T Bell Laboratories, (Documento original de los autores de Yacc), http://www.cs.uaf.edu/%7Ecs631/yacc-docs.txt
Material Docente
El alumno puede encontrar en el aulario virtual los siguientes materiales:
- Transparencias que se usan en clase.
- Apuntes de la teoría
- Enunciados de ejercicios
- Guiones de prácticas