

module AbsSrl where

-- Haskell module generated by the BNF converter




newtype Ident = Ident String deriving (Eq, Ord, Show, Read)
data Srl = SBLK Blk
  deriving (Eq, Ord, Show, Read)

data Blk
    = SStep Step
    | SIf Exp Blk Blk Exp
    | SCon Blk Blk
    | SFrom Exp Blk Blk Exp
  deriving (Eq, Ord, Show, Read)

data Step
    = Plus_Eq Var Oplus Exp
    | Plus_In Var Exp Oplus Exp
    | Push Var Var
    | Pop Var Var
    | Skip
  deriving (Eq, Ord, Show, Read)

data Exp
    = EConst Integer
    | EVar Ident
    | EIn Var Exp
    | ETime Exp Otime Exp
    | ETop Var Var
    | EEmpty Var Var
  deriving (Eq, Ord, Show, Read)

data Otime
    = OPlus Oplus
    | Time
    | Div
    | Equal
    | Less
    | Greater
    | Less_Eq
    | Greater_Eq
    | Not_Eq
  deriving (Eq, Ord, Show, Read)

data Oplus = Plus | Minus | Caret
  deriving (Eq, Ord, Show, Read)

data Var = Var Ident
  deriving (Eq, Ord, Show, Read)

