trans1 :: TokenValue a -> Parser Token a
trans1 t r = trans2 t $ const r
+derive gEq TokenValue
satTok :: TokenValue -> Parser Token Token
-satTok t = satisfy ((===) t)
+satTok t = satisfy $ eq t
+ where
+ eq (IdentToken _) (_, IdentToken _) = True
+ eq (NumberToken _) (_, NumberToken _) = True
+ eq (CharToken _) (_, CharToken _) = True
+ eq x (_, y) = gEq {|*|} x y
parseSepList :: TokenValue (Parser Token a) -> Parser Token [a]
parseSepList sep p =
printCodeBlock [] _ = ["{}"]
printCodeBlock [x] i = ["\n":printStatements [x] (i+1)]
printCodeBlock x i =
- ["{\n":printStatements x (i+1)] ++ indent i ["}"]
+ ["{\n":printStatements x (i+1)] ++ indent i ["}\n"]
indent :: Int [String] -> [String]
indent i rest = replicate i "\t" ++ rest