* data/yacc.c (yysyntax_error): Take the transated token instead
of the raw number.
Adjust callers.
* TODO: Update.
+2008-12-11 Akim Demaille <demaille@gostai.com>
+
+ Pass the token type to yysyntax_error.
+ * data/yacc.c (yysyntax_error): Take the transated token instead
+ of the raw number.
+ Adjust callers.
+ * TODO: Update.
+
2008-12-11 Akim Demaille <demaille@gostai.com>
Formatting changes.
2008-12-11 Akim Demaille <demaille@gostai.com>
Formatting changes.
management is performed once instead of three times). I suggest that
we do the same in yacc.c.
management is performed once instead of three times). I suggest that
we do the same in yacc.c.
-** yysyntax_error
-In lalr1.cc we invoke it with the translated lookahead (yytoken), and
-yacc.c uses yychar. I don't see why.
-
** yysyntax_error
The code bw glr.c and yacc.c is really alike, we can certainly factor
some parts.
** yysyntax_error
The code bw glr.c and yacc.c is really alike, we can certainly factor
some parts.
# endif
/* Copy into YYRESULT an error message about the unexpected token
# endif
/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ YYTOKEN while in state YYSTATE. Return the number of bytes copied,
including the terminating null byte. If YYRESULT is null, do not
copy anything; just return the number of bytes that would be
copied. As a special case, return 0 if an ordinary "syntax error"
message will do. Return YYSIZE_MAXIMUM if overflow occurs during
size calculation. */
static YYSIZE_T
including the terminating null byte. If YYRESULT is null, do not
copy anything; just return the number of bytes that would be
copied. As a special case, return 0 if an ordinary "syntax error"
message will do. Return YYSIZE_MAXIMUM if overflow occurs during
size calculation. */
static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
+yysyntax_error (char *yyresult, int yystate, int yytoken)
{
int yyn = yypact[yystate];
{
int yyn = yypact[yystate];
- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
YYSIZE_T yysize1;
int yysize_overflow = 0;
YYSIZE_T yysize = yysize0;
YYSIZE_T yysize1;
int yysize_overflow = 0;
int yycount = 0;
int yyx;
int yycount = 0;
int yyx;
- yyarg[yycount++] = yytname[yytype];
+ yyarg[yycount++] = yytname[yytoken];
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
for (yyx = yyxbegin; yyx < yyxend; ++yyx)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
yyerror (]b4_yyerror_args[YY_("syntax error"));
#else
{
yyerror (]b4_yyerror_args[YY_("syntax error"));
#else
{
- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yytoken);
if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
{
YYSIZE_T yyalloc = 2 * yysize;
if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
{
YYSIZE_T yyalloc = 2 * yysize;
if (0 < yysize && yysize <= yymsg_alloc)
{
if (0 < yysize && yysize <= yymsg_alloc)
{
- (void) yysyntax_error (yymsg, yystate, yychar);
+ (void) yysyntax_error (yymsg, yystate, yytoken);
yyerror (]b4_yyerror_args[yymsg);
}
else
yyerror (]b4_yyerror_args[yymsg);
}
else