-------------------------------------------------------------------- -- | -- Module : Language.While.Types -- -- Provides shared type definitions forming the parsed AST. -- module Language.While.Types where -- | Variables type alias. type Varname = String -- | Arithmetic expressions, including integer division. data Aexp = Numeral Integer | Variable Varname | Aadd Aexp Aexp | Asub Aexp Aexp | Amul Aexp Aexp | Adiv Aexp Aexp deriving (Show, Eq) -- | Boolean expressions. data Bexp = Btrue | Bfalse | Beq Aexp Aexp | Bleq Aexp Aexp | Bneg Bexp | Band Bexp Bexp deriving (Show, Eq) -- | Statements, including try-catch clauses. data Stm = Sass Varname Aexp | Sskip | Scomp Stm Stm | Sif Bexp Stm Stm | Swhile Bexp Stm | Stry Stm Stm deriving (Show, Eq)