Herramientas de usuario

Herramientas del sitio


compiladores:main

Lenguajes y Compiladores

  • Profesores: Alejandro Gadea, Héctor Gramaglia, Demetrio Vilela.
  • Lista de Mail: famaf-compiladores arroba googlegroups punto com
  • Suscribirse en groups punto google punto com slash group slash famaf-compiladores.

Generalidades

  • Parciales: 2
  • Promoción: obteniendo al menos 7 en cada uno de los parciales y aprobando el taller.
  • Regularidad: aprobando 2 parciales (es posible recuperar 1) y aprobando el taller.
  • Taller: se implementarán intérpretes o compiladores de lenguajes de programación.
  • Examen: examen con parte escrita y parte oral.
  • Alumnos libres: examen con ejercicios/preguntas adicionales + defensa del taller.

Exámenes Parciales

  • PRIMER PARCIAL: miércoles 2 de mayo de 2018
  • SEGUNDO PARCIAL: viernes 15 de junio de 2018

Teórico

Bibliografía

  • Reynolds, Theories of Programming Languages, Cambridge University Press, 1998.

Apuntes de Clase

Primera parte: Lenguajes imperativos

  • Apunte 1: Introducción a la sintaxis y la semántica de lenguajes. Sintaxis abstracta. Función semántica. Composicionalidad y dirección por sintaxis. Variables y metavariables. Ligadura. Sustitución y captura en el Cálculo de Predicados. Propiedades de la semántica denotacional. Filminas del apunte 1
  • Apunte 2: El problema de dar significado a la recursión. Ordenes parciales, predominios y dominios. Funciones monótonas, morfismos y funciones continuas. Espacio de Funciones. Teorema del Menor Punto Fijo. Aplicación del TMPF para el estudio de las soluciones de una ecuación recursiva. Filminas del apunte 2

Segunda parte: Lenguajes aplicativos puros, lenguajes aplicativos con referencias y asignación

  • Apunte 6: Lenguaje Aplicativo eager con referencias y asignación (Iswim). Sintaxis abstracta de las expresiones que involucran referencias. Semántica denotacional. Semántica operacional (Evaluación). Propiedades del fragmento imperativo. Filminas del apunte 6 (revisadas 2017)

Material complementario

  • Apunte 7: Continuaciones en el lenguaje imperativo simple y el lenguaje imperativo con extensiones.

Contenidos de cada Clase - Año 2018

  • Miércoles 14/3. Apunte 1: Distintas formas de dar significado a los lenguajes de programación. Sintaxis abstracta: gramáticas abstractas. Definición de la función semántica: ecuaciones semánticas, dirección por sintaxis y composicionalidad.
  • Viernes 16/3. Apunte 1: Lenguaje de la lógica de predicados. Sintaxis y semántica denotacional. Variables como frase abstracta. Noción de estado. Variables y metavariables. Ocurrencias ligadoras, ligadas y libres de una variable. Ejemplos. Variables libres. Teoremas de Coincidencia y Renombre. Sustitución. El problema de la captura.
  • Miércoles 21/3. Propiedades de la semántica: Teoremas de Coincidencia y Renombre. Demostraciones: Teorema de coincidencia. Apunte 2: Dificultades para dar significado a un programa recursivo de Haskell. Ecuaciones recursivas y sus soluciones. Órdenes parciales. Orden discreto y llano. Cadenas. Supremo de un subconjunto. Posets de funciones. Predominios y dominios. Ejemplos.
  • Viernes 23/3. Apunte 2: Supremo de cadenas en el posets de funciones. Funciones continuas. Dominios de funciones continuas. Teorema del Menor Punto Fijo.
  • Miércoles 28/3. Teorema del Menor Punto Fijo. Aplicacion del TMPF para caracterizar la solución buscada de una ecuación recursiva.
  • Viernes 30/3. Feriado.
  • Miércoles 4/4. Apunte 3. El lenguaje Imperativo Simple (LIS). Sintaxis abstracta. Semántica denotacional. El problema de dar semántica dirigida por sintaxis a la iteración. Uso del TMPF para la semántica de la iteración.
  • Viernes 6/4. Apunte 3. Ejemplos del Cálculo de semántica. Uso del TMPF para la semántica de la iteración. Desarrollo de un ejemplo. Propiedades de la semántica denotacional: Teoremas de renombre y coincidencia. Noción de sustitución para el LIS. El problema del alias. Teorema de sustitución (enunciado).
  • Miércoles 11/4. La cátedra se adhiere al paro.
  • Viernes 13/4. Apunte 3. Prueba del Teorema de Coincidencia para LIS. Sintaxis abstracta y semántica denotacional del Lenguaje Imperativo Simple con Fallas. Ejemplos.
  • Miércoles 18/4. Semántica operacional de LIS. La relación “small-step”. Configuraciones. Definición axiomática de la relación “small-step”.Semántica de transiciones de LIS. Noción de Ejecución. Corrección de la semántica de transiciones de LIS respecto de la semántica denotacional. Semántica de transiciones de LIS con fallas.

