-- File generated by the BNF Converter. -- Templates for pattern matching on abstract syntax {-# LANGUAGE GADTs #-} {-# 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 transTree :: AbsC4.Tree c -> Result transTree t = case t of AbsC4.Program decs stms -> failure t AbsC4.Decl typ idents -> failure t AbsC4.SAss x exp -> failure t AbsC4.SAssT typ x exp -> failure t AbsC4.SBlock decs stms -> failure t AbsC4.SDec dec -> failure t AbsC4.SDecr x -> failure t AbsC4.SIf exp stm1 stm2 -> failure t AbsC4.SIncr x -> failure t AbsC4.SPrint exp -> failure t AbsC4.SReturn exp -> failure t AbsC4.SReturnT typ exp -> failure t AbsC4.SWhile exp stm -> failure t AbsC4.EChar c -> failure t AbsC4.EDouble d -> failure t AbsC4.EInt n -> failure t AbsC4.EOpA exp1 op exp2 -> failure t AbsC4.EOpB exp1 op exp2 -> failure t AbsC4.EOpC exp1 op exp2 -> failure t AbsC4.EOpD exp1 op exp2 -> failure t AbsC4.EOpE exp1 op exp2 -> failure t AbsC4.EString str -> failure t AbsC4.EVar x -> failure t AbsC4.OAnd -> failure t AbsC4.OEq -> failure t AbsC4.OGt -> failure t AbsC4.OLt -> failure t AbsC4.OMinus -> failure t AbsC4.OOr -> failure t AbsC4.OPlus -> failure t AbsC4.OTimes -> failure t AbsC4.TDouble -> failure t AbsC4.TInt -> failure t transIdent :: AbsC4.Ident -> Result transIdent x = case x of AbsC4.Ident string -> failure x transProgr :: AbsC4.Progr -> Result transProgr x = case x of AbsC4.Program decs stms -> failure x transDec :: AbsC4.Dec -> Result transDec x = case x of AbsC4.Decl typ idents -> failure x transStm :: AbsC4.Stm -> 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 :: AbsC4.Exp -> 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 :: AbsC4.Op -> 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 :: AbsC4.Typ -> Result transTyp x = case x of AbsC4.TDouble -> failure x AbsC4.TInt -> failure x