-- File generated by the BNF Converter. -- Templates for pattern matching on abstract syntax {-# OPTIONS_GHC -fno-warn-unused-matches #-} module SkelC4 where import Prelude (($), Either(..), String, (++), Show, show) import qualified AbsC4 type Err = Either String type Result = Err String failure :: Show a => a -> Result failure x = Left $ "Undefined case: " ++ show x transIdent :: AbsC4.Ident -> Result transIdent x = case x of AbsC4.Ident string -> failure x transProgr :: Show a => AbsC4.Progr' a -> Result transProgr x = case x of AbsC4.Program _ decs stms -> failure x transDec :: Show a => AbsC4.Dec' a -> Result transDec x = case x of AbsC4.Decl _ typ idents -> failure x transStm :: Show a => AbsC4.Stm' a -> Result transStm x = case x of AbsC4.SAss _ x exp -> failure x AbsC4.SAssT _ typ x exp -> failure x AbsC4.SBlock _ decs stms -> failure x AbsC4.SDec _ dec -> failure x AbsC4.SDecr _ x -> failure x AbsC4.SIf _ exp stm1 stm2 -> failure x AbsC4.SIncr _ x -> failure x AbsC4.SPrint _ exp -> failure x AbsC4.SReturn _ exp -> failure x AbsC4.SReturnT _ typ exp -> failure x AbsC4.SWhile _ exp stm -> failure x transExp :: Show a => AbsC4.Exp' a -> Result transExp x = case x of AbsC4.EChar _ c -> failure x AbsC4.EDouble _ d -> failure x AbsC4.EInt _ n -> failure x AbsC4.EOpA _ exp1 op exp2 -> failure x AbsC4.EOpB _ exp1 op exp2 -> failure x AbsC4.EOpC _ exp1 op exp2 -> failure x AbsC4.EOpD _ exp1 op exp2 -> failure x AbsC4.EOpE _ exp1 op exp2 -> failure x AbsC4.EString _ str -> failure x AbsC4.EVar _ x -> failure x transOp :: Show a => AbsC4.Op' a -> Result transOp x = case x of AbsC4.OAnd _ -> failure x AbsC4.OEq _ -> failure x AbsC4.OGt _ -> failure x AbsC4.OLt _ -> failure x AbsC4.OMinus _ -> failure x AbsC4.OOr _ -> failure x AbsC4.OPlus _ -> failure x AbsC4.OTimes _ -> failure x transTyp :: Show a => AbsC4.Typ' a -> Result transTyp x = case x of AbsC4.TDouble _ -> failure x AbsC4.TInt _ -> failure x