Add week 02 assignment

This commit is contained in:
Dionisio E Alonso 2019-04-16 20:17:41 -03:00
parent fcdea11331
commit fd981ecb93
3 changed files with 55 additions and 0 deletions

24
Lab2/Lab2.hs Normal file
View File

@ -0,0 +1,24 @@
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE FlexibleInstances #-}
data Expr a = Const Int
| Mas (Expr a) (Expr a)
| Conj (Expr a) (Expr a)
class DomSem dom where
sem :: Expr dom -> dom
instance DomSem Int where
sem x = undefined
instance DomSem Bool where
sem x = undefined
type Iden = String
type State = Iden -> Int
instance DomSem (State -> Int) where
sem x = undefined
instance DomSem (State -> Bool) where
sem x = undefined

26
Lab2/README.md Normal file
View File

@ -0,0 +1,26 @@
# Laboratorio Lenguajes y Compiladores #
## Enunciado ##
Extender la implementación de la semántica denotacional para un lenguaje simple
de expresiones aritméticas y booleanas del Lab1 con variables enteras.
**Tarea**
Extender la sintaxis abstracta con un constructor para las variables
representadas con el tipo String y re-definir la función semántica
sem :: Expr dom -> dom
que implementa el significado de estas expresiones.
1. Agregar el constructor para variables.
2. Re-definir la función semántica considerando que ahora necesitamos un
estado para dar la denotación de las variables.
3. Implementar el "estado vacío".
4. Escribir y ejecutar algunos ejemplos.
## Uso ##
```console
$ ghci Lab2.hs
```

View File

@ -7,3 +7,8 @@ Week 01
lenguaje simple de expresiones aritméticas y booleanas. La tarea consiste en
definir la función sem que define la semántica para cada una de las
construcciones sintácticas.
Week 02
-------
**Lab2**: La tarea consiste en extender el lenguaje implementado en el Lab1 con
variables enteras.