-- Haskell module generated by the BNF converter

module SkelSRL where

import qualified AbsSRL

type Err = Either String
type Result = Err String

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

transIdent :: AbsSRL.Ident -> Result
transIdent x = case x of
  AbsSRL.Ident string -> failure x
transSRL :: AbsSRL.SRL -> Result
transSRL x = case x of
  AbsSRL.ESRL blks -> failure x
transBlk :: AbsSRL.Blk -> Result
transBlk x = case x of
  AbsSRL.Bstep step -> failure x
  AbsSRL.Bif exp1 blks1 blks2 exp2 -> failure x
  AbsSRL.Bfrom exp1 blks1 blks2 exp2 -> failure x
  AbsSRL.Bfor exp1 blks1 blks2 blks3 blks4 exp2 -> failure x
transStep :: AbsSRL.Step -> Result
transStep x = case x of
  AbsSRL.SasnAdd ident exp -> failure x
  AbsSRL.SasnMin ident exp -> failure x
  AbsSRL.SasnXor ident exp -> failure x
  AbsSRL.SasnArrAdd ident exp1 exp2 -> failure x
  AbsSRL.SasnArrMin ident exp1 exp2 -> failure x
  AbsSRL.SasnArrXor ident exp1 exp2 -> failure x
  AbsSRL.Sinc ident -> failure x
  AbsSRL.Sdec ident -> failure x
  AbsSRL.Spush ident1 ident2 -> failure x
  AbsSRL.Spop ident1 ident2 -> failure x
  AbsSRL.Sskip -> failure x
transExp :: AbsSRL.Exp -> Result
transExp x = case x of
  AbsSRL.Etop exp -> failure x
  AbsSRL.Eempty exp -> failure x
  AbsSRL.Exor exp1 exp2 -> failure x
  AbsSRL.Eeq exp1 exp2 -> failure x
  AbsSRL.Ene exp1 exp2 -> failure x
  AbsSRL.Elt exp1 exp2 -> failure x
  AbsSRL.Egt exp1 exp2 -> failure x
  AbsSRL.Ele exp1 exp2 -> failure x
  AbsSRL.Ege exp1 exp2 -> failure x
  AbsSRL.Eadd exp1 exp2 -> failure x
  AbsSRL.Emin exp1 exp2 -> failure x
  AbsSRL.Emul exp1 exp2 -> failure x
  AbsSRL.Ediv exp1 exp2 -> failure x
  AbsSRL.Earr exp1 exp2 -> failure x
  AbsSRL.Econ integer -> failure x
  AbsSRL.Evar ident -> failure x

