]> git.rm.cloudns.org Git - xonotic/gmqcc.git/commitdiff
handle EOF
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 10:17:00 +0000 (12:17 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Thu, 19 Jul 2012 10:17:00 +0000 (12:17 +0200)
parser.c

index f17e9dda73e4b8b452ba082f9f635cab7c8781b7..8901fa29b491e3be231763d6545d7b2836d725fc 100644 (file)
--- 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;