False -> prPrec i 0 (concatD [doc (showString "false")])
+instance Print Type where
+ prt i e = case e of
+ TInt -> prPrec i 0 (concatD [doc (showString "int")])
+ TBool -> prPrec i 0 (concatD [doc (showString "bool")])
+
+
+instance Print Stms where
+ prt i e = case e of
+ Program stms -> prPrec i 0 (concatD [prt 0 stms])
+
+
instance Print Stm where
prt i e = case e of
- SDecl type' id exp -> prPrec i 0 (concatD [prt 0 type' , prt 0 id , doc (showString "=") , prt 0 exp , doc (showString ";")])
SExp exp -> prPrec i 0 (concatD [prt 0 exp , doc (showString ";")])
SBlock stms -> prPrec i 0 (concatD [doc (showString "{") , prt 0 stms , doc (showString "}")])
- SIf exp stm0 stm -> prPrec i 0 (concatD [doc (showString "if") , doc (showString "(") , prt 0 exp , doc (showString ")") , prt 0 stm0 , doc (showString "else") , prt 0 stm])
SWhile exp stm -> prPrec i 0 (concatD [doc (showString "while") , doc (showString "(") , prt 0 exp , doc (showString ")") , prt 0 stm])
+ SIf exp stm0 stm -> prPrec i 0 (concatD [doc (showString "if") , doc (showString "(") , prt 0 exp , doc (showString ")") , prt 0 stm0 , doc (showString "else") , prt 0 stm])
SPrint exp -> prPrec i 0 (concatD [doc (showString "print") , prt 0 exp , doc (showString ";")])
SNoop -> prPrec i 0 (concatD [])
+ SDecl type' id exp -> prPrec i 0 (concatD [prt 0 type' , prt 0 id , doc (showString "=") , prt 0 exp , doc (showString ";")])
prtList es = case es of
[] -> (concatD [])
EAss id exp -> prPrec i 0 (concatD [prt 0 id , doc (showString "=") , prt 0 exp])
EVar id -> prPrec i 3 (concatD [prt 0 id])
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])
+ ENeg exp -> prPrec i 3 (concatD [doc (showString "-") , prt 3 exp])
+ ENot exp -> prPrec i 3 (concatD [doc (showString "!") , prt 3 exp])
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 [])
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])
-instance Print Stms where
- prt i e = case e of
- Program stms -> prPrec i 0 (concatD [prt 0 stms])
-
-
instance Print Op where
prt i e = case e of
Lt -> prPrec i 0 (concatD [doc (showString "<")])
Div -> prPrec i 2 (concatD [doc (showString "/")])
-instance Print Type where
- prt i e = case e of
- TInt -> prPrec i 0 (concatD [doc (showString "int")])
- TBool -> prPrec i 0 (concatD [doc (showString "bool")])
- NoType -> prPrec i 0 (concatD [])
-
-