mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-27 14:12:36 +00:00
handle EOF
This commit is contained in:
parent
1d55197097
commit
c44355e224
1 changed files with 11 additions and 4 deletions
15
parser.c
15
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;
|
||||
|
|
Loading…
Reference in a new issue