Prácticos

Prácticos 2018

  1. Guía del 14 de marzo Gramática abstracta y semántica denotacional, composicionalidad y dirección por sintaxis.
  2. Guía del 21 de marzo Variables, ligaduras, sustitución, renombre. Todo esto en la lógica de predicados.
  3. Guía del 28 de marzo Predominios y dominios. Funciones continuas, teorema del menor punto fijo.
  4. Guía del 9 de abril Semántica denotacional del lenguaje imperativo simple.
  5. Guía del 16 de abril Fallas. Semántica operacional del lenguaje imperativo simple.

Prácticos 2017

  1. Guía extra (sale gratis) del 17 de marzo Repaso de Haskell, implementación de gramática abstracta y definición de funciones semánticas.
  2. Guía del 25 de abril Productos y uniones disjuntas de predominios. Dominios recursivos. Output e Input.
  3. Guía del 16 de mayo Cálculo Lambda, sintaxis. Reducción. Formas canónicas y normales. Evaluación Normal e eager.
  4. Guía del 19 de mayo Semántica denotacional del Cálculo Lambda, la evaluación normal y la evaluación eager.
  5. Guía del 23 de mayo Lenguaje aplicativo. Evaluación y semnántica denotacional eager y normal.

Los que siguen son del año pasado, por si alguien quiere ir avanzando…

  1. Guía del 3 de junio Lenguaje aplicativo con referencias y asignación.

Extras

  1. http://pdf.aminer.org/000/210/722/initial_algebra_semantics.pdf “Initial algebra semantics and continuous algebras” Artículo que explica qué es la sintaxis abstracta de una manera amena (en la introducción).

Taller

Descargar el archivo, allí se encuentra la definición de la gramática abstracta (o una representación en Haskell de ella, existe algo así como la gramática abstracta?) junto con otros módulos útiles como la representación de Ω y funciones para manipular el estado. La tarea consiste en definir las funciones semánticas para cada categoría sintáctica IntExp, Assert y Comm. Asegurarse que el proyecto puede cargarse con GHCi o compilarse con GHC.

Mandar por mail antes del 15 de mayo a las direcciones hector.gramaglia arroba gmail punto com, miguel.pagano arroba gmail punto com y demetriomeister arroba gmail punto com. El asunto del mail debe ser lyc-2016: ApellidoNombre y debe contener un archivo adjunto ApellidoNombre.tar.bz2.

Recordar todas las buenas prácticas que aprendieron a lo largo de la carrera: modularización, abstracción, consistencia en el estilo de programación, comentarios.

Exámenes Parciales de años anteriores

2015
2013
2012
2011
2010
2009
compiladores/main.txt · Última modificación: 2018/04/16 14:16 por alegadea