packages feed

uhc-light-1.1.9.1: 103/lib/ag/EH/AbsSyn.ag

DATA AllNT
  | *               hsrange         : Range

DATA AGItf
  | AGItf           expr            : Expr

DATA Decl
  | TySig           nm              : {HsName}
                    tyExpr          : TyExpr
  | Val             patExpr         : PatExpr
                    expr            : Expr

TYPE Decls          = [Decl]

SET AllDecl         = Decl Decls

DATA Decl
  | Data            isNewtype       : {Bool}
                    tyNm            : {HsName}
                    tyVars          : TyVars
                    constrs         : DataConstrs
					mbGenerInfo		: {Maybe Int}		-- max kind arity for generic behavior, currently \in {0,1}

DATA Decl
  | KiSig           nm              : {HsName}
                    kiExpr          : KiExpr

DATA Decl
  | FFI             callconv        : {FFIWay}
                    safety          : {String}
                    impEnt          : {ForeignEnt}
                    nm              : {HsName}
                    tyExpr          : TyExpr

DATA Decl
  | Type            tyNm            : {HsName}
                    tyExpr          : TyExpr

DATA Decl
  | FFE             nm              : {HsName}
                    callconv        : {FFIWay}
                    expEnt          : {ForeignEnt}
                    expr            : Expr
                    tyExpr          : TyExpr

DATA Decl
  | GenerRep        maxArity		: {Int}						-- max required unsaturated type arguments
  					arity		    : {Int}						-- arity of this decl
  					tyNm            : {HsName}					-- type name
  					conNmL			: {[HsName]}				-- constructors + field names
  					recFldNmL		: {[(HsName,[HsName])]}		-- record constructors + field names

DATA Decl
  | FusionDecl      fuseNm          : {HsName}
                    -- with         : {HsName}
  | FusionConv      conNm           : {HsName}
                    absNm           : {HsName}

DATA TyExpr
  | Con             nm              : {HsName}
  | App             func            : TyExpr
                    arg             : TyExpr
  | AppTop          tyExpr          : TyExpr
  | Parens          tyExpr          : TyExpr
  | Ann             ann             : TyExprAnn
                    tyExpr          : TyExpr

DATA TyExpr
  | Wild											-- wildcard tyvar over which the TyExpr will not quantify, but later let binding will
  | Mono											-- same as Wild, but no quantification in the let binding either

DATA TyExpr
  | Var             nm              : {HsName}

DATA TyExpr
  | VarWild         nm              : {HsName}

DATA TyExpr
  | Quant           qu              : {TyQu}
                    tyVar           : {HsName}
                    tyExpr          : TyExpr

DATA TyExpr
  | Row             rowTyExpr       : RowTyExpr

DATA TyExpr
  | Pred            prExpr          : PrExpr
  | Impls
  | NoImpls

DATA TyExpr
  | Lam             tyVar           : {HsName}
                    tyExpr          : TyExpr

TYPE TyExprs        = [TyExpr]

DATA TyVar
  | Var             nm              : {HsName}

TYPE TyVars         = [TyVar]

SET AllTyVar        = TyVar TyVars

TYPE MbTyExpr       = MAYBE TyExpr

SET AllTyExpr
    = TyExpr
      -- TyExprAnn
      TyExprs
      RowTyExpr
      PrExpr PrExprs
      MbTyExpr

DATA DataFieldExpr
  | Upd             dataFieldExpr   : DataFieldExpr
                    nm              : {HsName}
                    expr            : Expr
  | Con             nm              : {HsName}
  | Expr            expr            : Expr

DATA DataFieldPatExpr
  | Ext             dataFieldPatExpr: DataFieldPatExpr
                    nm              : {HsName}
                    patExpr         : PatExpr
  | Con             nm              : {HsName}

DATA RecExpr
  | Empty
  | Ext             recExpr         : RecExpr
                    mbNm            : {Maybe HsName}
                    expr            : Expr
  | Upd             recExpr         : RecExpr
                    nm              : {HsName}
                    expr            : Expr
  | Expr            expr            : Expr

DATA RecPatExpr
  | Empty
  | Ext             recPatExpr      : RecPatExpr
                    mbNm            : {Maybe HsName}
                    patExpr         : PatExpr
  | Expr            patExpr         : PatExpr

DATA RowTyExpr
  | Empty
  | Ext             rowTyExpr       : RowTyExpr
                    mbNm            : {Maybe HsName}
                    tyExpr          : TyExpr

DATA RowTyExpr
  | Var             nm              : {HsName}

DATA PrExpr
  | Class           nm              : {HsName}
                    tyExprs         : TyExprs
  | Arrow           arg             : PrExpr
                    res             : PrExpr
  | Forall          tyVar           : {HsName}
                    prExpr          : PrExpr

TYPE PrExprs        = [PrExpr]

DATA PrExpr
  | Lacks           rowTyExpr       : RowTyExpr
                    nm              : {HsName}
  | DynVar          nm              : {HsName}
                    tyExpr          : TyExpr

DATA PrExpr
  | Eq              tyExpr1         : TyExpr
                    tyExpr2         : TyExpr

SET AllPrExpr       = PrExpr PrExprs

DATA KiExpr
  | Con             nm              : {HsName}
  | Var             nm              : {HsName}
  | App             func            : KiExpr
                    arg             : KiExpr
  | AppTop          kiExpr          : KiExpr
  | Parens          kiExpr          : KiExpr
  | Ann             ann             : KiExprAnn
                    kiExpr          : KiExpr

