-- UUAGC 0.9.32 (src/Ast.ag) module Ast where {-# LINE 8 "src/Ast.ag" #-} import Common {-# LINE 10 "dist/src/sdist.34564/ruler-core-1.0/dist/build/ruler-core/ruler-core-tmp/Ast.hs" #-} -- AliasType --------------------------------------------------- data AliasType = AliasType_List !(Ident) | AliasType_Maybe !(Ident) | AliasType_Prod !(([Ident])) -- Attr -------------------------------------------------------- data Attr = Attr_Inh !(Ident) !(String) | Attr_Syn !(Ident) !(String) -- AttrTypeCode ------------------------------------------------ data AttrTypeCode = AttrTypeCode_Child | AttrTypeCode_Lhs | AttrTypeCode_ProdLocal | AttrTypeCode_VisLocal | AttrTypeCode_Visit -- AttrTypePat ------------------------------------------------- data AttrTypePat = AttrTypePat_Child | AttrTypePat_Lhs | AttrTypePat_ProdLocal | AttrTypePat_VisLocal | AttrTypePat_Visit -- Attrs ------------------------------------------------------- type Attrs = [Attr ] -- Bind -------------------------------------------------------- data Bind = Bind_Fun | Bind_Monadic -- Block ------------------------------------------------------- data Block = Block_Data !(Data ) | Block_DataSem !(DataSem ) | Block_Item !(Ident) !(Item ) | Block_Itf !(Itf ) | Block_Section !(Code ) | Block_Type !(Type ) -- Blocks ------------------------------------------------------ type Blocks = [Block ] -- BlocksTop --------------------------------------------------- data BlocksTop = BlocksTop_None | BlocksTop_Top !(Blocks ) -- BoundCode --------------------------------------------------- data BoundCode = BoundCode_Code !(Bind ) !(Pos) !(Code ) -- Clause ------------------------------------------------------ data Clause = Clause_Clause !(Pos) !(Ident) !(Stmts ) !(SemVisit ) -- Clauses ----------------------------------------------------- type Clauses = [Clause ] -- ClausesTop -------------------------------------------------- data ClausesTop = ClausesTop_Impl !(Clauses) | ClausesTop_Top !(Clauses ) -- Code -------------------------------------------------------- data Code = Code_Code !(Items ) -- Con --------------------------------------------------------- data Con = Con_Con !(Pos) !(Ident) !(Vars ) !(Fields ) -- Cons -------------------------------------------------------- type Cons = [Con ] -- Data -------------------------------------------------------- data Data = Data_Data !(Pos) !(Ident) !(Vars ) !(Cons ) !(Exts ) -- DataSem ----------------------------------------------------- data DataSem = DataSem_Sem !(Pos) !(Ident) !(Vars ) !((Maybe String)) !(Bool) !(Stmts) !(ClausesTop ) -- ExprField --------------------------------------------------- data ExprField = ExprField_Field !(Ident) !(Code ) -- ExprFields -------------------------------------------------- type ExprFields = [ExprField ] -- Ext --------------------------------------------------------- data Ext = Ext_Ext !(Ident) -- Exts -------------------------------------------------------- type Exts = [Ext ] -- Field ------------------------------------------------------- data Field = Field_Field !(Ident) !(FieldType ) -- FieldType --------------------------------------------------- data FieldType = FieldType_Nonterm !(Ident) | FieldType_Term !(String) -- Fields ------------------------------------------------------ type Fields = [Field ] -- ImplStmt ---------------------------------------------------- data ImplStmt = ImplStmt_DefaultChild !(Pos) !(Bool) !(Ident) !(Ident) !((Maybe Int)) | ImplStmt_DefaultSyn !(Pos) !(Bool) !(Ident) !((Maybe Int)) | ImplStmt_DefaultVisLocal !(Pos) !(Ident) | ImplStmt_Invoke !(Pos) !(Ident) !(Ident) !(Ident) -- ImplStmts --------------------------------------------------- type ImplStmts = [ImplStmt ] -- Item -------------------------------------------------------- data Item = Item_Attr !(Pos) !(Ident) !(Ident) | Item_Brackets !(Pos) !(Items ) !(Pos) | Item_CoSem !(Pos) !(Ident) !(Ident) !(Ident) !(Vars ) !((Maybe String)) !(SemVisit ) | Item_Construct !(Pos) !(Ident) !(Ident) !(ExprFields ) | Item_DataSem !(DataSem ) | Item_Detach !(Pos) !(Ident) !(Ident) | Item_Plain !(Pos) !(String) | Item_Sem !(Pos) !(Ident) !(Ident) !(Vars ) !((Maybe String)) !(SemVisit ) -- Items ------------------------------------------------------- type Items = [Item ] -- Itf --------------------------------------------------------- data Itf = Itf_Itf !(Pos) !(Ident) !(Vars ) !(ItfVisits ) -- ItfVisit ---------------------------------------------------- data ItfVisit = ItfVisit_Visit !(Pos) !(Ident) !(Bool) !(Vars ) !(Attrs ) -- ItfVisits --------------------------------------------------- type ItfVisits = [ItfVisit ] -- MaybeBoundCode ---------------------------------------------- type MaybeBoundCode = Maybe BoundCode -- Mode -------------------------------------------------------- data Mode = Mode_Assert | Mode_Match -- Pat --------------------------------------------------------- data Pat = Pat_Attr !(Ident) !(Ident) | Pat_AttrCon !(Ident) !(Ident) !(Ident) | Pat_Con !(Ident) !(Pats ) | Pat_Cons !(Pat ) !(Pat ) | Pat_List !(Pats ) | Pat_Tup !(Pats ) | Pat_Underscore !(Pos) -- Pats -------------------------------------------------------- type Pats = [Pat ] -- Program ----------------------------------------------------- data Program = Program_Program !(BlocksTop ) -- Rename ------------------------------------------------------ data Rename = Rename_Rename !(Ident) !(Ident) -- Renames ----------------------------------------------------- type Renames = [Rename ] -- SemCon ------------------------------------------------------ data SemCon = SemCon_Con !(Pos) !(Ident) !(SemFields ) -- SemCons ----------------------------------------------------- type SemCons = [SemCon ] -- SemField ---------------------------------------------------- data SemField = SemField_Field !(Pos) !(Ident) !((Either Ident String)) -- SemFields --------------------------------------------------- type SemFields = [SemField ] -- SemVisit ---------------------------------------------------- data SemVisit = SemVisit_End | SemVisit_Impl | SemVisit_Internal !(Pos) !(Ident) !(Bool) !(Stmts ) !(ClausesTop ) | SemVisit_Prependable !(Pos) !(Ident) !(SemVisit) | SemVisit_Visit !(Pos) !(Ident) !(Bool) !(VisitAttrs ) !(Stmts ) !(ClausesTop ) -- Stmt -------------------------------------------------------- data Stmt = Stmt_Attach !(Pos) !((Maybe Ident)) !(Ident) !(Ident) !(MaybeBoundCode ) | Stmt_Default !(Bool) !(Pos) !(Ident) !(MaybeBoundCode ) | Stmt_Eval !(Mode ) !(Pat ) !(BoundCode ) | Stmt_Invoke !(Pos) !(Ident) !(Ident) !(MaybeBoundCode ) | Stmt_Rename !(Pos) !(Ident) !(Renames ) -- Stmts ------------------------------------------------------- type Stmts = [Stmt ] -- Type -------------------------------------------------------- data Type = Type_Alias !(Pos) !(Ident) !(AliasType ) !(Vars ) -- Var --------------------------------------------------------- data Var = Var_Var !(Ident) -- Vars -------------------------------------------------------- type Vars = [Var ] -- VisitAttr --------------------------------------------------- data VisitAttr = VisitAttr_Chn !(Ident) !(String) -- VisitAttrs -------------------------------------------------- type VisitAttrs = [VisitAttr ]