module Extract.Skel where -- Haskell module generated by the BNF converter import Extract.Abs import Extract.ErrM type Result = Err String failure :: Show a => a -> Result failure x = Bad $ "Undefined case: " ++ show x transIdent :: Ident -> Result transIdent x = case x of Ident str -> failure x transGrammar :: Grammar -> Result transGrammar x = case x of Grammar defs -> failure x transDef :: Def -> Result transDef x = case x of Paradigm id env head logic -> failure x RParadigm id env head logic -> failure x Regdef id reg -> failure x Cxtdef id clogic -> failure x transEnv :: Env -> Result transEnv x = case x of Env bindings -> failure x Empty -> failure x transBinding :: Binding -> Result transBinding x = case x of Assoc id reg -> failure x transPattern :: Pattern -> Result transPattern x = case x of CWord items constraint -> failure x transItem :: Item -> Result transItem x = case x of StrC str -> failure x Var id -> failure x transPatt :: Patt -> Result transPatt x = case x of PWild -> failure x PId id -> failure x PC id patts -> failure x transHead :: Head -> Result transHead x = case x of Head patterns -> failure x transConstraint :: Constraint -> Result transConstraint x = case x of Cons clogic -> failure x ConsId id -> failure x NoCons -> failure x transCLogic :: CLogic -> Result transCLogic x = case x of CConj clogic1 clogic2 -> failure x CDisj clogic1 clogic2 -> failure x CNeg clogic -> failure x CLWild -> failure x CAtom position reg unique patt -> failure x transUnique :: Unique -> Result transUnique x = case x of U -> failure x NU -> failure x transPosition :: Position -> Result transPosition x = case x of WPos -> failure x Pos pos -> failure x VPos id pos -> failure x RVPos id1 id2 pos3 -> failure x Rel id pos -> failure x transPos :: Pos -> Result transPos x = case x of P n -> failure x PP n -> failure x NP n -> failure x PStar n -> failure x NPStar n -> failure x Star -> failure x transLogic :: Logic -> Result transLogic x = case x of Conj logic1 logic2 -> failure x Disj logic1 logic2 -> failure x Neg logic -> failure x LWild -> failure x Atom pattern -> failure x transReg :: Reg -> Result transReg x = case x of RAlt reg1 reg2 -> failure x RMinus reg1 reg2 -> failure x RSeq reg1 reg2 -> failure x RStar reg -> failure x RPlus reg -> failure x ROpt reg -> failure x REps -> failure x RChar c -> failure x RAlts str -> failure x RDigit -> failure x RLetter -> failure x RUpper -> failure x RLower -> failure x RAny -> failure x Wild -> failure x RStr str -> failure x RegVar id -> failure x