instance Print Exp where
prt i e = case e of
- BExp exp0 bop exp -> prPrec i 0 (concatD [prt 1 exp0 , prt 0 bop , prt 1 exp])
+ EAss id exp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 exp])
EVar id -> prPrec i 3 (concatD [prt 0 id])
- EAss id exp -> prPrec i 3 (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])
+ ENot exp -> prPrec i 3 (concatD [doc (showString "!") , prt 3 exp])
EBool bool -> prPrec i 3 (concatD [prt 0 bool])
EReadI -> prPrec i 3 (concatD [doc (showString "readInt")])
EReadB -> prPrec i 3 (concatD [doc (showString "readBool")])
ExpT type' exp -> prPrec i 0 (concatD [prt 0 type' , prt 0 exp])
EDefault -> prPrec i 0 (concatD [])
- OpExp exp0 op exp -> prPrec i 0 (concatD [prt 0 exp0 , prt 0 op , prt 0 exp])
+ BiOpExp exp0 op exp -> prPrec i 0 (concatD [prt 0 exp0 , prt 0 op , prt 0 exp])
EPost id op -> prPrec i 0 (concatD [prt 0 id , prt 1 op])
Program stms -> prPrec i 0 (concatD [prt 0 stms])
-instance Print BOp where
+instance Print Op where
prt i e = case e of
Lt -> prPrec i 0 (concatD [doc (showString "<")])
ELt -> prPrec i 0 (concatD [doc (showString "<=")])
EGt -> prPrec i 0 (concatD [doc (showString ">=")])
Eq -> prPrec i 0 (concatD [doc (showString "==")])
NEq -> prPrec i 0 (concatD [doc (showString "!=")])
-
-
-instance Print Op where
- prt i e = case e of
Plus -> prPrec i 1 (concatD [doc (showString "+")])
Minus -> prPrec i 1 (concatD [doc (showString "-")])
Times -> prPrec i 2 (concatD [doc (showString "*")])