SET AllKiExpr
  = KiExpr
    -- KiExprAnn

DATA Expr
  | IConst          int             : {Int}
  | CConst          char            : {Char}
  | Con             nm              : {HsName}
  | Var             nm              : {HsName}
  | App             func            : Expr
                    arg             : Expr
  | Let             isStrict        : {Bool}
                    decls           : Decls
                    body            : Expr
  | Lam             arg             : PatExpr
                    body            : Expr
  | AppTop          expr            : Expr
  | Parens          expr            : Expr
  | TypeAs          isScoped		: {Bool}			-- ^ Are the type vars in 'tyExpr' to be lexically scoped? Used for: f a :: t = e, rewritten to \a -> (e :: t)
                    tyExpr          : TyExpr
                    expr            : Expr
  | Ann             ann             : ExprAnn
                    expr            : Expr

DATA Expr
  | AppImpred       func            : Expr
                    arg             : Expr

DATA Expr
  | SConst          str             : {String}
  | Case            expr            : Expr
                    alts            : CaseAlts
                    mbCaseIds       : {Maybe UIDS}
                    caseFailS       : {UIDS}			-- can fail on these fail ids, encodes that this case implements a guard
                    isTupOfArg      : {Bool}			-- tupling, only done as uncurry of arguments of lambda

DATA Expr
  | DataFields      dataFieldExpr   : DataFieldExpr
  | Rec             recExpr         : RecExpr
  | Sel             expr            : Expr
                    lbl             : {HsName}

DATA Expr
  | Undefined
  | CaseAltFail     caseId          : {UID}

DATA Expr
  | AppImpl         func            : Expr
                    argPr           : PrExpr
                    arg             : Expr
  | LamImpl         argPr           : PrExpr
                    arg             : PatExpr
                    body            : Expr

DATA Expr
  | DynVar          nm              : {HsName}

DATA Expr
  | IIConst         integer         : {Integer}

SET AllExpr
    = Expr
      -- ExprAnn
      RecExpr DataFieldExpr

DATA PatExpr
  | IConst          int             : {Int}
  | CConst          char            : {Char}
  | Con             nm              : {HsName}
  | Var             nm              : {HsName}
  | VarAs           nm              : {HsName}
                    patExpr         : PatExpr
  | App             func            : PatExpr
                    arg             : PatExpr
  | AppTop          patExpr         : PatExpr
  | Parens          patExpr         : PatExpr
  | Ann             ann             : PatExprAnn
                    patExpr         : PatExpr

DATA PatExpr
  | TypeAs          tyExpr          : TyExpr
                    patExpr         : PatExpr

DATA PatExpr
  | SConst          str             : {String}

DATA PatExpr
  | Rec             recPatExpr      : RecPatExpr
  | DataFields      dataFieldPatExpr: DataFieldPatExpr

DATA PatExpr
  | Irrefutable     patExpr         : PatExpr
  | Bang	     	patExpr         : PatExpr

DATA PatExpr
  | Expr            expr            : Expr
                    mbConst         : {Maybe SrcConst}

SET AllPatExpr
    = PatExpr
      -- PatExprAnn
      RecPatExpr DataFieldPatExpr

DATA CaseAlt
  | Pat             patExpr         : PatExpr
                    expr            : Expr

TYPE CaseAlts       = [CaseAlt]

SET AllCase         = CaseAlt CaseAlts

DATA DataConstr
  | Constr          conNm           : {HsName}
                    mbFixityPrio    : {Maybe (Int,Fixity)}       -- Nothing: not infix
                    fields          : DataFields
					mbGadtTyExpr	: MbTyExpr			-- the constrained result ty for GADT

TYPE DataConstrs    = [DataConstr]

DATA DataField
  | Field           mbLabels        : {Maybe [HsName]}
                    tyExpr          : TyExpr

TYPE DataFields     = [DataField]

SET AllDataConstr   = DataConstr DataConstrs

SET AllDataField    = DataField DataFields

SET AllData
    = AllDataConstr
      AllDataField

DATA Decl
  | Class           clNm			: HsName
                    tyPrExpr        : TyExpr
                    funcDeps        : FuncDeps
                    mbDefaultInstNm : {Maybe HsName}
                    decls           : Decls
					generDerivs		: {[(HsName,HsName)]}			-- generically derivable fields, with their default
  | Instance        mbNmElim        : {Maybe (HsName,Bool)}
                    instVariant     : InstVariant
                    tyPrExpr        : TyExpr
                    decls           : Decls
  | InstanceIntro   mbNmElim        : {Maybe (HsName)}
                    expr            : Expr
                    prExpr          : PrExpr
  | Default         nm              : HsName
                    tyExprs         : TyExprs

DATA FuncDep
  | Dep             fromTvs         : TyVars
                    toTvs           : TyVars

TYPE FuncDeps       = [FuncDep]

SET AllFuncDep      = FuncDep FuncDeps

DATA ExprAnn
  | Empty

DATA TyExprAnn
  | Empty
  | Strictness      strictness      : Strictness

DATA PatExprAnn
  | Empty

DATA KiExprAnn
  | Empty

SET AllAnn
    = ExprAnn TyExprAnn PatExprAnn
      KiExprAnn

SET AllNT
    = AllTyExpr AllDecl AllPatExpr AllExpr
      AllData AllCase AllTyVar
      AllKiExpr
      AllFuncDep

SET NTCode
    = AllDecl AllExpr AllCase AllPatExpr

SET NTPrf
    = NTCode AllData