Datos Identificativos 2014/15
Asignatura (*) Procesamento de Linguaxes Código 614G01067
Titulación
Grao en Enxeñaría Informática
Descriptores Ciclo Período Curso Tipo Créditos
Grao 1º cuadrimestre
Cuarto Obrigatoria 6
Idioma
Castelán
Galego
Prerrequisitos
Departamento Tecnoloxías da Información e as Comunicacións
Coordinación
Arcay Varela, Bernardino
Correo electrónico
bernardino.arcay@udc.es
Profesorado
Arcay Varela, Bernardino
Dafonte Vazquez, Jose Carlos
Gomez Garcia, Angel
Martinez Perez, Maria
Correo electrónico
bernardino.arcay@udc.es
carlos.dafonte@udc.es
angel.gomez@udc.es
maria.martinez@udc.es
Web
Descrición xeral Compiladores; traductores e intérpretes; etapas dun compilador; optimización de código; macroprocesadores.
O obxectivo é familiarizar ó alumno co funcionamento dos reconocedores da linguaxe e os compiladores como un caso particular, o entorno no que traballan así coma algunhas ferramentas software para a construcción dos mesmos. É preciso asumir a característica interdisciplinar da asignatura. Adquirir os coñecementos necesarios para deseñar e implementar as diferentes etapas necesarias para o desenvolvemento dun reconocedor da linguaxe: análise (léxico, sintáctico e semántico) e síntese (xeración de código intermedio, optimización de código e xeración de código obxeto).

Competencias do título
Código Competencias da titulación
A28 Capacidade de identificar e analizar problemas, e deseñar, desenvolver, implementar, verificar e documentar solucións sóftware sobre a base dun coñecemento adecuado das teorías, modelos e técnicas actuais.
A32 Capacidade de desenvolver procesadores específicos e sistemas embarcados, así como desenvolver e optimizar o sóftware dos ditos sistemas.
A34 Capacidade de deseñar e implementar sóftware de sistemas e de comunicacións.
A39 Capacidade para ter un coñecemento profundo dos principios fundamentais e modelos da computación, e saber aplicalos para interpretar, seleccionar, valorar, modelar, e crear novos conceptos, teorías, usos e desenvolvementos tecnolóxicos relacionados coa informática.
A40 Capacidade para coñecer os fundamentos teóricos das linguaxes de programación e as técnicas de procesamento léxico, sintáctico e semántico asociadas, e saber aplicalas para a creación, o deseño e o procesamento de linguaxes.
B1 Capacidade de resolución de problemas
B3 Capacidade de análise e síntese
C2 Dominar a expresión e a comprensión de forma oral e escrita dun idioma estranxeiro.
C4 Desenvolverse para o exercicio dunha cidadanía aberta, culta, crítica, comprometida, democrática e solidaria, capaz de analizar a realidade, diagnosticar problemas, formular e implantar solucións baseadas no coñecemento e orientadas ao ben común.
C6 Valorar criticamente o coñecemento, a tecnoloxía e a información dispoñible para resolver os problemas cos que deben enfrontarse.

Resultados de aprendizaxe
Competencias de materia (Resultados de aprendizaxe) Competencias da titulación
Coñecer os conceptos teóricos básicos nos que se basean os compiladores. Deseñar e implementar cada unha das fases precisas para a implementación dun compilador. Coñecer as distintas ferramentas dispoñibles para a implementación de compiladores e manexar algunhas das máis habituáis. O estudante tamén saberá verificar o funcionamento do procesador da linguaxe. A28
A40
Partindo da base teórica da computación, plantéxanse diferentes técnicas e ferramentas (cunha orientación moi práctica) para o procesamento da linguaxe. A39
Saber optimizar o código obxecto en función da plataforma que o vai a executar. Saber elexir o tipo de optimización segundo a máquina obxecto e a súa arquitectura. A32
A34
Saber analizar e diagnosticar o caso concreto, o obxectivo, para o que se precisa un recoñecedor da linguaxe. O estudante tamén será capaz de documentarse, sintentizar e adaptar a solución cun enfoque totalmente práctico pero baseado no coñecemento. B1
B3
C2
C4
C6

Contidos
Temas Subtemas
Tema I. Introducción 1.1 Estructura dun compilador.
1.2 Exemplo das fases dun compilador.

Tema II. Linguaxes e Gramáticas 2.1 Notación e clasificación de Chomsky.
2.2 Gramáticas de contexto libre (GCL) e notación BNF.
2.3 Mellora e simplificación de gramáticas.
Tema III. Análise Léxica 3.1 Tipos de máquinas recoñecedoras ou autómatas.
3.2 Autómatas Finitos.
3.3 Conversión entre gramática regular, expresión regular e autómata finito.
3.4 Implementación de autómatas.
Tema IV. Análise Sintáctica (Parsing) 4.1 Máquinas teóricas, mecanismos con retroceso
4.2 Algoritmos sen retroceso.
4.2.1 Análise sintáctica ascendente por precedencia simple.
4.2.2 Analizadores descendentes LL(K).
4.2.3 Analizadores ascendentes LR(k).
4.2.4 Xenerador de analizadores sintácticos YACC.
Tema V. Análise Semántica 5.1 Definicións dirixidas pola sintáxis.
5.2 Esquema de traducción.
5.3 Comprobacións en tempo de compilación.
Tema VI. Xeneración de Código 6.1 Linguaxes intermedios.
6.2 Xeneración de código intermedio.
6.3 Xeneración de código dende linguaxe intermedio.
Tema VII. Optimización de Código 7.1 Algoritmo de Nakata.
7.2 Lazos nos grafos de fluxo.
7.3 Análisie global do fluxo de datos.
7.4 Solución iterativa das ecuacións de fluxo de datos.
Tema VIII. Erros 8.1 Tipos de erros.
8.2 Recuperación de erros léxico-gráficos.
Tema IX. Intérpretes e Complementos 9.1 Estructura dun intérprete actual.
9.2 Arquitectura neutral de Java.

