Compiladores Código:  75.580    :  6
Consulta de los datos generales   Descripción   La asignatura en el conjunto del plan de estudios   Campos profesionales en el que se proyecta   Conocimientos previos   Información previa a la matrícula   Objetivos y competencias   Contenidos   Consulta de los materiales de los que dispone la asignatura   Materiales y herramientas de apoyo   Informaciones sobre la evaluación a la UOC   Consulta del modelo de evaluación  
Este es el plan docente de la asignatura para el segundo semestre del curso 2023-2024. Podéis consultar si la asignatura se ofrece este semestre en el espacio del campus Más UOC / La universidad / Planes de estudios). Una vez empiece la docencia, tenéis que consultarlo en el aula. El plan docente puede estar sujeto a cambios.

Los compiladores son herramientas indispensables para cualquier informático, encargadas de traducir información textual de un formato o lenguaje a otro. Por ejemplo, actúan como piezas clave en el proceso la ejecución de un programa: traducen el programa desde el lenguaje de alto nivel utilizado por los programadores hasta un lenguaje de bajo nivel que se puede ejecutar en un ordenador (como el ensamblador o el código máquina).

Esta asignatura presenta la estructura básica de un compilador: los módulos que lo componen y cómo se comunican entre sí. Nos centraremos en el caso de los lenguajes de programación de propósito general y en el proceso de generación de un ejecutable a partir de un programa en alto nivel.

Concretamente, se verá cómo se analiza un programa fuente para obtener sus componentes y se detectan los posibles errores introducidos por el programador. Se introducirá también el concepto de intérprete y su relación con los compiladores. Después se estudiará cómo a partir de los datos obtenidos en la parte de análisis, se genera el código objeto y es optimizado para mejorar el rendimiento. Todo eso se pondrá en práctica mediante el uso de herramientas para la construcción de compiladores.

Amunt

La asignatura Compiladores se puede cursar como asignatura optativa o bien como parte del itinerario de Computación.

Dentro de este itinerario, esta asignatura permite aplicar los conocimientos obtenidos en Autómatas y Gramáticas al estudio de los lenguajes de programación. Además, junto con Inteligencia Artificial y Aprendizaje computacional, la asignatura proporciona las bases utilizadas en las técnicas del procesamiento de lenguaje natural.

Finalmente, hay un área de Trabajo de Final de Grado en Compiladores, que representa la continuación natural de esta asignatura.

Amunt

Además del área de compiladores, todas las técnicas que se estudian en esta asignatura, se pueden aplicar, en general, a cualquier sistema de procesamiento de lenguajes y de traducción. La construcción de compiladores e intérpretes también es relevante en el intercambio de información textual entre diferentes sistemas software: construcción de librerías de importación/exportación, definición de lenguajes de intercambio de datos, etc.

Así pues, esta asignatura ocupa una posición muy relevante en las salidas profesionales en áreas donde la definición formal de un lenguaje se hace necesaria como la definición de lenguajes de programación, el procesamiento de lenguaje natural o la traducción automática, entre otros.

Por último, las competencias adquiridas en esta asignatura pueden ser útiles para cualquier desarrollador, dado que permiten entender mejor los lenguajes de programación, el funcionamiento de los intérpretes y los compiladores y el proceso de ejecución de un programa.

Amunt

La asignatura presupone un buenos conocimientos de programación, específicamente en lenguaje Java, por lo que resulta muy recomendable haber cursado las asignaturas de programación y de estructuras de datos correspondientes con anterioridad.

Además, para el buen seguimiento de la asignatura se tiene que partir de unos conocimientos básicos en lenguajes, expresiones regulares, autómatas finitos y gramáticas.

Y, finalmente, hay que tener conocimientos básicos sobre lenguaje ensamblador y estructura de computadores.

Amunt

Antes de cursar esta asignatura, es muy recomendable haber cursado previamente las asignaturas siguientes:

  • Diseño y Programación Orientada a Objetos.
  • Autómatas y Gramáticas.
  • Estructura de Computadores.

Además, es recomendable a pesar de que no imprescindible haber cursado la asignatura de Diseño de estructuras de datos.

Amunt

Las competencias generales del Grado que se ponen de manifiesto en esta asignatura son:

  • Capacidad para analizar un problema en el nivel de abstracción adecuado a cada situación y aplicar las habilidades y conocimientos adquiridos para resolverlo.
  • Capacidad para diseñar y construir aplicaciones informáticas mediante técnicas de desarrollo, integración y reutilización.
  • Capacidad para aplicar las técnicas específicas de tratamiento, almacenamiento y administración de datos.
  • Capacidad para proponer y evaluar diferentes alternativas tecnológicas para resolver un problema concreto.

Las competencias específicas de esta asignatura son:

  • Entender el proceso de ejecución de un programa escrito en un lenguaje de alto nivel.
  • Conocer la diferencia entre compilador e intérprete y saber escoger la herramienta más apropiada a cada situación.
  • Conocer las diferentes fases de un compilador (análisis léxico, sintáctico y semántico, generación de código y optimización de código) y cómo se relacionan.
  • Entender el papel de la tabla de símbolos dentro de un compilador y saber escoger la estructura más apropiada.
  • Conocer cuáles son los tipos de errores que se pueden identificar en el análisis de un programa, cómo se detectan, cómo se informa de estos errores y cómo un compilador se puede recuperar de ellos.
  • Ser capaz de utilizar herramientas de construcción de analizadores léxicos y sintácticos para la construcción de un compilador.

