Guía Docente 2019-20
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