instance Print Exp where
prt i e = case e of
+ EAss id exp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 exp])
BExp exp0 bop exp -> prPrec i 0 (concatD [prt 1 exp0 , prt 0 bop , prt 1 exp])
EVar id -> prPrec i 3 (concatD [prt 0 id])
- EAss id exp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 exp])
EInt n -> prPrec i 3 (concatD [prt 0 n])
ENeg exp -> prPrec i 3 (concatD [doc (showString "-") , prt 3 exp])
EBool bool -> prPrec i 3 (concatD [prt 0 bool])