X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=src%2Fparse.icl;h=cfd4fd1a2b974dba0d617a6547bf81d6646d9a82;hb=40d54a0715006e2baab1704eef15eecc4076668b;hp=0860819c20748b7d5a3b3a523691250172818c6f;hpb=6e527e30012f8809594452cb9559b301b4a8afc6;p=cc1516.git diff --git a/src/parse.icl b/src/parse.icl index 0860819..cfd4fd1 100644 --- a/src/parse.icl +++ b/src/parse.icl @@ -175,7 +175,7 @@ trans1 t r = trans2 t $ const r derive gPrint TokenValue derive gEq TokenValue satTok :: TokenValue -> Parser Token Token -satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail (printToString t, pos)) +satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail (printToString tv, pos)) where eq (IdentToken _) (_, IdentToken _) = True eq (NumberToken _) (_, NumberToken _) = True @@ -184,7 +184,7 @@ satTok t = top >>= \tok=:(pos, tv) -> if (eq t tok) (return tok) (fail (prin 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 @@ -204,8 +204,8 @@ instance print FunDecl where 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 = [] @@ -222,7 +222,7 @@ printStatements [s:ss] i = (case s of ) ++ 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"]