Datos Identificativos 2024/25
Asignatura (*) Procesamento de Linguaxes Código 614G01067
Titulación
Descriptores Ciclo Período Curso Tipo Créditos
Grao 1º cuadrimestre
Cuarto Optativa 6
Idioma
Castelán
Galego
Modalidade docente Presencial
Prerrequisitos
Departamento Ciencias da Computación e Tecnoloxías da Información
Computación
Coordinación
Dafonte Vazquez, Jose Carlos
Correo electrónico
carlos.dafonte@udc.es
Profesorado
Arcay Varela, Bernardino
Castro Martinez, Alfonso
Dafonte Vazquez, Jose Carlos
Gomez Garcia, Angel
Correo electrónico
bernardino.arcay@udc.es
alfonso.castro@udc.es
carlos.dafonte@udc.es
angel.gomez@udc.es
Web http://https://campusvirtual.udc.gal
Descrición xeral Compiladores; traductores e intérpretes; etapas dun compilador; optimización de código; macroprocesadores.
O obxectivo é familiarizar ó alumnado 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 construción dos mesmos. É preciso asumir a característica interdisciplinar da materia. 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 obxecto).

Competencias / Resultados do título
Código Competencias / Resultados do título

Resultados de aprendizaxe
Resultados de aprendizaxe Competencias / Resultados do título
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. En relación ás competencias tipo C, será preciso manexar material en inglés e castelán e orientarase o traballo de prácticas para obter un diagnóstico e unha solución ós problemas asociados coa temática da asignatura. A40
B3
C2
C4
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. En relación ás competencias tipo C, tamén será necesario manexar documentación en ambos idiomas e trátase de valorar as diferentes solucións e plantexamentos posibles coas súas avantaxes e inconvintes. A40
C2
C6
Entender as razóns e saber como 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, as súas capacidades e a súa arquitectura. Con respecto ás competencias tipo C, unha vez máis precisaremos manexar documentación en varios idiomas e as prácticas tratarán de proporcionar as ferramentas para que o estudantes poda descubrir por sí mesmo as diferentes posibilidades e avantaxes según o contorno. B1
C2
C6
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. Sobre as competencias tipo C, e dado que principalmente este resultado obterase a partir do proxecto proposto polo estudante, é obvio que precisamos utilizar técnicas avanzadas baseadas no coñecemento, diagnóstico de problemas así como una valoración crítica da proposta que él mesmo realiza. B3
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 Competencias / Resultados Horas lectivas (presenciais e virtuais) Horas traballo autónomo Horas totais
Sesión maxistral A40 B3 C2 C4 21 31.5 52.5
Proba obxectiva A40 B1 C2 C6 3 18 21
Prácticas de laboratorio A40 B1 C2 14 14 28
Traballos tutelados B1 B3 C2 C4 C6 7 17.5 24.5
 
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ñecedor da linguaxe
Proba obxectiva Realizarase un exame ó final do cuadrimestre 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.
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.
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.

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 principalmente as horas de traballo en grupo reducido.

Avaliación
Metodoloxías Competencias / Resultados Descrición Cualificación
Prácticas de laboratorio A40 B1 C2 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 A40 B1 C2 C6 Realizarase un exame ó final do cuadrimestre 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 B1 B3 C2 C4 C6 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 OU CON DISPENSA ACADÉMICA DE EXENCIÓN DE DOCENCIA: 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.

Todos os aspectos relacionados con “dispensa académica”, “dedicación ao estudo”, “permanencia” e “fraude académica” rexeranse de acordo coa normativa académica vixente da UDC.


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.

"Diseño de compiladores", Garrido, A., Iñesta J.M., Moreno F., Pérez J.A. PublicacionesUniversidad de Alicante, 2004.

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

"The theory of parsing, translationand 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.

"Introducción a la teoría de autómatas, lenguajes ycomputación", Hopcroff, J.E. ; MotwaniR. ; Ullman, J. D. [2002] I, Addison-Wesley, 2002

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

"Compiladores eIntérpretes", Sánchez, G.; ValverdeJ.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
Teoría da computación/614G01039

Materias que se recomenda cursar simultaneamente

Materias que continúan o temario
Deseño das Linguaxes de Programación/614G01065

Observacións

Aínda que ten relación con outras materias, está fortemente relacionada con "Deseño das Linguaxes de Programación", que a complementa, e "Teoría da Computación", que é a base inicial para poder afrontar os contidos.



(*)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