Guía Docente 2023-24 ANÁLISIS LÉXICO Y SINTÁCTICO |
DATOS BÁSICOS DE LA GUÍA DOCENTE:
Materia: | ANÁLISIS LÉXICO Y SINTÁCTICO | ||
Identificador: | 30535 | ||
Titulación: | GRADUADO EN INGENIERÍA INFORMÁTICA (SEMIPRESENCIAL). 2008 (BOE 15/12/2008) | ||
Módulo: | TEORÍA DE LA COMPUTACIÓN | ||
Tipo: | OBLIGATORIA | ||
Curso: | 2 | Periodo lectivo: | Segundo Cuatrimestre |
Créditos: | 3 | Horas totales: | 75 |
Actividades Presenciales: | 34 | Trabajo Autónomo: | 41 |
Idioma Principal: | Castellano | Idioma Secundario: | Inglés |
Profesor: | Correo electrónico: |
PRESENTACIÓN:
El objetivo del curso es el aprendizaje las soluciones a problemas encontrados en el diseño de intérpretes de lenguajes. Desde una introducción general al estudio de compiladores e intérpretes, un estudio más detallados se enfoca al análisis del proceso de un sistema de compilación: las fases de escaneo y "pareseado" 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 gramaticales 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.
También se profundiza en el uso de estas tecnologías para llevar a cabo la conversión documentos en formatos estándares en informática, como XML.
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 |
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:
Lenguajes Formales
PROGRAMACIÓN DE LA MATERIA:
Contenidos de la materia:
1 - Introducción |
1.1 - Compiladores, intérpretes, analizados y traductores |
1.2 - Fases del compilador |
2 - Análisis léxico |
2.1 - Introducción a scanners |
2.2 - Expresiones regulares, DFA y NFA |
2.3 - Generadores de scanners |
3 - Análisis sintáctico |
3.1 - Introducción |
3.2 - Gramáticas libres de contexto y lenguajes |
3.3 - BNF |
3.4 - Análisis descendente y analizados LL |
3.5 - Análisis ascendente y analizados LR |
3.5 - Análisis ascendente y analizados LR |
3.6 - Uso de gramáticas ambiguas |
4 - Java CC y proyectos |
4.1 - Introducción a Java y Eclipse |
4.2 - Gramática de JavaCC |
4.3 - Generación de scanner con JavaCC |
4.4 - Generación de analizador Sintáctico con JavaCC |
4.5 - Sintaxis de línea de comandos |
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:
* Clases magistrales de transmisión de conocimiento por el profesor con participación activa de los estudiantes.
* Apilcación de CLIL y metodologías basadas en el aprendizaje práctico e interactivo.
* Sesiones prácticas de resolución de ejercicios y trabajo colaborativo entre estudiantes.
* Sesiones de tutoría para asegurar el avance correcto de la práctica final.
* Trabajo Autónomo: Los estudiantes deberán estudiar el material presentado, realizar los ejercicios propuestos entre los que se incluyen los entregables para evaluar y, por último y más importante, realizar la práctica final en la que se apicará todo el conocimiento y competencias adquiridos durante el curso.
Volumen de trabajo del alumno:
Modalidad organizativa | Métodos de enseñanza | Horas estimadas |
Actividades Presenciales | ||
Clase magistral | 10 | |
Casos prácticos | 5 | |
Resolución de prácticas, problemas, ejercicios etc. | 9 | |
Exposiciones de trabajos de los alumnos | 2 | |
Talleres | 4 | |
Prácticas de laboratorio | 4 | |
Trabajo Autónomo | ||
Asistencia a tutorías | 2 | |
Estudio individual | 15 | |
Preparación de trabajos individuales | 10 | |
Preparación de trabajos en equipo | 10 | |
Realización de proyectos | 4 | |
Horas totales: | 75 |
SISTEMA DE EVALUACIÓN:
Obtención de la nota final:
Pruebas escritas: | 50 | % |
Trabajos individuales: | 30 | % |
Trabajos en equipo: | 15 | % |
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:
Introduction to Compiler Construction in a Java World, Bill Campbell, Swami Iyer, Bahar Akbal-Delibas, CTC Press |
Bibliografía recomendada:
[Garr] “Lógica Simbólica” M. Garrido Ed. Tecnos[Alf] “Teoría de Autómatas y lenguajes formales” M. Alfonseca y otros[Grune] “Modern Compiler design” Grune y otrosIntroduction to Compiler Construction in a Java World, Edition 2013, by Bill Campbell, Swami Iyer, Bahar Akbal-Delibas |
Páginas web recomendadas:
Javacc | https://java.net/projects/javacc |
* Guía Docente sujeta a modificaciones