Datos Identificativos 2020/21
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 Optativa 6
Idioma
Castelán
Galego
Modalidade docente Híbrida
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
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 http://http://estudos.udc.es/es/study/detail/614G01V01#plan-structure
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).
Plan de continxencia 1. Modificacións nos contidos
Non se realizan cambios nos contidos da materia.

2. Metodoloxías
*Metodoloxías docentes que se manteñen
A maior parte das metodoloxías docentes mantéñense pero adaptando a súa realización á docencia exclusivamente non presencial mediante as ferramentas proporcionadas pola UDC (Moodle, Teams, Email). Así temos:
- Sesión maxistral: Nestas sesións analizarase en profundidade os conceptos teóricos e técnicas principais para a implementación dun recoñecedor da linguaxe. Empregarase o canal de Teams para a exposición, o Moodle da materia para a publicación da documentación e foros específicos en Moodle para a proposta de exercicios.
- Traballos tutelados: Levarase a cabo un proxecto a proposta de un grupo de 2 estudantes como máximo do que se fará un seguimento no horario de traballo en grupo. A documentación necesaria e instrucións de entrega publicarase no Moodle da materia e empregarase o canal de Teams para o seguimento e consulta síncrona nos horarios correspondentes. Tamén se atenderán as consultas por Email ou a través dos foros de traballos tutelados creados no Moodle.
- Prácticas de laboratorio: Levaranse a cabo pequenas prácticas sobre os diferentes temas da materia que se irán explicando nas sesións maxistrais. Algunhas delas serán exercicios de desenvolvemento e outras de implementación. A documentación necesaria e instrucións de entrega publicarase no Moodle da materia e empregarase o canal de Teams para o seguimento e consulta síncrona nos horarios correspondentes. Tamén se atenderán as consultas por Email ou a través dos foros de prácticas creados no Moodle.
As metodoloxías indicadas para a entrega e avaliación dos traballos tutelados e as prácticas de laboratorio aplicaranse de modo similar tanto ao final do cuadrimestre como para a 2ª oportunidade.

*Metodoloxías docentes que se modifican
A principal modificación realizada na metodoloxía docente correspóndese co exame de coñecementos da materia. Así temos:
- Proba obxectiva: Realizarase un exame ao final do cuadrimestre e a súa correspondente 2ª oportunidade. Este exame centrarase principalmente nos aspectos teóricos e exercicios asociados. Tamén poderase formular algunha cuestión relacionada coas prácticas de implementación realizadas. No caso dunha situación excepcional optarase por modificar esta proba presencial para convertela nun exame escrito en liña. Para isto empregarase un sistema de supervisión e control por medio do canal de Teams da materia (cámara, micrófono, chat) e a entrega por medio dunha tarefa no Moodle co exame escaneado polo estudante. O alumno será o encargado de custodiar o exame manuscrito, e poderá ser solicitado polo docente en caso necesario. Coa antelación necesaria, informarase adecuadamente ao alumnado sobre o novo proceso de avaliación a través do Moodle e Teams para garantir a súa participación e minimizar calquera problema que poda xurdir.

3. Mecanismos de atención personalizada ao alumnado
- Moodle. Temporalidade: Semanal. Realízase a publicación dos contidos, tarefas, mensaxes en foros, etc. necesarios para o seguimento normal da materia. Ademais, independentemente destas publicacións, respóndese ás consultas do alumnado nos foros en canto é posible.
- Teams. Temporalidade: Semanal. Emprégase para a docencia non presencial da materia, cumprindo os horarios do calendario académico establecidos polo centro. Ademais, independentemente deste horario, respóndese ás consultas do alumnado no canal de Teams da materia en canto é posible.
- Email. Temporalidade: Puntual. Emprégase para contactar ou responder ás dúbidas do alumnado. A resposta realízase en canto é posible.

4. Modificacións na avaliación
*Metodoloxía: Peso na cualificación-Descrición
- Prácticas de laboratorio: 30%-Levaranse a cabo pequenas prácticas sobre os diferentes temas da materia que se irán explicando nas sesións maxistrais. Algunhas delas serán exercicios de desenvolvemento e outras de implementación. A porcentaxe por entrega destas pequenas prácticas é testemuñal (10%). O 20% restante corresponde ó desenvolvemento do proxecto.
- Proba obxectiva: 40%-Realizarase un exame ó final do cuadrimestre e a súa correspondente 2ª oportunidade. Este exame centrarase principalmente nos aspectos teóricos e exercicios asociados. Tamén poderase formular algunha cuestión relacionada coas prácticas de implementación realizadas.
- Traballos tutelados: 30%-Levarase a cabo un proxecto a proposta de un grupo de 2 estudantes como máximo do que se fará un seguimento no horario de traballo en grupo.

*Observacións de avaliación:
Indicar que aínda que foron cambiadas as porcentaxes de avaliación establecidas inicialmente na guía docente do 50% (prácticas)/50% (teoría) ao 60% (prácticas)/40% (teoría), as novas porcentaxes serán de aplicación só no caso de que na nota final isto beneficie ó alumno.

5. Modificacións da bibliografía ou webgrafía
Non se realizan cambios na bibliografía.

Competencias do título
Código Competencias do título
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
Resultados de aprendizaxe Competencias 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 Horas presenciais Horas non presenciais / 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
Traballos tutelados B1 B3 C2 C4 C6 7 17.5 24.5
Prácticas de laboratorio A40 B1 C2 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 Competencias 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 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 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.


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
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