Profesorado
José Antonio Jiménez Millán (coordinador)
Situación
Prerrequisitos
Conocimientos de programación en C y C++, estructuras de datos, y sistema
operativo Linux.
Contexto dentro de la titulación
Se trata de una materia que es, clásicamente, considerada como bagaje cultural
básico de cualquier informático.
Esta asignatura es continuada en 4º y 5º curso en las asignaturas de
Procesadores de Lenguajes I y II.
A su vez, pone en práctica conocimientos de otras materias de la carrera como:
programación, sistemas operativos o estructuras de datos.
Recomendaciones
Debido al escaso número de créditos, la asignatura se ha planteado como una
introducción al tema y con un enfoque eminentemente práctico.
Se recomienda el trabajo continuado desde el principio del curso, la realización
de prácticas y ejercicios sobre ordenador.
Competencias
Competencias transversales/genéricas
Capacidad de relacionar conocimientos teóricos con la práctica.
Resolución autónoma de problemas.
Capacidad de organización y planificación.
Competencias específicas
Cognitivas(Saber):
Cognitivas (Saber):
Conocimientos de informática relativos al ámbito de estudio.
Capacidad de organización y planificación.
Manejo de manuales y documentación en inglés.
Saber gestionar la información.
Procedimentales/Instrumentales(Saber hacer):
Describir por escrito preguntas teóricas de la materia.
Resolver ejercicios y problemas de la materia.
Buscar información de la asignatura.
Programar, compilar y depurar programas que implementen ejercicios
de la materia en cuestión.
Actitudinales:
Compromiso ético.
Trabajo continuado.
Toma de decisiones.
Objetivos
Introducir las técnicas para que los alumnos sean capaces de describir, analizar
y traducir lenguajes formales. Incluyendo la construcción de pequeños
compiladores, intérpretes y procesadores de varios lenguajes formales sencillos.
Programa
CONTENIDO TEÓRICO (30 horas)
Tema 1. Introducción. (4 horas)
Compiladores. Definición y tipos de compiladores.
Contexto de un compilador.
Fases de un compilador y agrupación de las fases.
Cambios en la representación interna.
Herramientas para construcción de compiladores.
Tema 2. Análisis lexicográfico (Scanning) (6 horas)
El papel del analizador lexicográfico.
Descripción y reconocimiento de los tokens.
Tema 3. Análisis sintáctico (Parsing) (14 horas)
Papel de un analizador sintáctico.
Gramáticas libres de contexto. y jerarquía de Chomsky.
Análisis descendente (Top-Down) versus ascendente (Bottom-Up).
Tema 4. Introducción a la Traducción Dirigida por Sintaxis. (6 horas)
Gramáticas atribuidas y esquemas de traducción.
Evaluación ascendente con atributos sintetizados.
Evaluación "Primero en profundidad" con atributos por la izquierda.
Evaluación ascendente con atributos heredados.
CONTENIDO PRÁCTICO (45 horas)
Tema 1. Análisis léxicográfico. (12 horas)
Construcción de un analizador léxico a mano.
Programa LEX (FLEX) para construcción de un analizador.
Programas de ejemplo utilizando FLEX.
Tema2. Análisis sintáctico. (15 horas)
Implementación de un analizador descendente.
Transformación de una gramática para su análisis descendente.
Analizadores ascendentes LR, y SLR.
El programa YACC (BISON) generador de analizadores.
Programas de ejemplo utilizando BISON.
Gramáticas ambiguas.
Tema 3. Traducción dirigida por sintaxis (18 horas)
Implementación de un traductor descendente.
Traducción ascendente con YACC (BISON
Distribución de horas de trabajo del alumno/a
Nº de Horas (indicar total): 150
- Clases Teóricas: 26
- Clases Prácticas: 39
- Exposiciones y Seminarios:
- Tutorías Especializadas (presenciales o virtuales):
- Colectivas: 4
- Individules:
- Realización de Actividades Académicas Dirigidas:
- Con presencia del profesorado: 6
- Sin presencia del profesorado:
- Otro Trabajo Personal Autónomo:
- Realización de Exámenes:
- Examen escrito: 4 horas
- Exámenes orales (control del Trabajo Personal):
Criterios y Sistemas de Evaluación
Al dejar de impartirse la asignatura en el curso 2012/2013 dispone de 4
convocatorias de examen que puede distribuir durante los cursos 2012/2013 y
2013/2014.
Se realizará un examen final que constará de una parte teórica y de otra
práctica a realizar sobre el ordenador.
El examen teórico consistirá en preguntas y ejercicios escritos. El alumno
debe contestar a todas las preguntas demostrando dominar, suficientemente,
todos los objetivos básicos de la asignatura.
El examen práctico requerirá el diseño, escritura, depuración y ejecución de
programas sobre un ordenador.
Para superar la asignatura habrá que tener aprobados tanto el examen teórico como
el práctico, y para poder realizar el examen de prácticas, el alumno debe tener
aprobada la parte de teoría.
Recursos Bibliográficos
José Antonio Jiménez Millán. "Compiladores y Procesadores de Lenguajes. 2ª
ed.".
Edita: Servicio de Publñicaciones de la Universidad de Cádiz, 2010.
Aho, Alfred V. & Lam, Monica & Sethi, Ravi & Ullman, Jeffrey D. "Compiladores:
Principios, Técnicas y Herramientas 2ª edición". Edita: Addison-Wesley, 2008.
Manuales de Bison y Flex (dentro de la documentación del sistema operativo
Linux).
John E. Hopcroft & Rajeev Motwani & Jeffrey D. Ullman. Teoría de
autómatas,lenguajes y computación. 3ED. Ed. Addison-Wesley. 2008.
Bjarne Stroustrup. "El Lenguaje de Programación C++". Addison Wesley.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.