repositories
/
cc1516.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hoig
[cc1516.git]
/
src
/
parse.icl
diff --git
a/src/parse.icl
b/src/parse.icl
index
ec89565
..
7320b11
100644
(file)
--- a/
src/parse.icl
+++ b/
src/parse.icl
@@
-20,12
+20,12
@@
import lex
parser :: LexerOutput -> ParserOutput
parser (Left e) = Left $ toString $ LexError e
parser (Right r) = case runParser parseProgram r of
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)
(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
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)
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
where
eq (IdentToken _) (_, _, IdentToken _) = True
eq (NumberToken _) (_, _, NumberToken _) = True