5 -- type Selector = String
8 -- type Prog = Prog [Dec] [Stat]
10 -- Contains name, a list of input vars, output var, body respectively and of course
11 -- the two labels ln and lx
12 data Dec = Proc [VarIdent] VarIdent VarIdent Label Stat Label
17 | AOp String AExp AExp
18 -- | Var VarIdent (Maybe Selector)
26 | BOp String BExp BExp
27 | RelOp String AExp AExp
28 -- | POp VarIdent (Maybe Selector)
32 = Assign VarIdent AExp Label
35 | If BExp Label Stat Stat
36 | While BExp Label Stat
37 -- | Call VarIdent [AExp] VarIdent Label Label
38 -- | Malloc VarIdent (Maybe Selector) Label