bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

07-yytoken.patch


From: Akim Demaille
Subject: 07-yytoken.patch
Date: Tue, 12 Nov 2002 08:44:34 +0100

Index: 0.10/ChangeLog
--- 0.10/ChangeLog Sun, 10 Nov 2002 14:55:11 +0100 akim (bison/d/40_ChangeLog 
1.8 644)
+++ 0.10(w)/ChangeLog Sun, 10 Nov 2002 16:25:19 +0100 akim 
(bison/d/40_ChangeLog 1.8 644)
@@ -1,5 +1,17 @@
 2002-11-10  Akim Demaille  <address@hidden>
 
+       * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
+       * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
+       Don't work on yychar (i.e., do set it to YYEMPTY, don't match
+       it against YYEMPTY and so forth), work on yytoken (i.e., set
+       it to YYEMPTY etc.).
+       (yydestruct): Replace with a b4_yydestruct_generate invocation.
+       (b4_symbol_actions): Remove.
+       * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
+       for 0, end-of-input.
+
+2002-11-10  Akim Demaille  <address@hidden>
+       
        * doc/bison.texinfo (Destructor Decl): New.
 
 2002-11-10  Akim Demaille  <address@hidden>
Index: 0.10/data/glr.c
--- 0.10/data/glr.c Fri, 08 Nov 2002 16:19:16 +0100 akim (bison/b/43_glr.c 1.1 
644)
+++ 0.10(w)/data/glr.c Sun, 10 Nov 2002 16:22:13 +0100 akim (bison/b/43_glr.c 
1.1 644)
@@ -292,8 +292,9 @@
 #define YYUNDEFTOK  ]b4_undef_token_number[
 #define YYMAXUTOK   ]b4_user_token_number_max[
 
-#define YYTRANSLATE(YYX) \
-  ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)                                               \
+  ((YYX <= 0) ? YYEOF :                                                        
\
+   (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
@@ -1520,7 +1521,7 @@
            {
              YYDPRINTF ((stderr, "Reading a token: "));
              yychar = YYLEX;
-             *yytokenp = YYTRANSLATE(yychar);
+             *yytokenp = YYTRANSLATE (yychar);
              YYDPRINTF ((stderr, "Next token is %s\n",
                          yytokenName (*yytokenp)));
            }
@@ -1593,8 +1594,7 @@
              yysize += strlen (yytokenName (yyx)) + strlen (yyprefix),
                yycount += 1, yyprefix = " or ";
          yymsg = yyp = (char*) malloc (yysize);
-         sprintf (yyp, "parse error, unexpected %s",
-                  yytokenName (*yytokenp));
+         sprintf (yyp, "parse error, unexpected %s", yytokenName (*yytokenp));
          yyp += strlen (yyp);
          if (yycount < 5)
            {
Index: 0.10/data/yacc.c
--- 0.10/data/yacc.c Fri, 08 Nov 2002 16:19:16 +0100 akim (bison/b/45_yacc.c 
1.1 644)
+++ 0.10(w)/data/yacc.c Sun, 10 Nov 2002 16:26:40 +0100 akim (bison/b/45_yacc.c 
1.1 644)
@@ -152,29 +152,6 @@
                   [m4_bpatsubst(m4_toupper([BISON_]b4_output_header_name),
                                 [[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]], [_])])
 
-
-
-## --------------------------------------------------------- ##
-## Defining symbol actions, e.g., printers and destructors.  ##
-## --------------------------------------------------------- ##
-
-# b4_symbol_actions(FILENAME, LINENO,
-#                   SYMBOL-TAG, SYMBOL-NUM,
-#                   SYMBOL-ACTION, SYMBOL-TYPENAME)
-# -------------------------------------------------
-m4_define([b4_symbol_actions],
-[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
-m4_pushdef([b4_at_dollar], [yylocation])dnl
-      case $4: /* $3 */
-b4_syncline([$2], [$1])
-        $5;
-b4_syncline([__oline__], [__ofile__])
-        break;
-m4_popdef([b4_at_dollar])dnl
-m4_popdef([b4_dollar_dollar])dnl
-])
-
-
 # We do want M4 expansion after # for CPP macros.
 m4_changecom()
 m4_divert(0)dnl
@@ -373,15 +350,16 @@
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  b4_undef_token_number
-#define YYMAXUTOK   b4_user_token_number_max
+#define YYMAXUTOK   b4_user_token_number_max[
 
-#define YYTRANSLATE(X) \
-  ((unsigned)(X) <= YYMAXUTOK ? yytranslate[[X]] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)                                               \
+  ((YYX <= 0) ? YYEOF :                                                        
\
+   (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[[YYLEX]] -- Bison symbol number corresponding to YYLEX.  */
-static const b4_int_type_for([b4_translate]) yytranslate[[]] =
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const ]b4_int_type_for([b4_translate])[ yytranslate[] =
 {
-  b4_translate
+  ]b4_translate
 };
 
 #if YYDEBUG
@@ -502,7 +480,7 @@
 #endif
 
 #define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
+#define yyclearin      (yytoken = YYEMPTY)
 #define YYEMPTY                -2
 #define YYEOF          0
 
@@ -520,11 +498,11 @@
 
 #define YYBACKUP(Token, Value)                                 \
 do                                                             \
-  if (yychar == YYEMPTY && yylen == 1)                         \
+  if (yytoken == YYEMPTY && yylen == 1)                                \
     {                                                          \
       yychar = (Token);                                                \
       yylval = (Value);                                                \
-      yychar1 = YYTRANSLATE (yychar);                          \
+      yytoken = YYTRANSLATE (yychar);                          \
       YYPOPSTACK;                                              \
       goto yybackup;                                           \
     }                                                          \
@@ -697,30 +675,7 @@
 }
 #endif /* YYDEBUG. */
 
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-b4_c_function_def([yydestruct],
-                 [static void],
-                 [[int yytype],         [yytype]],
-                 [[YYSTYPE yyvalue],    [yyvalue]]b4_location_if([,
-                 [[YYLTYPE yylocation], [yylocation]]]))
-{
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvalue;
-b4_location_if([  (void) yylocation;
-])dnl
-
-  switch (yytype)
-    {
-m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))dnl
-      default:
-        break;
-    }
-}
-
+b4_yydestruct_generate([b4_c_function_def])
 
 
 /* Prevent warnings from -Wmissing-prototypes.  */