Planificación
Metodoloxías / probas Horas presenciais Horas non presenciais / traballo autónomo Horas totais
Sesión maxistral 21 31.5 52.5
Proba obxectiva 3 18 21
Traballos tutelados 7 17.5 24.5
Prácticas de laboratorio 14 14 28
 
Atención personalizada 24 0 24
 
*Os datos que aparecen na táboa de planificación son de carácter orientativo, considerando a heteroxeneidade do alumnado

Metodoloxías
Metodoloxías Descrición
Sesión maxistral Nestas sesións analizarase en profundidade os conceptos teóricos e técnicas principáis para a implementación dun recoñedor da linguaxe
Proba obxectiva Realizarase un exame ó final do cuatrimestre e a súa correspondente 2ª oportunidade. Este exame centrarase principalmente nos aspectos teóricos i exercicios asociados. Tamén poderase formular algunha cuestión relacionada coas prácticas de implementación realizadas.
Traballos tutelados Levarase a cabo un proxecto a proposta de un grupo de 2 estudantes do que se fará un seguimento no horario de traballo en grupo.
Prácticas de laboratorio Levaranse a cabo pequenas prácticas sobre os diferentes temas da asignatura que se irán explicando nas sesións maxistráis. Algunhas delas serán exercicios de desenvolvemento e outras de implementación.

Atención personalizada
Metodoloxías
Sesión maxistral
Prácticas de laboratorio
Traballos tutelados
Descrición
Especialmente no caso do proxecto a desenvolver, organizado por grupos de alumnos, realizarase un seguimento. A iso se adicarán principlamente as horas de traballo en grupo reducido.

Avaliación
Metodoloxías Descrición Cualificación
Prácticas de laboratorio Levaranse a cabo pequenas prácticas sobre os diferentes temas da asignatura que se irán explicando nas sesións maxistráis. Algunhas delas serán exercicios de desenvolvemento e outras de implementación. A porcentaxe por asistencia i entrega destas pequenas prácticas é testimonial (10%). O 20% restante corresponde ó desenvolvemento do proxecto. 30
Proba obxectiva Realizarase un exame ó final do cuatrimestre e a súa correspondente 2ª oportunidade. Este exame centrarase principalmente nos aspectos teóricos i exercicios asociados. Tamén poderase formular algunha cuestión relacionada coas prácticas de implementación realizadas. 50
Traballos tutelados Levarase a cabo un proxecto a proposta de un grupo de 2 estudantes do que se fará un seguimento no horario de traballo en grupo. 20
 
Observacións avaliación

En calquera caso, é preciso aprobar as dúas partes (proba obxectiva e prácticas-traballo). En caso contrario, a nota máxima que se poderá acadar é un 4.5.

IMPORTANTE: O 40% da nota apórtao o proxecto a propoñer polos grupos, o 20% corresponde ó seguimento e o 20% á entrega final.

ESTUDANTES CON MATRÍCULA A TEMPO PARCIAL: Deberán poñerse en contacto cos profesores da asignatura para posibilitar a realización das tarefas fóra da organización habitual de materia.


Fontes de información
Bibliografía básica

Bibliografía complementaria

"Compiladores: Principios, técnicas y herramientas", Aho, A.V.; Lam M.; Sethi, R. ; Ullman, J.D., Addison-Wesley, Reading, Massachussetts 2008.

"Construcción de compiladores. Principios y Práctica", Louden D. K., Paraninfo Thomson Learning, 2004.

Garrido, A. ; Iñesta J.M. ; Moreno F. ; Pérez J.A. [2004] Diseño de compiladores, Publicaciones Universidad de Alicante.

"Compiladores, teoría y construcción", Sanchis, F.J.; Galán, J.A., Ed. Paraninfo, 1987.

"The theory of parsing, translation and compiling" (I y II), Aho, A.V.; Ullman, J.D., Prentice-Hall, 1972.

"Principles of compiler design", Aho, A.V.; Ullman J.D., Addison-Wesley, 1977.

"ntroducción a la teoría de autómatas, lenguajes y computación", Hopcroff, J.E. ; Motwani R. ; Ullman, J. D. [2002] I, Addison-Wesley, 2002

"Compiler design in C", Allen I.; Holub, Prentice-Hall, 1991.

"Compiladores e Intérpretes", Sánchez, G.; Valverde J.A., Ed. Díaz de Santos, 1984.

“Languages and machines”, Sudkamp T.A., Addison-Wesley, 1994


Recomendacións
Materias que se recomenda ter cursado previamente
Deseño das Linguaxes de Prgramación/614G01065

Materias que se recomenda cursar simultaneamente

Materias que continúan o temario
Teoría da computación/614G01039

Observacións
A asignatura troncal de Enxeñería Informática e Enxeñería Técnica en Informática de Sistemas "Teoría de autómatas e linguaxes formais" é de gran utilidade para a comprensión da asignatura de Compiladores.


(*)A Guía docente é o documento onde se visualiza a proposta académica da UDC. Este documento é público e non se pode modificar, salvo casos excepcionais baixo a revisión do órgano competente dacordo coa normativa vixente que establece o proceso de elaboración de guías