-- File generated by the BNF Converter. -- Templates for pattern matching on abstract syntax {-# LANGUAGE GADTs #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} module SkelAlfa where import Prelude (($), Either(..), String, (++), Show, show) import qualified AbsAlfa type Err = Either String type Result = Err String failure :: Show a => a -> Result failure x = Left $ "Undefined case: " ++ show x transTree :: AbsAlfa.Tree c -> Result transTree t = case t of AbsAlfa.DDef defAttrs def -> failure t AbsAlfa.DImp import_ -> failure t AbsAlfa.Axiom aIdent typings exp -> failure t AbsAlfa.Binding aIdent exp -> failure t AbsAlfa.Commt comment -> failure t AbsAlfa.Data aIdent typings constructors -> failure t AbsAlfa.Mutual defs -> failure t AbsAlfa.Open exp openArgs -> failure t AbsAlfa.Package aIdent typings packageBody -> failure t AbsAlfa.Type aIdent typings exp -> failure t AbsAlfa.Value aIdent varDecls exp1 exp2 -> failure t AbsAlfa.EAbs varDecl arrow exp -> failure t AbsAlfa.EAbsUnt aIdents arrow exp -> failure t AbsAlfa.EApp exp1 exp2 -> failure t AbsAlfa.ECase exp branchs -> failure t AbsAlfa.EChar c -> failure t AbsAlfa.ECommL comment exp -> failure t AbsAlfa.ECommR exp comment -> failure t AbsAlfa.ECon aIdent -> failure t AbsAlfa.EConst aIdent -> failure t AbsAlfa.EDouble d -> failure t AbsAlfa.EFun exp1 arrow exp2 -> failure t AbsAlfa.EIData varDecls indConstructors -> failure t AbsAlfa.EInfix exp1 infix_ exp2 -> failure t AbsAlfa.EInt n -> failure t AbsAlfa.ELet decls exp -> failure t AbsAlfa.EMeta -> failure t AbsAlfa.EMetaN n -> failure t AbsAlfa.EMetaU -> failure t AbsAlfa.EOpen exp1 openArgs exp2 -> failure t AbsAlfa.EPi varDecl arrow exp -> failure t AbsAlfa.EProj exp aIdent -> failure t AbsAlfa.ESet -> failure t AbsAlfa.ESig fieldDecls -> failure t AbsAlfa.EStar n -> failure t AbsAlfa.EStr bindings -> failure t AbsAlfa.EString str -> failure t AbsAlfa.ESum constructors -> failure t AbsAlfa.EType -> failure t AbsAlfa.EVar aIdent -> failure t AbsAlfa.AHide -> failure t AbsAlfa.AShow -> failure t AbsAlfa.TDecl varDecl -> failure t AbsAlfa.TExp exp -> failure t AbsAlfa.VDecl bounds exp -> failure t AbsAlfa.BHide aIdent -> failure t AbsAlfa.BVar aIdent -> failure t AbsAlfa.FDecl aIdent exp -> failure t AbsAlfa.BranchCon aIdent aIdents exp -> failure t AbsAlfa.BranchInf aIdent1 infix_ aIdent2 exp -> failure t AbsAlfa.BranchVar aIdent exp -> failure t AbsAlfa.Cnstr aIdent typings -> failure t AbsAlfa.ICnstr aIdent typings exps -> failure t AbsAlfa.Bind aIdent exp -> failure t AbsAlfa.PackageDef decls -> failure t AbsAlfa.PackageInst exp -> failure t AbsAlfa.OArg defAttrs aIdent -> failure t AbsAlfa.OArgD defAttrs aIdent exp -> failure t AbsAlfa.OArgT defAttrs aIdent exp -> failure t AbsAlfa.OArgTD defAttrs aIdent exp1 exp2 -> failure t AbsAlfa.Abstract -> failure t AbsAlfa.Concrete -> failure t AbsAlfa.Private -> failure t AbsAlfa.Public -> failure t AbsAlfa.Import str -> failure t AbsAlfa.F pIdent -> failure t AbsAlfa.I infix_ -> failure t transComment :: AbsAlfa.Comment -> Result transComment x = case x of AbsAlfa.Comment string -> failure x transInfix :: AbsAlfa.Infix -> Result transInfix x = case x of AbsAlfa.Infix string -> failure x transPIdent :: AbsAlfa.PIdent -> Result transPIdent x = case x of AbsAlfa.PIdent string -> failure x transDecl :: AbsAlfa.Decl -> Result transDecl x = case x of AbsAlfa.DDef defAttrs def -> failure x AbsAlfa.DImp import_ -> failure x transDef :: AbsAlfa.Def -> Result transDef x = case x of AbsAlfa.Axiom aIdent typings exp -> failure x AbsAlfa.Binding aIdent exp -> failure x AbsAlfa.Commt comment -> failure x AbsAlfa.Data aIdent typings constructors -> failure x AbsAlfa.Mutual defs -> failure x AbsAlfa.Open exp openArgs -> failure x AbsAlfa.Package aIdent typings packageBody -> failure x AbsAlfa.Type aIdent typings exp -> failure x AbsAlfa.Value aIdent varDecls exp1 exp2 -> failure x transExp :: AbsAlfa.Exp -> Result transExp x = case x of AbsAlfa.EAbs varDecl arrow exp -> failure x AbsAlfa.EAbsUnt aIdents arrow exp -> failure x AbsAlfa.EApp exp1 exp2 -> failure x AbsAlfa.ECase exp branchs -> failure x AbsAlfa.EChar c -> failure x AbsAlfa.ECommL comment exp -> failure x AbsAlfa.ECommR exp comment -> failure x AbsAlfa.ECon aIdent -> failure x AbsAlfa.EConst aIdent -> failure x AbsAlfa.EDouble d -> failure x AbsAlfa.EFun exp1 arrow exp2 -> failure x AbsAlfa.EIData varDecls indConstructors -> failure x AbsAlfa.EInfix exp1 infix_ exp2 -> failure x AbsAlfa.EInt n -> failure x AbsAlfa.ELet decls exp -> failure x AbsAlfa.EMeta -> failure x AbsAlfa.EMetaN n -> failure x AbsAlfa.EMetaU -> failure x AbsAlfa.EOpen exp1 openArgs exp2 -> failure x AbsAlfa.EPi varDecl arrow exp -> failure x AbsAlfa.EProj exp aIdent -> failure x AbsAlfa.ESet -> failure x AbsAlfa.ESig fieldDecls -> failure x AbsAlfa.EStar n -> failure x AbsAlfa.EStr bindings -> failure x AbsAlfa.EString str -> failure x AbsAlfa.ESum constructors -> failure x AbsAlfa.EType -> failure x AbsAlfa.EVar aIdent -> failure x transArrow :: AbsAlfa.Arrow -> Result transArrow x = case x of AbsAlfa.AHide -> failure x AbsAlfa.AShow -> failure x transTyping :: AbsAlfa.Typing -> Result transTyping x = case x of AbsAlfa.TDecl varDecl -> failure x AbsAlfa.TExp exp -> failure x transVarDecl :: AbsAlfa.VarDecl -> Result transVarDecl x = case x of AbsAlfa.VDecl bounds exp -> failure x transBound :: AbsAlfa.Bound -> Result transBound x = case x of AbsAlfa.BHide aIdent -> failure x AbsAlfa.BVar aIdent -> failure x transFieldDecl :: AbsAlfa.FieldDecl -> Result transFieldDecl x = case x of AbsAlfa.FDecl aIdent exp -> failure x transBranch :: AbsAlfa.Branch -> Result transBranch x = case x of AbsAlfa.BranchCon aIdent aIdents exp -> failure x AbsAlfa.BranchInf aIdent1 infix_ aIdent2 exp -> failure x AbsAlfa.BranchVar aIdent exp -> failure x transConstructor :: AbsAlfa.Constructor -> Result transConstructor x = case x of AbsAlfa.Cnstr aIdent typings -> failure x transIndConstructor :: AbsAlfa.IndConstructor -> Result transIndConstructor x = case x of AbsAlfa.ICnstr aIdent typings exps -> failure x transBinding :: AbsAlfa.Binding -> Result transBinding x = case x of AbsAlfa.Bind aIdent exp -> failure x transPackageBody :: AbsAlfa.PackageBody -> Result transPackageBody x = case x of AbsAlfa.PackageDef decls -> failure x AbsAlfa.PackageInst exp -> failure x transOpenArg :: AbsAlfa.OpenArg -> Result transOpenArg x = case x of AbsAlfa.OArg defAttrs aIdent -> failure x AbsAlfa.OArgD defAttrs aIdent exp -> failure x AbsAlfa.OArgT defAttrs aIdent exp -> failure x AbsAlfa.OArgTD defAttrs aIdent exp1 exp2 -> failure x transDefAttr :: AbsAlfa.DefAttr -> Result transDefAttr x = case x of AbsAlfa.Abstract -> failure x AbsAlfa.Concrete -> failure x AbsAlfa.Private -> failure x AbsAlfa.Public -> failure x transImport :: AbsAlfa.Import -> Result transImport x = case x of AbsAlfa.Import str -> failure x transAIdent :: AbsAlfa.AIdent -> Result transAIdent x = case x of AbsAlfa.F pIdent -> failure x AbsAlfa.I infix_ -> failure x