@@ -781,7 +736,7 @@
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
   /* Lookahead token as an internal (translated) token number.  */
-  int yychar1 = 0;
+  int yytoken = 0;
 
   /* Three stacks and their tools:
      `yyss': related to states,
@@ -825,7 +780,7 @@
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY;            /* Cause a token to be read.  */
+  yytoken = YYEMPTY;           /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
@@ -935,39 +890,31 @@
 
   /* Not known => get a lookahead token if don't already have one.  */
 
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
-
-  if (yychar == YYEMPTY)
+  /* YYTOKEN is either YYEMPTY or YYEOF or a valid token.  */
+  if (yytoken == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
+      yytoken = YYTRANSLATE (yychar);
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with.  */
-
-  if (yychar <= 0)             /* This means end of input.  */
+  if (yytoken == YYEOF)
     {
-      yychar1 = 0;
-      yychar = YYEOF;          /* Don't call YYLEX any more.  */
-
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE (yychar);
-
       /* We have to keep this `#if YYDEBUG', since we use variables
         which are defined only if `YYDEBUG' is set.  */
       YYDPRINTF ((stderr, "Next token is "));
-      YYDSYMPRINT ((stderr, yychar1, yylval]b4_location_if([, yyloc])[));
+      YYDSYMPRINT ((stderr, yytoken, yylval]b4_location_if([, yyloc])[));
       YYDPRINTF ((stderr, "\n"));
     }
 
-  /* If the proper action on seeing token YYCHAR1 is to reduce or to
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
      detect an error, take that action.  */
-  yyn += yychar1;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
   yyn = yytable[yyn];
   if (yyn <= 0)
@@ -983,11 +930,11 @@
 
   /* Shift the lookahead token.  */
   YYDPRINTF ((stderr, "Shifting token %d (%s), ",
-             yychar, yytname[yychar1]));
+             yytoken, yytname[yytoken]));
 
   /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
+  if (yytoken != YYEOF)
+    yytoken = YYEMPTY;
 
   *++yyvsp = yylval;
 ]b4_location_if([  *++yylsp = yylloc;])[
@@ -1159,7 +1106,7 @@
         error, discard it.  */
 
       /* Return failure if at end of input.  */
-      if (yychar == YYEOF)
+      if (yytoken == YYEOF)
         {
          /* Pop the error token.  */
           YYPOPSTACK;
@@ -1178,9 +1125,9 @@
         }
 
       YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
-                 yychar, yytname[yychar1]));
-      yydestruct (yychar1, yylval]b4_location_if([, yylloc])[);
-      yychar = YYEMPTY;
+                 yytoken, yytname[yytoken]));
+      yydestruct (yytoken, yylval]b4_location_if([, yylloc])[);
+      yytoken = YYEMPTY;
     }
 
   /* Else will try to reuse lookahead token after shifting the error
Index: 0.10/data/c.m4
--- 0.10/data/c.m4 Sat, 09 Nov 2002 16:45:25 +0100 akim (bison/b/46_c.m4 1.2 
644)
+++ 0.10(w)/data/c.m4 Sun, 10 Nov 2002 15:56:00 +0100 akim (bison/b/46_c.m4 1.2 
644)
@@ -320,3 +320,54 @@
 m4_define([b4_syncline],
 [m4_if(b4_synclines_flag, 1,
        [[#]line $1 "$2"])])
+
+
+## --------------------------------------------------------- ##
+## Defining symbol actions, e.g., printers and destructors.  ##
+## --------------------------------------------------------- ##
+
+# b4_symbol_actions(FILENAME, LINENO,
+#                   SYMBOL-TAG, SYMBOL-NUM,
+#                   SYMBOL-ACTION, SYMBOL-TYPENAME)
+# -------------------------------------------------
+m4_define([b4_symbol_actions],
+[m4_pushdef([b4_dollar_dollar], [yyvalue.$6])dnl
+m4_pushdef([b4_at_dollar], [yylocation])dnl
+      case $4: /* $3 */
+b4_syncline([$2], [$1])
+        $5;
+b4_syncline([__oline__], [__ofile__])
+        break;
+m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])dnl
+])
+
+
+# b4_yydestruct_generate(FUNTION-DECLARATOR)
+# ------------------------------------------
+# Generate the "yydestruct" function, which declaration is issued using
+# FUNTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
+# or "b4_c_function_def" for K&R.
+m4_define([b4_yydestruct_generate],
+[[/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+]$1([yydestruct],
+    [static void],
+    [[int yytype],         [yytype]],
+    [[YYSTYPE yyvalue],    [yyvalue]]b4_location_if([,
+    [[YYLTYPE yylocation], [yylocation]]]))[
+{
+  /* Pacify ``unused variable'' warnings.  */
+  (void) yyvalue;
+]b4_location_if([  (void) yylocation;
+])[
+  switch (yytype)
+    {
+]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
+      default:
+        break;
+    }
+}]dnl
+])




reply via email to

[Prev in Thread] Current Thread [Next in Thread]