(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.
This commit is contained in:
Paul Eggert
2002-11-10 05:17:56 +00:00
parent 944ed9f4e9
commit 345532d70b

View File

@@ -168,7 +168,7 @@ static void handle_at (braced_code_t code_kind,
char *cp, location_t location); char *cp, location_t location);
static void handle_syncline (char *args, location_t *location); static void handle_syncline (char *args, location_t *location);
static int convert_ucn_to_byte (char const *hex_text); 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 %x SC_COMMENT SC_LINE_COMMENT SC_YACC_COMMENT
@@ -331,7 +331,7 @@ splice (\\[ \f\t\v]*\n)*
} }
.|\n ; .|\n ;
<<EOF>> unexpected_end_of_file (*yylloc, "*/"); <<EOF>> unexpected_end_of_file (yylloc, "*/");
} }
@@ -342,7 +342,7 @@ splice (\\[ \f\t\v]*\n)*
<SC_COMMENT> <SC_COMMENT>
{ {
"*"{splice}"/" YY_OBS_GROW; BEGIN c_context; "*"{splice}"/" YY_OBS_GROW; BEGIN c_context;
<<EOF>> unexpected_end_of_file (*yylloc, "*/"); <<EOF>> unexpected_end_of_file (yylloc, "*/");
} }
@@ -375,7 +375,7 @@ splice (\\[ \f\t\v]*\n)*
} }
.|\n YY_OBS_GROW; .|\n YY_OBS_GROW;
<<EOF>> unexpected_end_of_file (*yylloc, "\""); <<EOF>> unexpected_end_of_file (yylloc, "\"");
} }
/*---------------------------------------------------------------. /*---------------------------------------------------------------.
@@ -399,7 +399,7 @@ splice (\\[ \f\t\v]*\n)*
} }
.|\n YY_OBS_GROW; .|\n YY_OBS_GROW;
<<EOF>> unexpected_end_of_file (*yylloc, "'"); <<EOF>> unexpected_end_of_file (yylloc, "'");
} }
@@ -472,7 +472,7 @@ splice (\\[ \f\t\v]*\n)*
"'" YY_OBS_GROW; BEGIN c_context; "'" YY_OBS_GROW; BEGIN c_context;
\\{splice}[^\[\]] YY_OBS_GROW; \\{splice}[^\[\]] YY_OBS_GROW;
{splice} YY_OBS_GROW; {splice} YY_OBS_GROW;
<<EOF>> unexpected_end_of_file (*yylloc, "'"); <<EOF>> unexpected_end_of_file (yylloc, "'");
} }
@@ -486,7 +486,7 @@ splice (\\[ \f\t\v]*\n)*
"\"" YY_OBS_GROW; BEGIN c_context; "\"" YY_OBS_GROW; BEGIN c_context;
\\{splice}[^\[\]] YY_OBS_GROW; \\{splice}[^\[\]] YY_OBS_GROW;
{splice} YY_OBS_GROW; {splice} YY_OBS_GROW;
<<EOF>> unexpected_end_of_file (*yylloc, "\""); <<EOF>> unexpected_end_of_file (yylloc, "\"");
} }
@@ -534,7 +534,7 @@ splice (\\[ \f\t\v]*\n)*
"@"(-?[0-9]+|"$") { handle_at (current_braced_code, "@"(-?[0-9]+|"$") { handle_at (current_braced_code,
yytext, *yylloc); } yytext, *yylloc); }
<<EOF>> unexpected_end_of_file (*yylloc, "}"); <<EOF>> unexpected_end_of_file (yylloc, "}");
} }
@@ -551,7 +551,7 @@ splice (\\[ \f\t\v]*\n)*
return PROLOGUE; return PROLOGUE;
} }
<<EOF>> unexpected_end_of_file (*yylloc, "%}"); <<EOF>> unexpected_end_of_file (yylloc, "%}");
} }
@@ -842,13 +842,18 @@ handle_syncline (char *args, location_t *location)
`-------------------------------------------------------------*/ `-------------------------------------------------------------*/
static void 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); complain_at (*loc, _("missing `%s' at end of file"), token_end);
for (i = strlen (token_end); i != 0; i--)
unput (token_end[i - 1]); /* 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]);
} }