Error count was sometimes omitted

This commit is contained in:
Pierre Pronchery 2008-03-14 02:49:49 +00:00
parent adced59b1a
commit 1534e4933a

View File

@ -32,7 +32,9 @@
/* prototypes */ /* prototypes */
static int _parse_check(C99 * c99, TokenCode code); static int _parse_check(C99 * c99, TokenCode code);
static int _parse_error(C99 * c99, char const * format, ...); static int _parse_error(C99 * c99, char const * format, ...);
#ifdef DEBUG
static char const * _parse_get_string(C99 * c99); static char const * _parse_get_string(C99 * c99);
#endif
static int _parse_in_set(C99 * c99, TokenSet set); static int _parse_in_set(C99 * c99, TokenSet set);
static int _parse_is_code(C99 * c99, TokenCode code); static int _parse_is_code(C99 * c99, TokenCode code);
@ -119,7 +121,7 @@ static int _parse_check(C99 * c99, TokenCode code)
ret = _parse_error(c99, "Expected \"%s\"", ret = _parse_error(c99, "Expected \"%s\"",
code_get_string(code)); code_get_string(code));
while(c99_scan(c99) == 0 while(c99_scan(c99) == 0
&& c99->token != NULL && c99->token != NULL /* actual token */
&& !_parse_is_code(c99, code)); && !_parse_is_code(c99, code));
} }
ret |= c99_scan(c99); ret |= c99_scan(c99);
@ -149,12 +151,14 @@ static int _parse_error(C99 * c99, char const * format, ...)
/* parse_get_string */ /* parse_get_string */
#ifdef DEBUG
static char const * _parse_get_string(C99 * c99) static char const * _parse_get_string(C99 * c99)
{ {
if(c99->token == NULL) if(c99->token == NULL)
return "EOF"; return "EOF";
return token_get_string(c99->token); return token_get_string(c99->token);
} }
#endif
/* parse_in_set */ /* parse_in_set */
@ -176,6 +180,7 @@ static int _parse_is_code(C99 * c99, TokenCode code)
/* grammar */ /* grammar */
/* translation-unit */
static int _translation_unit(C99 * c99) static int _translation_unit(C99 * c99)
/* external-declaration { external-declaration } */ /* external-declaration { external-declaration } */
{ {
@ -184,7 +189,7 @@ static int _translation_unit(C99 * c99)
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s()\n", __func__); fprintf(stderr, "DEBUG: %s()\n", __func__);
#endif #endif
while((ret = c99_scan(c99)) == 0 while((ret |= c99_scan(c99)) == 0
&& c99->token != NULL) /* end of file */ && c99->token != NULL) /* end of file */
ret |= _external_declaration(c99); ret |= _external_declaration(c99);
return ret; return ret;