module Skelsyntax where -- Haskell module generated by the BNF converter import Abssyntax import 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 transBool :: Bool -> Result transBool x = case x of True -> failure x False -> failure x transType :: Type -> Result transType x = case x of TInt -> failure x TBool -> failure x transProgram :: Program -> Result transProgram x = case x of Program funcstms -> failure x transStm :: Stm -> Result transStm x = case x of SExp exp -> failure x SBlock stms -> failure x SDecl type' id exp -> failure x SDeclD type' id -> failure x SWhile exp stm -> failure x SIf exp stm0 stm -> failure x SPrint exp -> failure x SReturn exp -> failure x SNoop -> failure x transExp :: Exp -> Result transExp x = case x of EAss id exp -> failure x EVar id -> failure x EInt n -> failure x EBool bool -> failure x ENeg exp -> failure x ENot exp -> failure x EReadI -> failure x EReadB -> failure x EFunc id exps -> failure x BiOpExp exp0 op exp -> failure x EPost id op -> failure x transDecl :: Decl -> Result transDecl x = case x of Decl type' id -> failure x transFunc :: Func -> Result transFunc x = case x of Func type' id decls stms -> failure x transFuncStm :: FuncStm -> Result transFuncStm x = case x of S stm -> failure x F func -> failure x transOp :: Op -> Result transOp x = case x of Lt -> failure x ELt -> failure x Gt -> failure x EGt -> failure x Eq -> failure x NEq -> failure x Plus -> failure x Minus -> failure x Times -> failure x Div -> failure x