![]() | Guía Docente 2024-25 ANÁLISIS LÉXICO Y SINTÁCTICO |
DATOS BÁSICOS DE LA GUÍA DOCENTE:
Materia: | ANÁLISIS LÉXICO Y SINTÁCTICO | ||
Identificador: | 30058 | ||
Titulación: | GRADUADO EN INGENIERÍA INFORMÁTICA. PLAN 2008 (BOE 15/12/2008) | ||
Módulo: | TEORIA DE LA COMPUTACION | ||
Tipo: | OBLIGATORIA | ||
Curso: | 2 | Periodo lectivo: | Segundo Cuatrimestre |
Créditos: | 3 | Horas totales: | 75 |
Actividades Presenciales: | 35 | Trabajo Autónomo: | 40 |
Idioma Principal: | Castellano | Idioma Secundario: | Inglés |
Profesor: | Correo electrónico: |
PRESENTACIÓN:
El objetivo del curso es el aprendizaje de soluciones a problemas encontrados en el diseño de intérpretes y compiladores de lenguajes. Desde una introducción general al estudio de compiladores e intérpretes, un estudio más detallado se enfoca al análisis del proceso de un sistema de compilación: las fases de escaneo y "parseado" del programa fuente pasando por la codificación de una representación intermedia. Las prácticas se orientan con énfasis especial en la obtención de ejemplos de analizadores léxicos y sintácticos a través de distintas técnicas y contextos. Durante las prácticas el estudiante hace uso de las competencias en programación, usando lenguaje Java y C.
COMPETENCIAS PROFESIONALES A DESARROLLAR EN LA MATERIA:
Competencias Generales de la titulación | G02 | Capacidad innovadora para proponer y encontrar formas nuevas y eficaces de realizar cualquier tarea y/ o función dentro de su entorno profesional con una elevada motivación por la calidad |
G03 | Capacidad para trabajar dentro de equipos multidisciplinares para conseguir metas comunes, anteponiendo los intereses colectivos a los personales | |
G04 | Capacidad para trabajar siempre con responsabilidad y compromiso, creando un alto sentido del deber y el cumplimiento de las obligaciones | |
G05 | Capacidad para adaptarse a diferentes entornos con una actitud positiva y optimista y orientar su conducta a la consecución de metas | |
G07 | Capacidad para trabajar con flexibilidad y versatilidad para adaptarse a las necesidades y exigencias de su entorno profesional | |
G13 | Capacidad para utilizar estrategias de aprendizaje individuales orientadas a la mejora continúa en el ejercicio profesional y para emprender estudios posteriores de forma autónoma | |
G14 | Capacidad de abstracción para manejar diferentes modelos complejos de conocimiento y aplicarlos al planteamiento y resolución de problemas | |
G15 | Capacidad para estructurar la realidad relacionando objetos, situaciones y conceptos a través del razonamiento lógico matemático | |
Competencias Específicas de la titulación | E03 | Capacidad para reconocer los principios teóricos y aplicar satisfactoriamente los métodos prácticos apropiados para el análisis y la resolución de problemas de ingeniería |
E09 | Capacidad para mantener las competencias profesionales mediante el aprendizaje autónomo y la mejora continua | |
E11 | Capacidad para mantenerse al día en el mundo tecnológico y empresarial en el ámbito de las tecnologías de la informática y comunicaciones | |
E12 | Capacidad para gestionar la complejidad a través de la abstracción, el modelado, las “best practices”, los patrones, los estándares y el uso de herramientas apropiadas | |
E27 | Capacidad para elaborar y mantener documentación descriptiva de la génesis, producción y operatividad de los sistemas informáticos | |
Resultados de Aprendizaje | R01 | Utilizar correctamente términos técnicos relacionados con la teoría y los procesos de compilación |
R02 | Conocer y usar las herramientas más utilizadas para la construcción automática de compiladores | |
R03 | Entender, crear y modificar analizadores léxicos y semánticos con la herramienta | |
R04 | Conocer los principales ficheros de configuración de JavaCC | |
R05 | Definir gramáticas que permitan tratar un lenguaje dado y seguir los procedimientos necesarios para implementar un compilador que reconozca dicha gramática | |
R06 | Reconocer y diferenciar los aspectos claves de los distintos tipos de analizadores léxicos y sintácticos analizados en la materia |
REQUISITOS PREVIOS:
Es recomendable que los alumnos hayan cursado la materia de Lenguajes Formales.
PROGRAMACIÓN DE LA MATERIA:
Contenidos de la materia:
1 - Introducción. |
1.1 - Conceptos básicos: Compiladores, intérpretes, analizadores y traductores. |
1.2 - Fases del compilador. |
2 - Análisis léxico. |
2.1 - Análisis léxico. Introducción a scanners. Expresiones regulares. |
2.2 - Análisis léxico. Autómatas. Implementación. |
3 - Análisis sintáctico. |
3.1 - Introducción al Análisis Sintáctico. |
3.2 - Gramáticas libres de contexto: Derivaciones y Árboles de Parseo |
3.3 - Parsers LL y LR: Introducción. |
3.4 - Parsers LL: Condición, tablas de parseo y algoritmos (LL1). |
3.5 - Parsers LR: Análisis ascendente. |
4 - Java CC y proyectos. |
4.1 - Nociones básicas de JavaCC: lexer. |
4.2 - Especificación de gramáticas en JavaCC: reglas sintácticas (parser). |
La planificación de la asignatura podrá verse modificada por motivos imprevistos (rendimiento del grupo, disponibilidad de recursos, modificaciones en el calendario académico, etc.) y por tanto no deberá considerarse como definitiva y cerrada.
METODOLOGÍAS Y ACTIVIDADES DE ENSEÑANZA Y APRENDIZAJE:
Metodologías de enseñanza-aprendizaje a desarrollar:
- Sesiones teóricas.El profesor expondrá la parte teórica de la asignatura. Las sesiones teóricas serán acompañadas por ejercicios para aplicar los conceptos teóricos. Se valorará la participación, debate, preguntas e inquietudes mostradas por los alumnos relacionadas con la asignatura.
- Sesiones prácticas. Aprendizaje basado en resolución de ejercicios y problemas. Los contenidos teóricos se apoyan en la resolución de problemas que serán propuestos por el profesor y resueltos por los alumnos. Algunos de estos problemas serán solucionados por los alumnos como parte de su trabajo autónomo en horario fuera de las clases lectivas. Otros problemas se resolverán en el tiempo dedicado a clases prácticas. La participación de los alumnos en este proceso formará parte de la evaluación, esto incluye la resolución de problemas de manera voluntaria y la participación cuando otro compañero está desarrollando esta tarea.
- Sesiones de tutoría.Las sesiones de tutoría se anunciarán a través de la PDU. Se fomentará en estas sesiones el uso de tecnologías no presenciales.
- Trabajo autónomo.Los alumnos deberán estudiar el material presentado, tratar de resolver los ejercicios y problemas propuestos, que serán similares a los que formarán parte de los exámenes parciales y desarrollar los trabajos propuestos.
Volumen de trabajo del alumno:
Modalidad organizativa | Métodos de enseñanza | Horas estimadas |
Actividades Presenciales | ||
Clase magistral | 10 | |
Otras actividades teóricas | 4 | |
Casos prácticos | 6 | |
Resolución de prácticas, problemas, ejercicios etc. | 8 | |
Talleres | 2 | |
Prácticas de laboratorio | 1 | |
Actividades de evaluación | 4 | |
Trabajo Autónomo | ||
Asistencia a tutorías | 2 | |
Estudio individual | 18 | |
Preparación de trabajos individuales | 12 | |
Preparación de trabajos en equipo | 4 | |
Tareas de investigación y búsqueda de información | 4 | |
Horas totales: | 75 |
SISTEMA DE EVALUACIÓN:
Obtención de la nota final:
Pruebas escritas: | 50 | % |
Trabajos individuales: | 35 | % |
Trabajos en equipo: | 10 | % |
Participación: | 5 | % |
TOTAL | 100 | % |
*Las observaciones específicas sobre el sistema de evaluación serán comunicadas por escrito a los alumnos al inicio de la materia.
BIBLIOGRAFÍA Y DOCUMENTACIÓN:
Bibliografía básica:
AHO, A.V., LAM M., SETHI, R., ULLMAN, J.D. (2008). Compiladores: Principios, técnicas y herramientas. México: Prentice Hall. (ISBN 9789702611332) |
CAMPBELL, B., IYER, S., AKBAL-DELIBAS, B. (2012). Introduction to Compiler Construction in a Java World. Chapman & Hall/ CRC (ISBN 9781439860885) |
HOLUB, A. I. (1991). Compiler design in C. Prentice-Hall. (ISBN 9780131550452) |
SÁNCHEZ, G., VALVERDE J.A. (1989). Compiladores e Intérpretes. Madrid: Ed. Díaz de Santos. (ISBN 9788487189067) |
Bibliografía recomendada:
AHO, A.V., ULLMAN, J.D. (1972). The theory of parsing, translation and compiling (Vol. I y II). Prentice-Hall. (ISBN 9780139145568) |
ALFONSECA, M., SANCHO, J., MARTÍNEZ ORGA, M. (1997). Teoría de lenguajes, gramáticas y autómatas. Madrid: Universidad y Cultura, D.L. (ISBN 8460560929) |
GRUNE, D., VAN REEUWIJK, K., BAL, H.E., JACOBS, C. J. H., LANGEDOEN, K. (2012). Modern Compiler Design. Springer. (ISBN 9781461446989) |
HOPCROFT, J. E., MOTWANI, R., ULLMAN, J. D. (2002). Introducción a la teoría de autómatas, lenguajes y computación, 2ª edición. Madrid: Pearson Educación. (ISBN 9788478290567) |
Páginas web recomendadas:
Java CC | https://java.net/projects/javacc |
* Guía Docente sujeta a modificaciones