hoig
[cc1516.git] / src / parse.icl
index ec89565..7320b11 100644 (file)
@@ -20,12 +20,12 @@ import lex
 parser :: LexerOutput -> ParserOutput
 parser (Left e) = Left $ toString $ LexError e
 parser (Right r) = case runParser parseProgram r of
-       (Right p, _) = Right p
+       (Right p, []) = Right p
+       (Right p, x) = Left "Unparsed tokens: "//TODO
        (Left e, _) = Left $ toString e
 
 parseProgram :: Parser Token AST
 parseProgram = liftM2 AST (many parseVarDecl) (some parseFunDecl) 
-       <* satTok EndOfFileToken
 
 parseFunDecl :: Parser Token FunDecl
 parseFunDecl = liftM5 FunDecl
@@ -178,7 +178,7 @@ derive gEq TokenValue
 satTok :: TokenValue -> Parser Token Token
 satTok t = top >>= \tok=:(pos1, pos2, tv) -> if (eq t tok) 
                                             (return tok) 
-                                            (fail <?> (printToString tv+++printToString t, pos1))
+                                            (fail <?> Unexpected (printToString tv) (pos1, pos2))
        where
                eq (IdentToken _) (_, _, IdentToken _) = True
                eq (NumberToken _) (_, _, NumberToken _) = True