l-c2019/Lab4
Dionisio E Alonso 380c9bdabb feat(coding-style): Correct coding style 2023-04-19 22:49:55 -03:00
..
Lab4.hs feat(coding-style): Correct coding style 2023-04-19 22:49:55 -03:00
README.md Correct README.md syntax 2019-04-17 20:06:42 +00:00
samples.rst Update samples.rst 2019-04-18 22:28:35 -03:00

README.md

Laboratorio Lenguajes y Compiladores

Enunciado

Implementar la semántica denotacional para el lenguaje imperativo simple con fallas (LIS + Fallas) extendiendo el lenguaje imperativo extremadamente simple (LIES) con while, newvar, fail y catch.

Tarea Extender la sintaxis abstracta con los constructores correspondientes y re-definir la función semántica

sem :: Expr dom → Σ → dom

que implementa el significado de estas expresiones; implementar las instancias de la clase DomSem para Int, Bool y Σ'.

  1. Acomodar los constructores de manera que su tipo cargue con información más precisa. Salvo ya se les haya ocurrido hacerlo ;) Por ejemplo, originalmente teníamos definido el constructor

    Mas :: (Expr a) -> (Expr a) -> (Expr a)
    

    utilizando GADTs podemos escribir su tipo de forma más precisa

    Mas :: (Expr Int) -> (Expr Int) -> (Expr Int)
    
  2. Agregar los constructores utilizando GADTs

  3. Implementar las funciones estrella (*.), daga (†.) y mas (+.).

  4. Implementar la función semántica para las nuevas construcciones.

  5. Escribir y ejecutar algunos ejemplos.

Uso

$ ghci Lab4.hs