| module Language.AST where | |
| data Ident = Ident String | |
| deriving (Eq, Ord, Show) | |
| data Expr | |
| = EVar Ident | |
| | ENand Expr Expr | |
| | ELit Bool | |
| | EApp Ident [Expr] | |
| deriving (Eq, Show) | |
| data Stmt | |
| = SDef Ident [Ident] Expr | |
| | SAssert Expr | |
| | SProve Ident Expr | |
| deriving (Eq, Show) | |
| data Module = Module | |
| { moduleName :: String | |
| , moduleStmts :: [Stmt] | |
| } deriving (Show) | |
| identName :: Ident -> String | |
| identName (Ident s) = s | |