]> git.saurik.com Git - bison.git/commitdiff
Pass the token type to yysyntax_error.
authorAkim Demaille <demaille@gostai.com>
Thu, 11 Dec 2008 08:48:49 +0000 (09:48 +0100)
committerAkim Demaille <demaille@gostai.com>
Thu, 11 Dec 2008 09:47:14 +0000 (10:47 +0100)
* data/yacc.c (yysyntax_error): Take the transated token instead
of the raw number.
Adjust callers.
* TODO: Update.

ChangeLog
TODO
data/yacc.c

index 77e23d8f0fbb8e1d6cb64f2c152c34b824de76a1..46d4d5beb2f18a34129b986fb01f91c4e9607b96 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+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.
diff --git a/TODO b/TODO
index b12a039a3bc9eec33f49861fc7a209ca507bad4a..5ae4f707c48e2a6de681721e3589deadd5ab4b47 100644 (file)
--- a/TODO
+++ b/TODO
@@ -156,10 +156,6 @@ other improvements and also made it faster (probably because memory
 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.
index da7c72c7f26ba9b8fcf20f65c9e373afe1eb8c5d..7a20cbb31e1b0d7f7f64cfc5ce9085c8e0f9e279 100644 (file)
@@ -822,14 +822,14 @@ yytnamerr (char *yyres, const char *yystr)
 # 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];
 
@@ -837,8 +837,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
     return 0;
   else
     {
     return 0;
   else
     {
-      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;
@@ -860,7 +859,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
       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)
@@ -1417,7 +1416,7 @@ yyerrlab:
       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;
@@ -1437,7 +1436,7 @@ yyerrlab:
 
        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