From 345532d70bdcd1e4cb4939fea038674d34fbc064 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 10 Nov 2002 05:17:56 +0000 Subject: [PATCH] (unexpected_end_of_file): Fix bug: columns were counted in the token inserted at end of file. Now takes location_t *, not location_t, so that the location can be adjusted. All uses changed. --- src/scan-gram.l | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/scan-gram.l b/src/scan-gram.l index ad20026..b944235 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -168,7 +168,7 @@ static void handle_at (braced_code_t code_kind, char *cp, location_t location); static void handle_syncline (char *args, location_t *location); static int convert_ucn_to_byte (char const *hex_text); -static void unexpected_end_of_file (location_t, char const *); +static void unexpected_end_of_file (location_t *, char const *); %} %x SC_COMMENT SC_LINE_COMMENT SC_YACC_COMMENT @@ -331,7 +331,7 @@ splice (\\[ \f\t\v]*\n)* } .|\n ; - <> unexpected_end_of_file (*yylloc, "*/"); + <> unexpected_end_of_file (yylloc, "*/"); } @@ -342,7 +342,7 @@ splice (\\[ \f\t\v]*\n)* { "*"{splice}"/" YY_OBS_GROW; BEGIN c_context; - <> unexpected_end_of_file (*yylloc, "*/"); + <> unexpected_end_of_file (yylloc, "*/"); } @@ -375,7 +375,7 @@ splice (\\[ \f\t\v]*\n)* } .|\n YY_OBS_GROW; - <> unexpected_end_of_file (*yylloc, "\""); + <> unexpected_end_of_file (yylloc, "\""); } /*---------------------------------------------------------------. @@ -399,7 +399,7 @@ splice (\\[ \f\t\v]*\n)* } .|\n YY_OBS_GROW; - <> unexpected_end_of_file (*yylloc, "'"); + <> unexpected_end_of_file (yylloc, "'"); } @@ -472,7 +472,7 @@ splice (\\[ \f\t\v]*\n)* "'" YY_OBS_GROW; BEGIN c_context; \\{splice}[^\[\]] YY_OBS_GROW; {splice} YY_OBS_GROW; - <> unexpected_end_of_file (*yylloc, "'"); + <> unexpected_end_of_file (yylloc, "'"); } @@ -486,7 +486,7 @@ splice (\\[ \f\t\v]*\n)* "\"" YY_OBS_GROW; BEGIN c_context; \\{splice}[^\[\]] YY_OBS_GROW; {splice} YY_OBS_GROW; - <> unexpected_end_of_file (*yylloc, "\""); + <> unexpected_end_of_file (yylloc, "\""); } @@ -534,7 +534,7 @@ splice (\\[ \f\t\v]*\n)* "@"(-?[0-9]+|"$") { handle_at (current_braced_code, yytext, *yylloc); } - <> unexpected_end_of_file (*yylloc, "}"); + <> unexpected_end_of_file (yylloc, "}"); } @@ -551,7 +551,7 @@ splice (\\[ \f\t\v]*\n)* return PROLOGUE; } - <> unexpected_end_of_file (*yylloc, "%}"); + <> unexpected_end_of_file (yylloc, "%}"); } @@ -842,13 +842,18 @@ handle_syncline (char *args, location_t *location) `-------------------------------------------------------------*/ static void -unexpected_end_of_file (location_t loc, char const *token_end) +unexpected_end_of_file (location_t *loc, char const *token_end) { - size_t i; + size_t i = strlen (token_end); - complain_at (loc, _("missing `%s' at end of file"), token_end); - for (i = strlen (token_end); i != 0; i--) - unput (token_end[i - 1]); + complain_at (*loc, _("missing `%s' at end of file"), token_end); + + /* Adjust location's last column so that any later message does not + mention the characters just inserted. */ + loc->last_column -= i; + + while (i != 0) + unput (token_end[--i]); } -- 2.7.4