From c44355e224f546bb1014b65ef9cf5c59318ee3d2 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 19 Jul 2012 12:17:00 +0200 Subject: [PATCH] handle EOF --- parser.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/parser.c b/parser.c index f17e9dd..8901fa2 100644 --- a/parser.c +++ b/parser.c @@ -153,14 +153,20 @@ bool parser_do(parser_t *parser) if (!parser_next(parser)) return false; - if (parser->tok == ';') - return parser_next(parser); + if (parser->tok == ';') { + if (!parser_next(parser)) + return parser->tok == TOKEN_EOF; + return true; + } if (parser->tok != '=') { parseerror(parser, "expected '=' or ';'"); return false; } + if (!parser_next(parser)) + return false; + /* '=' found, assign... */ parseerror(parser, "TODO, const assignment"); return false; @@ -210,8 +216,9 @@ bool parser_compile(const char *filename) { if (!parser_do(parser)) { if (parser->tok == TOKEN_EOF) - break; - printf("parse error\n"); + parseerror(parser, "unexpected eof"); + else + parseerror(parser, "parse error\n"); lex_close(parser->lex); mem_d(parser); return false;