updated that the parser fails when parsing not everything
[cc1516.git] / parse.icl
index 34ec15b..9aabea3 100644 (file)
--- a/parse.icl
+++ b/parse.icl
@@ -20,7 +20,10 @@ import AST
 
 parser :: LexerOutput -> ParserOutput
 parser (Left e) = Left e
-parser (Right r) = fst $ runParser parseProgram r
+parser (Right r) = case runParser parseProgram r of
+       (Right ast, [(p, t):xs]) = Left $ PositionalError p.line p.col (
+               "Unable to parse from: " +++ printToString t)
+       x = fst x
 
 parseProgram :: Parser Token AST
 parseProgram = AST <$> (many parseVarDecl) <*> (some parseFunDecl)