module SkelM where

-- Haskell module generated by the BNF converter

import AbsM
import ErrM
type Result = Err String

failure :: Show a => a -> Result
failure x = Bad $ "Undefined case: " ++ show x

transCID :: CID -> Result
transCID x = case x of
  CID string -> failure x
transBVAL :: BVAL -> Result
transBVAL x = case x of
  BVAL string -> failure x
transPIdent :: PIdent -> Result
transPIdent x = case x of
  PIdent string -> failure x
transProg :: Prog -> Result
transProg x = case x of
  M block -> failure x
transBlock :: Block -> Result
transBlock x = case x of
  Program declarations programbody -> failure x
transDeclaration :: Declaration -> Result
transDeclaration x = case x of
  Dec_Var vardeclaration -> failure x
  Dec_Fun fundeclaration -> failure x
  Dec_Data datadeclaration -> failure x
transVarDeclaration :: VarDeclaration -> Result
transVarDeclaration x = case x of
  D_Variable varspecs type_ -> failure x
transVarSpec :: VarSpec -> Result
transVarSpec x = case x of
  V_Spec pident arraydimensions -> failure x
transArrayDimension :: ArrayDimension -> Result
transArrayDimension x = case x of
  ArrDim expr -> failure x
transType :: Type -> Result
transType x = case x of
  T_Int -> failure x
  T_Real -> failure x
  T_Bool -> failure x
  T_Char -> failure x
  T_User pident -> failure x
transFunDeclaration :: FunDeclaration -> Result
transFunDeclaration x = case x of
  D_Function pident paramlist type_ funblock -> failure x
transFunBlock :: FunBlock -> Result
transFunBlock x = case x of
  FunctionBlock declarations funbody -> failure x
transParamList :: ParamList -> Result
transParamList x = case x of
  ParameterList basicdeclarations -> failure x
transBasicDeclaration :: BasicDeclaration -> Result
transBasicDeclaration x = case x of
  BasicDec pident basicarraydimensions type_ -> failure x
transBasicArrayDimension :: BasicArrayDimension -> Result
transBasicArrayDimension x = case x of
  B_ArrDim -> failure x
transDataDeclaration :: DataDeclaration -> Result
transDataDeclaration x = case x of
  D_Data pident consdecls -> failure x
transConsDecl :: ConsDecl -> Result
transConsDecl x = case x of
  TypeComposition cid types -> failure x
  TypeConstructor cid -> failure x
transProgramBody :: ProgramBody -> Result
transProgramBody x = case x of
  P_Body progstmts -> failure x
transFunBody :: FunBody -> Result
transFunBody x = case x of
  F_Body progstmts expr -> failure x
transProgStmt :: ProgStmt -> Result
transProgStmt x = case x of
  P_If expr progstmt1 progstmt2 -> failure x
  P_While expr progstmt -> failure x
  P_Read location -> failure x
  P_Assign location expr -> failure x
  P_Print expr -> failure x
  P_Block block -> failure x
  P_Case expr cases -> failure x
transLocation :: Location -> Result
transLocation x = case x of
  L_Location pident arraydimensions -> failure x
transCase :: Case -> Result
transCase x = case x of
  C_Case cid varlist progstmt -> failure x
transVarList :: VarList -> Result
transVarList x = case x of
  VL_List pidents -> failure x
  VL_End -> failure x
transExpr :: Expr -> Result
transExpr x = case x of
  B_Or expr bintterm -> failure x
  B_Term bintterm -> failure x
transBintTerm :: BintTerm -> Result
transBintTerm x = case x of
  B_And bintterm bintfactor -> failure x
  B_Factor bintfactor -> failure x
transBintFactor :: BintFactor -> Result
transBintFactor x = case x of
  B_Not bintfactor -> failure x
  B_Compare intexpr1 compareop intexpr2 -> failure x
  B_Expr intexpr -> failure x
transCompareOp :: CompareOp -> Result
transCompareOp x = case x of
  B_EQ -> failure x
  B_LT -> failure x
  B_GT -> failure x
  B_LE -> failure x
  B_GE -> failure x
transIntExpr :: IntExpr -> Result
transIntExpr x = case x of
  Int_Add intexpr addop intterm -> failure x
  Int_Term intterm -> failure x
transAddop :: Addop -> Result
transAddop x = case x of
  Op_Add -> failure x
  Op_Sub -> failure x
transIntTerm :: IntTerm -> Result
transIntTerm x = case x of
  Int_Mul intterm mulop intfactor -> failure x
  Int_Factor intfactor -> failure x
transMulop :: Mulop -> Result
transMulop x = case x of
  Op_Mult -> failure x
  Op_Divide -> failure x
transIntFactor :: IntFactor -> Result
transIntFactor x = case x of
  IF_Expression expr -> failure x
  IF_Size pident basicarraydimensions -> failure x
  IF_Float expr -> failure x
  IF_Floor expr -> failure x
  IF_Ceil expr -> failure x
  IF_ID pident modifierlist -> failure x
  IF_Data cid consargumentlist -> failure x
  IF_Integer integer -> failure x
  IF_Real double -> failure x
  IF_Boolean bval -> failure x
  IF_Character char -> failure x
  IF_Negate intfactor -> failure x
transModifierList :: ModifierList -> Result
transModifierList x = case x of
  Mod_CallParams funargumentlist -> failure x
  Mod_Array arraydimensions -> failure x
transFunArgumentList :: FunArgumentList -> Result
transFunArgumentList x = case x of
  F_Args exprs -> failure x
transConsArgumentList :: ConsArgumentList -> Result
transConsArgumentList x = case x of
  CAL_Arguments funargumentlist -> failure x
  CAL_NoArgs -> failure x

