Recomendaciones previas |
Haber cursado las asignaturas de Teoría de Autómatas y Lenguajes Formales de la Ingeniería Técnica de Informática de Sistemas o del Primer Ciclo de la Ingeniería en Informática.
|
|
|
Objetivos de la asignatura |
OBJETIVOS En la asignatura se estudian los principios de diseño e implementación de los procesadores de lenguajes: programas que traducen ficheros escritos en un lenguaje de alto nivel a ficheros que contienen código máquina casi-ejecutable. Los objetivos son: - Comprender cada parte del proceso de compilación y las diferentes formas de abordarlo, según las características del problema y el tipo de solución requerida.
- Estudiar la importancia del análisis sintáctico en el proceso de compilación y reconocer y saber aplicar cada tipo de gramática con el analizador sintáctico más adecuado.
- Relacionar el análisis sintáctico con el semántico, y para ello, estudiar la extensión de las representaciones sintácticas para incorporar atributos que permiten la incorporación de información semántica.
- Relacionar las representaciones intermedias resultantes del análisis sintáctico y semántico con la gestión de memoria y todos los problemas derivados de la generación de código de un programa.
- Saber utilizar herramientas representativas para la producción de un procesador de lenguaje.
- Desarrollar una actitud crítica ante los LP y los problemas relacionados con su implementación, así como la mejor manera de aprovechar su funcionalidad.
COMPETENCIAS - Conocer la estructura y fases de un compilador
- Conocer el funcionamiento de un analizador léxico.
- Conocer alguna herramienta de generación de analizadores léxicos.
- Introducir el funcionamiento de un análisis sintáctico y terminología.
- Ser capaz de detectar las distintas alternativas de tratamiento de la semántica.
- Examinar las diferentes técnicas de tratamiento y recuperación de los errores.
- Comprender la importancia del código intermedio y las diferentes propuestas.
- Ser capaz de usar las diferentes herramientas para ayuda a construir las primeras fases de un pequeño compilador.
|
|
|
Contenidos |
TEORÍA 1. Introducción. Generalidades. Historia. Paradigmas de programación. Compiladores. 2. Aspectos formales. Definiciones. BNF. Lenguajes Formales. Gramáticas. Análisis sintáctico. 3. Análisis de léxico. Tablas de símbolos. Herramientas. 4. Análisis sintáctico. Construcción de analizadores. Herramientas. 5. Semántica y análisis de tipos. Traducción dirigida por la sintaxis. Gramáticas Atribuidas. 6. Gestión y manejo de errores de léxico, sintácticos y semánticos. 7. Generación y Optimización de código. Código intermedio. Gestión de memoria. 8. Aspectos de implementación. Enlazadores. Cargadores. PRÁCTICAS 9.Herramientas: lex, yacc, jlex, lisa, cup…
|
|
|
Metodologías |
CLASES MAGISTRALES En estas clases se presentarán los contenidos básicos de un cierto tema. Las clases comenzarán con una breve introducción de los contenidos que se pretenden transmitir en la clase, así como con un breve comentario a los conceptos vistos en clases anteriores y que sirven de enlace a los que se pretenden desarrollar. El desarrollo de la clase se llevará a cabo con medios audiovisuales, textos, transparencias… que permitan un adecuado nivel de motivación e interés en los alumnos. Es importante intentar terminar la exposición con las conclusiones más relevantes del tema tratado. Las transparencias que se utilizarán en clase están extraídas de las notas que se facilitan a los alumnos en la página web de la asignatura. Estas notas son una guía para el estudio, pero no son sustitutas de la bibliografía recomendada. CLASES PRÁCTICAS Las clases prácticas presenciales estarán dedicadas a la familiarización del alumno en el uso de alguna de las herramientas disponibles para la ayuda al diseño y construcción de compiladores Los alumnos, en grupos de 2, deberán realizar una práctica obligatoria que consistirá en la implementación de la primera fase (hasta la generación de código intermedio) de un pequeño compilador de un lenguaje cuya especificación se le dará a lo largo del curso. Esta práctica tendrá que entregarse antes de una fecha determinada y defenderse en grupo. TUTORÍAS El alumnado tiene a su disposición seis horas de tutorías a la semana en las que puede consultar cualquier duda relacionada con los contenidos, organización y planificación de la asignatura. Las tutorías pueden ser individualizadas, pero se admite tutorías grupales para resolver problemas relacionados con las actividades a realizar en grupo. PLATAFORMA VIRTUAL DE APRENDIZAJE Es el vehículo de comunicación y registro de información de la asignatura. Todo el material de la asignatura está disponible en la plataforma moodle (http://studium.usal.es ).
|
|
|
Evaluación |
La parte teórica (65%) se evaluará mediante un examen final el cual consta de dos partes: - Una prueba teórica de tipo test.
- Una prueba práctica, escrita, con algunos problemas relacionados con la teoría de la asignatura.
La parte práctica (35%) se evaluará mediante la valoración de la práctica obligatoria realizada por los alumnos. Para aprobar la asignatura es necesario aprobar ambas partes. La parte que se haya aprobado se guardará solo durante ese curso académico.
|
|
|
Datos de interés |
HORARIO DE TUTORÍAS Lunes, Miércoles, Jueves de 10 a 12h.
|
|
|
|
Otros datos |
Créditos: 9.0 (6.0 T + 3.0 P)
,
Segundo cuatrimestre
,
Troncal
,
Número de grupos de teoría: 1
,
Número de grupos de práctica: 1
,
Acceso a la plataforma virtual
|
Ingeniería Informática (2 Ciclo)
|
Primer curso
|
|
|
|
|
|