parseSepList :: TokenValue (Parser Token a) -> Parser Token [a]
parseSepList sep p =
- (some (p <* satTok sep) >>= \es->p >>= \e.pure $ reverse [e:es]) <|>
+ (liftM2 (\es->(\e->reverse [e:es])) (some (p <* satTok sep)) p) <|>
(liftM pure p) <|> pure empty
parseIdent :: Parser Token String
print (FunDecl i as t vs ss) =
["\n", i, " (":printersperse "," as] ++
[") :: ":print t] ++
- ["{":printersperse "\n\t" vs] ++
- ["\n":printStatements ss 1] ++ ["}"]
+ ["{\n\t":printersperse "\n\t" vs] ++
+ ["\n":printStatements ss 1] ++ ["}\n"]
printStatements :: [Stmt] Int -> [String]
printStatements [] i = []
) ++ printStatements ss i
where
printCodeBlock :: [Stmt] Int -> [String]
- printCodeBlock [] _ = ["{}"]
+ printCodeBlock [] _ = ["{}\n"]
printCodeBlock [x] i = ["\n":printStatements [x] (i+1)]
printCodeBlock x i =
["{\n":printStatements x (i+1)] ++ indent i ["}\n"]