Guía Docente 2018-19
ANÁLISIS LÉXICO Y SINTÁCTICO

DATOS BÁSICOS DE LA GUÍA DOCENTE:

Materia: ANÁLISIS LÉXICO Y SINTÁCTICO
Identificador: 33422
Titulación: DOBLE GRADO EN INGENIERÍA INFORMÁTICA Y BIOINFORMÁTICA
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: SANTOLARIA LORENZO, ALFONSO (T) Correo electrónico: asantolaria@usj.es

PRESENTACIÓN:

El objetivo del curso es el aprendizaje de 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 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 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.

COMPETENCIAS PROFESIONALES A DESARROLLAR EN LA MATERIA:

Competencias Generales de la titulación G01 Capacidad de liderazgo para poder influir sobre un colectivo con el fin de que este alcance unos determinados objetivos de forma conjunta y eficiente
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
G06 Capacidad para analizar y resolver los problemas o imprevistos complejos que puedan surgir durante la actividad profesional dentro de cualquier tipo de organización socio-económica
G07 Capacidad para trabajar con flexibilidad y versatilidad para adaptarse a las necesidades y exigencias de su entorno profesional
G08 Habilidad para comunicarse eficazmente sobre distintos temas en una variedad de contextos profesionales y con los diferentes medios disponibles
G09 Capacidad para tomar decisiones de manera imparcial y desde un punto de vista racional
G10 Capacidad crítica y analítica en la evaluación de información, datos y líneas de actuación
G11 Habilidad para desenvolverse en un entorno multicultural e internacional, relacionándose con personas de distintas nacionalidades, idiomas y culturas
G12 Capacidad para desarrollar las actividades profesionales con integridad respetando normas sociales, organizacionales y éticas
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 E02 Capacidad para aplicar los principios intrínsecos de la ingeniería basados en las matemáticas y en una combinación de disciplinas científicas
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
E14 Capacidad para definir, dirigir e impartir programas de formación continua del personal técnico
E27 Capacidad para elaborar y mantener documentación descriptiva de la génesis, producción y operatividad de los sistemas informáticos

REQUISITOS PREVIOS:

Los alumnos deben haber cursado la materia de Lenguajes Formales, impartida en el cuatrimestre III de la titulación de Grado en Ingeniería Informática.

PROGRAMACIÓN DE LA MATERIA:

Contenidos de la materia:

1 - Introducción
    1.1 - Compiladores, intérpretes, analizadores y traductores
    1.2 - Fases del compilador
2 - Análisis léxico
    2.1 - Introducción a scanners
    2.2 - Expresiones regulares, AFD y AFN
    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 - Notación BNF
    3.4 - Análisis descendente y analizadores LL
    3.5 - Análisis ascendente y analizadores 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 Java CC
    4.3 - Generación de scanner con Java CC
    4.4 - Generación de analizador sintáctico con Java CC
    4.5 - Sintaxis de la 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:

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 4
Resolución de prácticas, problemas, ejercicios etc. 8
Talleres 3
Prácticas de laboratorio 2
Actividades de evaluación 4
Trabajo Autónomo
Asistencia a tutorías 2
Estudio individual 16
Preparación de trabajos individuales 12
Preparación de trabajos en equipo 9
Otras actividades de trabajo autónomo 1
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:

Campbell, B., Iyer, S., Akbal-Delibas, B. Introduction to Compiler Construction in a Java World. Chapman & Hall/ CRC, 2012

Bibliografía recomendada:

Garrido, Manuel. Lógica simbólica. Tecnos, 2005.
Alfonseca, E., Alfonseca, M., Moriyón, R. Teoría de autómatas y lenguajes formales. S.A. MCGRAW-HILL / INTERAMERICANA DE ESPAÑA, 2007
Grune, D., van Reeuwijk, K., Bal, H.E., Jacobs, C.J.H., Langendoen, K. Modern Compiler Design. Springer-Verlag New York, 2012

Páginas web recomendadas:

Java CC https://java.net/projects/javacc