Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
197 lines (167 sloc) 3.65 KB
module HaskellAbsSyn where
data Modul
= Module Modid (Maybe [Export]) ([Impdecl], [Decl])
deriving (Show, Read, Eq)
data Export
= ExportQVar Id
| ExportType Qtycon Details
| ExportModule Modid
deriving (Show, Read, Eq)
data Impdecl
= Import (Maybe String) Modid (Maybe Modid) (Maybe [Import])
deriving (Show, Read, Eq)
data Import
= ImportVar Id
| ImportType Tycon Details
deriving (Show, Read, Eq)
data Qualtype
= QualType [Type] Type
deriving (Show, Read, Eq)
data Fixity
= InfixL
| InfixR
| Infix
deriving (Show, Read, Eq)
data Gtycon
= GTycon Qtycon
| UnitTycon
| ListTycon
| FunTycon
| TupleTycon [Char]
deriving (Show, Read, Eq)
data Simpletype
= SimpleType Tycon [Tyvar]
deriving (Show, Read, Eq)
data Constr
= Constr Id [(Strictness, Type)]
| ConstrFields Id [([Id], (Strictness, Type))]
deriving (Show, Read, Eq)
data Strictness
= Lazy
| Strict
deriving (Show, Read, Eq)
data Newconstr
= NewConstr Id Type
| NewConstrField Id Id Type
deriving (Show, Read, Eq)
data Inst
= ConInst Gtycon [Tyvar]
| TupleInst [Tyvar]
| ListInst Tyvar
| FunInst Tyvar Tyvar
deriving (Show, Read, Eq)
data Rhs
= Rhs Exp [Decl]
| GdRhs [(Exp, Exp)] [Decl]
deriving (Show, Read, Eq)
data Alt
= Alt Pat Exp [Decl]
| GdAlt Pat [(Exp, Exp)] [Decl]
deriving (Show, Read, Eq)
data Gcon
= UnitCon
| NilCon
| TupleCon [Char]
| QCon Id
deriving (Show, Read, Eq)
data Modid
= ModId String
deriving (Show, Read, Eq)
data Qtycon
= QTycon String
deriving (Show, Read, Eq)
data Tycon
= Tycon String
deriving (Show, Read, Eq)
data Tyvar
= Tyvar String
deriving (Show, Read, Eq)
data Tycls
= Tycls String
deriving (Show, Read, Eq)
data Details
= NoDetails
| AllDetails
| SpecificDetails [Id]
deriving (Show, Read, Eq)
data Id
= Id String
| SymId String
| QId String
| QdSymId String
| ConId String
| ConsymId String
| QConId String
| QConsymId String
| Op String
| IdOp String
| QOp String
| QIdOp String
| ConOp String
| ConIdOp String
| QConOp String
| QConIdOp String
deriving (Show, Read, Eq)
data Decl
= Type Simpletype Type
| Data [Type] Simpletype [Constr] (Maybe [QTycls])
| Newtype [Type] Simpletype Newconstr (Maybe [QTycls])
| Class [Type] Tycls Tyvar (Maybe [Decl])
| Instance [Type] QTycls Inst (Maybe [Decl])
| Default [Type]
| FunDecl (Id, [Pat]) Rhs
| PatDecl Pat Rhs
| TypeSig [Id] Qualtype
| Fixity Fixity (Maybe String) [Id]
deriving (Show, Read, Eq)
data Type
= FunType Type Type
| AppType Type Type
| ConType Gtycon
| VarType Tyvar
| TupleType [Type]
| ListType Type
deriving (Show, Read, Eq)
data Exp
= TypedExp Exp Qualtype
| OpExp Exp Id Exp
| NegExp Exp
| Lambda [Pat] Exp
| Let [Decl] Exp
| If Exp Exp Exp
| Case Exp [Alt]
| Do ([Qual], Exp)
| App Exp Exp
| VarExp Id
| ConExp Gcon
| Lit String
| ParenExp Exp
| TupleExp [Exp]
| ListExp [Exp]
| Seq Exp (Maybe Exp) (Maybe Exp)
| LSection Exp Id
| RSection Id Exp
| FieldUpd Exp [(Id, Exp)]
deriving (Show, Read, Eq)
data Qual
= GenQual Exp Exp
| LetQual [Decl]
| GdGual Exp
deriving (Show, Read, Eq)
data Pat
= OpPat Pat Id Pat
| NegPat Pat
| VarPat Id
| As Id Pat
| ConPat Gcon [Pat]
| FieldPat Id [(Id, Pat)]
| LitPat String
| Wildcard
| ParenPat Pat
| TuplePat [Pat]
| ListPat [Pat]
| IrrPat Pat
deriving (Show, Read, Eq)
data QTycls
= QTycls String
deriving (Show, Read, Eq)