diff --git a/util/ceg/as_parser/help.c b/util/ceg/as_parser/help.c index b29e6e67..bf29adf9 100644 --- a/util/ceg/as_parser/help.c +++ b/util/ceg/as_parser/help.c @@ -221,6 +221,8 @@ va_dcl va_end(pvar); } +extern int nerrors; + /*VARARGS*/ error(va_alist) va_dcl @@ -228,6 +230,7 @@ va_dcl char *fmt; va_list pvar; + nerrors++; va_start(pvar); fmt = va_arg(pvar, char *); fprint( STDERR, "!! ERROR : "); diff --git a/util/ceg/as_parser/pars.g b/util/ceg/as_parser/pars.g index 5a9e2de2..c39a9280 100644 --- a/util/ceg/as_parser/pars.g +++ b/util/ceg/as_parser/pars.g @@ -124,21 +124,22 @@ if_statement : IF { +int nerrors; static int saved = 0, token; LLmessage( inserted_token) int inserted_token; { + nerrors++; if ( inserted_token == 0) { fprint( STDERR, "Sytax error in line %d, ", yylineno); print_token( LLsymb); fprint( STDERR, " will be deleted!!\n"); } else if ( inserted_token < 0) { - fprint( STDERR, "Stack overflow in line %d, fatal error!\n", + fprint( STDERR, "Garbage at end, line %d!!\n", yylineno); - exit( 1); } else { fprint( STDERR, "Sytax error in line %d, ", yylineno); @@ -194,7 +195,7 @@ int lex_analyzer() main() { table(); - return( 0); + exit(nerrors); } }