pec-0.1: Language/Pec/Abs.hs
module Language.Pec.Abs where
-- Haskell module generated by the BNF converter
newtype Frac = Frac String deriving (Eq,Ord,Show)
newtype Uident = Uident String deriving (Eq,Ord,Show)
newtype Lident = Lident String deriving (Eq,Ord,Show)
newtype USym = USym String deriving (Eq,Ord,Show)
newtype Number = Number String deriving (Eq,Ord,Show)
newtype Count = Count String deriving (Eq,Ord,Show)
data Module =
Module Modid ExportDecl [TopDecl]
deriving (Eq,Ord,Show)
data ExportDecl =
ExpAllD
| ExpListD [Export]
deriving (Eq,Ord,Show)
data Export =
TypeEx Con Spec
| VarEx Var
deriving (Eq,Ord,Show)
data Spec =
Neither
| Decon
| Both
deriving (Eq,Ord,Show)
data TopDecl =
ImportD Modid AsSpec
| ExternD ExtNm Var Type
| TypeD Con [TyVar] TyDecl
| AscribeD Var Type
| VarD Var Exp
| ProcD Var [Exp] Exp
deriving (Eq,Ord,Show)
data AsSpec =
AsAS Con
| EmptyAS
deriving (Eq,Ord,Show)
data ExtNm =
SomeNm String
| NoneNm
deriving (Eq,Ord,Show)
data Exp =
BlockE [Exp]
| LetS Exp Exp
| LetE Exp Exp Exp
| StoreE Exp Exp
| CaseE Exp [CaseAlt]
| BranchE [BranchAlt]
| BinOpE Exp USym Exp
| AppE Exp Exp
| UnOpE UnOp Exp
| IdxE Exp Exp
| FldE Exp Field
| ArrayE [Exp]
| RecordE [FieldD]
| TupleE [Exp]
| AscribeE Exp Type
| CountE Count
| VarE Var
| LitE Lit
deriving (Eq,Ord,Show)
data UnOp =
Load
deriving (Eq,Ord,Show)
data CaseAlt =
CaseAlt CasePat Exp
deriving (Eq,Ord,Show)
data CasePat =
ConP Con Var
| LitP Lit
| VarP Var
deriving (Eq,Ord,Show)
data BranchAlt =
BranchAlt BranchPat Exp
deriving (Eq,Ord,Show)
data BranchPat =
BoolBP Exp
| DefaultBP
deriving (Eq,Ord,Show)
data Type =
TyFun Type Type
| TyArray Type Type
| TyConstr Con [Type]
| TyTuple [Type]
| TyCount Count
| TyVarT TyVar
| TyConstr0 Con
deriving (Eq,Ord,Show)
data TyDecl =
TyRecord [FieldT]
| TyTagged [ConC]
| TySyn Type
deriving (Eq,Ord,Show)
data ConC =
ConC Con [Type]
deriving (Eq,Ord,Show)
data FieldT =
FieldT Field Type
deriving (Eq,Ord,Show)
data Lit =
CharL Char
| StringL String
| IntL Number
| FracL Frac
| EnumL Con
deriving (Eq,Ord,Show)
data FieldD =
FieldD Field Exp
deriving (Eq,Ord,Show)
data Var =
Var Lident
deriving (Eq,Ord,Show)
data Con =
Con Uident
deriving (Eq,Ord,Show)
data Modid =
Modid Uident
deriving (Eq,Ord,Show)
data Field =
Field Lident
deriving (Eq,Ord,Show)
data TyVar =
VarTV Lident
| CntTV Lident
deriving (Eq,Ord,Show)