diff options
Diffstat (limited to 'AST.hs')
-rw-r--r-- | AST.hs | 61 |
1 files changed, 0 insertions, 61 deletions
@@ -1,61 +0,0 @@ -module AST where - -import Data.List.NonEmpty (NonEmpty) - - -newtype Name = Name String - deriving (Show, Eq) - -data Program t = Program [DataDef] [FunDef t] - deriving (Show) - -data DataDef = DataDef Name [Name] [(Name, [Type])] - deriving (Show) - -data FunDef t = FunDef Name (Maybe Type) (NonEmpty (FunEq t)) - deriving (Show) - -data FunEq t = FunEq Name [Pattern t] (RHS t) - deriving (Show) - -data Type - = TApp Type [Type] - | TTup [Type] - | TList Type - | TFun Type Type - | TCon Name - | TVar Name - deriving (Show) - -data Pattern t - = PWildcard t - | PVar t Name - | PAs t Name (Pattern t) - | PCon t Name [Pattern t] - | PList t [Pattern t] - | PTup t [Pattern t] - deriving (Show) - -data RHS t - = Guarded [(Expr t, Expr t)] -- currently not parsed - | Plain (Expr t) - deriving (Show) - -data Expr t - = ELit t Literal - | EVar t Name - | ECon t Name - | EList t [Expr t] - | ETup t [Expr t] - | EApp t (Expr t) [Expr t] - | EOp t (Expr t) Operator (Expr t) - | EIf t (Expr t) (Expr t) (Expr t) - | ECase t (Expr t) [(Pattern t, RHS t)] - | ELet t [FunDef t] (Expr t) - deriving (Show) - -data Literal = LInt Integer | LFloat Rational | LChar Char | LString String - deriving (Show) - -data Operator = OAdd | OSub | OMul | ODiv | OMod | OEqu | OPow - deriving (Show) |