mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +00:00
regen
This commit is contained in:
233
src/parse-gram.c
233
src/parse-gram.c
@@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 3.5.1.51-6ada9. */
|
/* A Bison parser, made by GNU Bison 3.5.1.3-1587-dirty. */
|
||||||
|
|
||||||
/* Bison implementation for Yacc-like parsers in C
|
/* Bison implementation for Yacc-like parsers in C
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
#define YYBISON 1
|
#define YYBISON 1
|
||||||
|
|
||||||
/* Bison version. */
|
/* Bison version. */
|
||||||
#define YYBISON_VERSION "3.5.1.51-6ada9"
|
#define YYBISON_VERSION "3.5.1.3-1587-dirty"
|
||||||
|
|
||||||
/* Skeleton name. */
|
/* Skeleton name. */
|
||||||
#define YYSKELETON_NAME "yacc.c"
|
#define YYSKELETON_NAME "yacc.c"
|
||||||
@@ -1558,135 +1558,18 @@ yysyntax_error_arguments (const yyparse_context_t *yyctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# ifndef yystrlen
|
/* The location of this context. */
|
||||||
# if defined __GLIBC__ && defined _STRING_H
|
static YYLTYPE *
|
||||||
# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
|
yyparse_context_location (const yyparse_context_t *yyctx) YY_ATTRIBUTE_UNUSED;
|
||||||
# else
|
|
||||||
/* Return the length of YYSTR. */
|
static YYLTYPE *
|
||||||
static YYPTRDIFF_T
|
yyparse_context_location (const yyparse_context_t *yyctx)
|
||||||
yystrlen (const char *yystr)
|
|
||||||
{
|
{
|
||||||
YYPTRDIFF_T yylen;
|
return yyctx->yylloc;
|
||||||
for (yylen = 0; yystr[yylen]; yylen++)
|
|
||||||
continue;
|
|
||||||
return yylen;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifndef yystpcpy
|
|
||||||
# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
|
|
||||||
# define yystpcpy stpcpy
|
|
||||||
# else
|
|
||||||
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
|
|
||||||
YYDEST. */
|
|
||||||
static char *
|
|
||||||
yystpcpy (char *yydest, const char *yysrc)
|
|
||||||
{
|
|
||||||
char *yyd = yydest;
|
|
||||||
const char *yys = yysrc;
|
|
||||||
|
|
||||||
while ((*yyd++ = *yys++) != '\0')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
return yyd - 1;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
|
|
||||||
about the unexpected token YYTOKEN for the state stack whose top is
|
|
||||||
YYSSP. In order to see if a particular token T is a
|
|
||||||
valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).
|
|
||||||
|
|
||||||
Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
|
|
||||||
not large enough to hold the message. In that case, also set
|
|
||||||
*YYMSG_ALLOC to the required number of bytes. Return 2 if the
|
|
||||||
required number of bytes is too large to store or if
|
|
||||||
yy_lac returned 2. */
|
|
||||||
static int
|
|
||||||
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
|
|
||||||
const yyparse_context_t *yyctx)
|
|
||||||
{
|
|
||||||
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
|
|
||||||
/* Internationalized format string. */
|
|
||||||
const char *yyformat = YY_NULLPTR;
|
|
||||||
/* Arguments of yyformat: reported tokens (one for the "unexpected",
|
|
||||||
one per "expected"). */
|
|
||||||
int yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
|
|
||||||
/* Cumulated lengths of YYARG. */
|
|
||||||
YYPTRDIFF_T yysize = 0;
|
|
||||||
|
|
||||||
/* Actual size of YYARG. */
|
|
||||||
int yycount
|
|
||||||
= yysyntax_error_arguments (yyctx, yyarg, YYERROR_VERBOSE_ARGS_MAXIMUM);
|
|
||||||
if (yycount == -2)
|
|
||||||
return 2;
|
|
||||||
|
|
||||||
switch (yycount)
|
|
||||||
{
|
|
||||||
# define YYCASE_(N, S) \
|
|
||||||
case N: \
|
|
||||||
yyformat = S; \
|
|
||||||
break
|
|
||||||
default: /* Avoid compiler warnings. */
|
|
||||||
YYCASE_(0, YY_("syntax error"));
|
|
||||||
YYCASE_(1, YY_("syntax error, unexpected %s"));
|
|
||||||
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
|
|
||||||
YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
|
|
||||||
YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
|
|
||||||
YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
|
|
||||||
# undef YYCASE_
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Compute error message size. Don't count the "%s"s, but reserve
|
|
||||||
room for the terminator. */
|
|
||||||
yysize = (yystrlen (yyformat) - 2 * yycount) + 1;
|
|
||||||
{
|
|
||||||
int yyi;
|
|
||||||
for (yyi = 0; yyi < yycount; ++yyi)
|
|
||||||
{
|
|
||||||
YYPTRDIFF_T yysize1
|
|
||||||
= yysize + yystrlen (yysymbol_name (yyarg[yyi]));
|
|
||||||
if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
|
|
||||||
yysize = yysize1;
|
|
||||||
else
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*yymsg_alloc < yysize)
|
|
||||||
{
|
|
||||||
*yymsg_alloc = 2 * yysize;
|
|
||||||
if (! (yysize <= *yymsg_alloc
|
|
||||||
&& *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
|
|
||||||
*yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Avoid sprintf, as that infringes on the user's name space.
|
|
||||||
Don't have undefined behavior even if the translation
|
|
||||||
produced a string with the wrong number of "%s"s. */
|
|
||||||
{
|
|
||||||
char *yyp = *yymsg;
|
|
||||||
int yyi = 0;
|
|
||||||
while ((*yyp = *yyformat) != '\0')
|
|
||||||
if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
|
|
||||||
{
|
|
||||||
yyp = yystpcpy (yyp, yysymbol_name (yyarg[yyi++]));
|
|
||||||
yyformat += 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
++yyp;
|
|
||||||
++yyformat;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* User defined function to report a syntax error. */
|
||||||
|
static int yyreport_syntax_error (const yyparse_context_t *yyctx);
|
||||||
|
|
||||||
/*-----------------------------------------------.
|
/*-----------------------------------------------.
|
||||||
| Release the memory associated to this symbol. |
|
| Release the memory associated to this symbol. |
|
||||||
@@ -1825,10 +1708,7 @@ YYLTYPE yylloc = yyloc_default;
|
|||||||
YYSTYPE yyval;
|
YYSTYPE yyval;
|
||||||
YYLTYPE yyloc;
|
YYLTYPE yyloc;
|
||||||
|
|
||||||
/* Buffer for error messages, and its allocated size. */
|
|
||||||
char yymsgbuf[128];
|
|
||||||
char *yymsg = yymsgbuf;
|
|
||||||
YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
|
|
||||||
|
|
||||||
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
|
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
|
||||||
|
|
||||||
@@ -2660,36 +2540,11 @@ yyerrlab:
|
|||||||
{
|
{
|
||||||
++yynerrs;
|
++yynerrs;
|
||||||
{
|
{
|
||||||
char const *yymsgp = YY_("syntax error");
|
|
||||||
yyparse_context_t yyctx
|
yyparse_context_t yyctx
|
||||||
= {yyssp, yytoken, &yylloc, yyesa, &yyes, &yyes_capacity};
|
= {yyssp, yytoken, &yylloc, yyesa, &yyes, &yyes_capacity};
|
||||||
int yysyntax_error_status;
|
|
||||||
if (yychar != YYEMPTY)
|
if (yychar != YYEMPTY)
|
||||||
YY_LAC_ESTABLISH;
|
YY_LAC_ESTABLISH;
|
||||||
yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
|
if (yyreport_syntax_error (&yyctx) == 2)
|
||||||
if (yysyntax_error_status == 0)
|
|
||||||
yymsgp = yymsg;
|
|
||||||
else if (yysyntax_error_status == 1)
|
|
||||||
{
|
|
||||||
if (yymsg != yymsgbuf)
|
|
||||||
YYSTACK_FREE (yymsg);
|
|
||||||
yymsg = YY_CAST (char *,
|
|
||||||
YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
|
|
||||||
if (yymsg)
|
|
||||||
{
|
|
||||||
yysyntax_error_status
|
|
||||||
= yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
|
|
||||||
yymsgp = yymsg;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
yymsg = yymsgbuf;
|
|
||||||
yymsg_alloc = sizeof yymsgbuf;
|
|
||||||
yysyntax_error_status = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
yyerror (&yylloc, yymsgp);
|
|
||||||
if (yysyntax_error_status == 2)
|
|
||||||
goto yyexhaustedlab;
|
goto yyexhaustedlab;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2846,12 +2701,70 @@ yyreturn:
|
|||||||
#endif
|
#endif
|
||||||
if (yyes != yyesa)
|
if (yyes != yyesa)
|
||||||
YYSTACK_FREE (yyes);
|
YYSTACK_FREE (yyes);
|
||||||
if (yymsg != yymsgbuf)
|
|
||||||
YYSTACK_FREE (yymsg);
|
|
||||||
return yyresult;
|
return yyresult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
yyreport_syntax_error (const yyparse_context_t *ctx)
|
||||||
|
{
|
||||||
|
if (complaint_status < status_complaint)
|
||||||
|
complaint_status = status_complaint;
|
||||||
|
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
|
||||||
|
/* Internationalized format string. */
|
||||||
|
const char *format = YY_NULLPTR;
|
||||||
|
/* Arguments of format: reported tokens (one for the "unexpected",
|
||||||
|
one per "expected"). */
|
||||||
|
int arg[YYERROR_VERBOSE_ARGS_MAXIMUM];
|
||||||
|
int n = yysyntax_error_arguments (ctx, arg, YYERROR_VERBOSE_ARGS_MAXIMUM);
|
||||||
|
switch (n)
|
||||||
|
{
|
||||||
|
case -2:
|
||||||
|
return 2;
|
||||||
|
# define YYCASE_(N, S) \
|
||||||
|
case N: \
|
||||||
|
format = S; \
|
||||||
|
break
|
||||||
|
default: /* Avoid compiler warnings. */
|
||||||
|
YYCASE_(0, YY_("syntax error"));
|
||||||
|
YYCASE_(1, YY_("syntax error, unexpected %s"));
|
||||||
|
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
|
||||||
|
YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
|
||||||
|
YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
|
||||||
|
YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
|
||||||
|
# undef YYCASE_
|
||||||
|
}
|
||||||
|
location_print (*yyparse_context_location (ctx), stderr);
|
||||||
|
fputs (": ", stderr);
|
||||||
|
begin_use_class ("error", stderr);
|
||||||
|
fputs ("error:", stderr);
|
||||||
|
end_use_class ("error", stderr);
|
||||||
|
fputc (' ', stderr);
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while (*format)
|
||||||
|
if (format[0] == '%' && format[1] == 's' && i < n)
|
||||||
|
{
|
||||||
|
const char *style = i == 0 ? "unexpected" : "expected";
|
||||||
|
begin_use_class (style, stderr);
|
||||||
|
fputs (yysymbol_name (arg[i]), stderr);
|
||||||
|
end_use_class (style, stderr);
|
||||||
|
format += 2;
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fputc (*format, stderr);
|
||||||
|
++format;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fputc ('\n', stderr);
|
||||||
|
location_caret (*yyparse_context_location (ctx), "error", stderr);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Return the location of the left-hand side of a rule whose
|
/* Return the location of the left-hand side of a rule whose
|
||||||
right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
|
right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
|
||||||
the right-hand side, and return an empty location equal to the end
|
the right-hand side, and return an empty location equal to the end
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* A Bison parser, made by GNU Bison 3.5.1.51-6ada9. */
|
/* A Bison parser, made by GNU Bison 3.5.1.3-1587-dirty. */
|
||||||
|
|
||||||
/* Bison interface for Yacc-like parsers in C
|
/* Bison interface for Yacc-like parsers in C
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user