Procesadores de Lenguaje (2012)
Topic outline
-
Profesores
Domingo Gómez Pérez
Cristina TirnaucaDepartamento de Matemáticas, Estadística y Computación
Los procesadores de lenguajes o compiladores son programas que transforman programas escritos en un lenguaje a otro. Para ello, es necesario conocer "cómo se ha generado" la palabra.
Las herramientas informáticas que se utilizarán serán Bison y Flex (Fast LEXical Analyzer) con el objetivo de generar un compilador rudimentario.
Palabras Clave de la Asignatura
Interpretación de Funciones, Sintaxis Concreta, Sintaxis Abstracta, Análisis Sintáctico, Análisis Semántico, Lenguajes de Programación, Programación Orientada a Objetos, Análisis Léxico, Interpretador.
-
Datos identificativos de la Asignatura
-
Asignatura: Procesadores de Lenguaje
-
Código: 5415
-
Departamento / Área: Departamento de Matemáticas, Estadística y Computación
-
Título: Grado en Ingeniería Informática
-
Centro: Facultad de Ciencias
-
Créditos ECTS: 6
-
Idioma de impartición: Español
-
Profesores responsables: Domingo Gómez Pérez y Cristina Tirnauca
Programa de la asignatura
Semana 1
-
Presentación.
-
Repaso TALF.
Semana 2
-
Lenguaje natural: introducción.
-
Lenguaje natural: algoritmo de Earley.
Semana 3
-
Analizadores sintácticos descendentes LL (1).
-
Analizadores sintácticos descendentes recursivos.
Semana 4
-
Analizadores sintácticos ascendentes.
-
Prefijos viables.
Semana 5
-
Analizador LR (0).
Semana 6
-
Analizador SLR y LR canónico.
Semana 7
-
Analizadores LALR.
Semana 8
-
Generación de código intermedio.
Semana 9
-
Ejemplos de código de 3 direcciones.
Semana 10
-
Bootstrapping de 3 direcciones y Diagramas en T.
-
-
Básica
-
A.V. Aho, M.S. Lam, R. Sethi & J.D. Ullman (2007): «Compilers. Principles, techniques and tools». 2ª Ed. Addison-Wesley. (O la traducción al castellano de la edición de 1985).
-
A.W. Appel & J. Palsberg (2002): «Modern compiler implementation in Java». 2ª Ed. Cambridge University Press.
-
A.W. Appel: «Modern compiler implementation in C». Cambridge University Press.
-
J.R. Levine, T. Mason & D. Brown (1992): «Lex & Yacc». O'Reilly.
Complementaria
-
D. Grune, H. Bal, C. Jacobs & K. Langendoen (2000): «Modern compiler design». John Wiley & Sons.
-
Torben Ægidius Mogensen: «Basics of compiler design». Edición electrónica.
-
R. Wilhelm & D. Maurer (1995): «Compiler design». Addison-Wesley.
-
A.W. Appel: «Modern compiler implementation in ML». Cambridge University Press.
-
C.A. Jones & F.L. Drake (2001:) «Python and XML». O’Reilly.
-
-
Semana 1
Semana 2
Semana 3
-
MC-F-005. Analizadores sintácticos descendentes LL(1).
-
MC-F-006. Analizadores sintácticos descendentes recursivos.
Semana 4
Semana 5
-
MC-F-009. Analizador LR(0).
Semana 6
-
MC-F-010. Analizador SLR y LR canónico.
Semana 7
-
MC-F-011. Analizadores LALR.
Semana 8
-
MC-F-012. Generación de código intermedio.
Semana 9
-
MC-F-013. Ejemplos de código de 3 direcciones.
Semana 10
-
-
-
EP-F-001. Práctica 1.
- EP-F-002. Práctica 1 (solución).
-
EP-F-003. Práctica 2.
- EP-F-004. Práctica 2 (solución).
-
EP-F-005. Práctica 3.
- EP-F-006. Práctica 3 (solución).
-
EP-F-007. Práctica 4.
- EP-F-008. Práctica 4 (solución).
-
EP-F-009. Práctica 5.
- EP-F-010. Práctica 5 (solución).
-
EP-F-011. Práctica 6.
- EP-F-012. Práctica 6 (solución).
-
EP-F-013. Práctica 7.
- EP-F-014. Práctica 7 (solución).
-
-
Ejemplos de exámenes
Métodos de evaluación
Descripción de la Evaluación Continua: actividades que debe desarrollar el alumno/a y su valoración
-
La Nota Final es la suma de dos calificaciones: la Nota de Comprensión Básica, que contribuye entre 0 y 6 puntos, y la Nota de Comprensión Profunda, que contribuye entre 0 y 4 puntos.
-
A su vez, la Nota de Comprensión Básica es la suma de dos notas: la obtenida a lo largo del desarrollo de la asignatura a través de la Evaluación Continua, que contribuye entre 0 y 6 puntos, y la nota de la parte básica del Examen Final, que contribuye asimismo entre 0 y 6 puntos: estas dos notas se suman y, en caso de superar el 6, el resultado se trunca a 6.
-
La Nota de Comprensión Profunda se obtiene en la parte avanzada del Examen Final.
-
La Evaluación Continua se desarrolla como sigue: con una periodicidad a determinar (posiblemente quincenal), se habrán de entregar y defender desarrollos de aplicaciones de los conceptos tratados, que podrán tomar la forma de resolución de problemas o de implementación mediante el uso de las herramientas adecuadas; asimismo, antes de la fecha de entrega que se acuerde a final de curso, se habrá de completar un Proyecto de Implementación relacionado con los compiladores.
-
Cada una de estas actividades recibirá una nota que se irá acumulando a las anteriores, permitiendo alcanzar a final de curso un máximo de 6 puntos sobre 10.
Descripción del Examen Final (duración, se pueden llevar apuntes o no, tiene partes diferenciadas o no, se promedian teoría y problemas o no, etc.)
-
La duración no superará las tres horas, sólo constará de problemas, y se podrá llevar apuntes. Estará estructurado en dos partes: la parte básica contribuye a la Nota de Comprensión Básica, y la parte avanzada proporciona la Nota de Comprensión Profunda.
-
La parte básica permitirá obtener hasta 6 puntos, que se sumarán a los obtenidos en la evaluación continuada; la suma obtenida se truncará a 6 puntos. De este modo, cada alumno/a puede obtener mediante evaluación continuada la parte de la calificación de Comprensión Básica que más convenga a su propia situación, entre dos extremos: quien haya superado a la perfección la evaluación continuada se presenta al Examen Final sabiendo que tiene la asignatura aprobada y a fin de subir nota, y quien no haya podido esforzarse suficientemente a lo largo del curso tiene aún la opción de alcanzar los 6 puntos de esta parte en el Examen Final.
-
La parte avanzada es la única oportunidad de obtener notas superiores al 6, constituye la nota de Comprensión Profunda, y su calificación se suma a la nota de Comprensión Básica, proporcionando así la nota final.
-
-
-
Domingo Gómez Pérez
Departamento de Matemáticas, Estadística y Computación
UNIVERSIDAD DE CANTABRIA
Cristina Tirnauca
Departamento de Matemáticas, Estadística y Computación
UNIVERSIDAD DE CANTABRIA