Amunt

La asignatura se estructura en seis módulos:

Módulo

Contenidos

Descripción

1. Visión general

1. Lenguajes

2. Nociones básicas

3. Estructura de un compilador

4. Construcción de compiladores

Se verá una panorámica de la estructura general de un compilador.

2. Análisis léxico

1. Organización general

2. Construcción de analizadores léxicos

3. Especificación de un analizador léxico

4. Tratamiento de errores

5. El sistema de entrada

6. Las tablas de símbolos

Se estudiará la única parte del compilador que interactúa con el fichero fuente, convirtiendo sus caracteres en una secuencia de símbolos léxicos (tokens) y eliminando todo lo que no es necesario para su análisis (comentarios, saltos de línea ...).

3. Análisis sintáctico

1. Nociones generales

2. Análisis sintáctico descendente

3. Análisis sintáctico ascendente

Se estudiará la fase encargada verificar que los símbolos léxicos del programa fuente llegan en el orden correcto y que se cumplen las especificaciones de la gramática libre de contexto que define el lenguaje fuente.

4. Análisis semántico

1. Análisis semántico

2. Generación de código intermedio

Se estudiará la verificación de la semántica del programa fuente, la que es dependiente del contexto, incorporando atributos y acciones semánticas en las producciones de la gramática.

5. Fases de síntesis

1. Generación de código

2. Optimización de código

Se estudiará la generación de código a partir del código intermedio, así como todo aquello a tener en cuenta con el fin de hacer una traducción automática y la fase final de optimización.

6. Lenguajes interpretados

1. Intérpretes

2. La máquina de pila abstracta

3. Construcción de un intérprete

Se presentará un modelo concreto de arquitectura para intérpretes basado en una memoria en forma de pila. Se estudiará el proceso de construcción de un intérprete basado en este modelo.

Amunt

Compiladores PDF

Amunt

Los módulos didácticos constituyen la parte más importante de los materiales de la asignatura. Recibiréis estos materiales en papel al inicio del semestre y los podéis descargar en formato PDF desde el apartado Recursos del aula.

La asignatura dispone de un manual de referencia para las herramientas de construcción de compiladores utilizadas en la asignatura, el Manual de JLex y CUP, que podéis encontrar en el aula virtual dentro del apartado de Recursos.

Dispondréis del software de la asignatura (entorno JDK para la ejecución de programas Java, JLex y CUP) en los CDs de software de la UOC. Disponéis de un aula de Laboratorio de Java de Compiladores donde recibiréis más información sobre este software.

Amunt

La Normativa académica de la UOC dispone que el proceso de evaluación se fundamenta en el trabajo personal del estudiante y presupone la autenticidad de la autoría y la originalidad de los ejercicios realizados.

La falta de originalidad en la autoría o el mal uso de las condiciones en las que se hace la evaluación de la asignatura es una infracción que puede tener consecuencias académicas graves.

El estudiante será calificado con un suspenso (D/0) si se detecta falta de originalidad en la autoría de alguna actividad evaluable (práctica, prueba de evaluación continua (PEC) o final (PEF), o la que se defina en el plan docente), ya sea porque ha utilizado material o dispositivos no autorizados, ya sea porque ha copiado de forma textual de internet, o ha copiado de apuntes, de materiales, manuales o artículos (sin la citación correspondiente) o de otro estudiante, o por cualquier otra conducta irregular.

La calificación de suspenso (D/0) en la evaluación continua (EC) puede conllevar la obligación de hacer el examen presencial para superar la asignatura (si hay examen y si superarlo es suficiente para superar la asignatura según indique este plan docente).

Cuando esta mala conducta se produzca durante la realización de las pruebas de evaluación finales presenciales, el estudiante puede ser expulsado del aula, y el examinador hará constar todos los elementos y la información relativos al caso.

Además, esta conducta puede dar lugar a la incoación de un procedimiento disciplinario y la aplicación, si procede, de la sanción que corresponda.

La UOC habilitará los mecanismos que considere oportunos para velar por la calidad de sus titulaciones y garantizar la excelencia y la calidad de su modelo educativo.

Amunt

Puedes superar la asignatura a través de dos vías:

  1. Con evaluación continua (EC) y una prueba de síntesis (PS):
    • Si superas la evaluación continua y en la prueba de síntesis obtienes la nota mínima necesaria, la nota final será la ponderación que se especifique en el plan docente.
    • Si superas la evaluación continua y en la prueba de síntesis no obtienes la nota mínima necesaria, la calificación final será la nota cuantitativa que obtengas en la prueba de síntesis.
    • Si superas la evaluación continua y no te presentas a la prueba de síntesis, la nota final será un No presentado.
    • Si suspendes la evaluación continua, la nota final será un No presentado.
    • Si no te presentas a la evaluación continua, la nota final será un No presentado.

  2. Con examen (para seguir esta vía no es necesario haber superado la evaluación continua para hacer el examen):
    • Si no has presentado la evaluación continua, la nota final será la calificación numérica obtenida en el examen.
    • Si en la evaluación continua has obtenido una nota distinta a un No presentado, la nota final será el cálculo más favorable entre la nota numérica del examen y la ponderación de la nota de la evaluación continua con la nota del examen, según lo establecido en el plan docente. Para aplicar este cálculo, es necesario obtener una nota mínima de 4 en el examen (si es inferior, la nota final de la asignatura será la calificación del examen).
    • Si no te presentas al examen, la calificación final será un No presentado.

 

Amunt