bison-patches
[Top][All Lists]
Advanced

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

FYI: Split yy_symbol_print in two


From: Akim Demaille
Subject: FYI: Split yy_symbol_print in two
Date: Thu, 22 Dec 2005 14:01:15 +0100
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux)

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4
        (b4_yysymprint_generate): Rename as...
        (b4_yy_symbol_print_generate): this.
        Generate yy_symbol_print instead of yysymprint.
        Generate also yy_symbol_value_print, and use it.

Index: data/c.m4
===================================================================
RCS file: /cvsroot/bison/bison/data/c.m4,v
retrieving revision 1.43
diff -u -u -r1.43 c.m4
--- data/c.m4 9 Dec 2005 22:14:36 -0000 1.43
+++ data/c.m4 22 Dec 2005 13:01:06 -0000
@@ -429,18 +429,19 @@
 ])
 
 
-# b4_yysymprint_generate(FUNCTION-DECLARATOR)
-# -------------------------------------------
-# Generate the "yysymprint" function, which declaration is issued using
+# b4_yy_symbol_print_generate(FUNCTION-DECLARATOR)
+# ------------------------------------------------
+# Generate the "yy_symbol_print" function, which declaration is issued using
 # FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C
 # or "b4_c_function_def" for K&R.
-m4_define_default([b4_yysymprint_generate],
-[[/*--------------------------------.
+m4_define_default([b4_yy_symbol_print_generate],
+[[
+/*--------------------------------.
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
 /*ARGSUSED*/
-]$1([yysymprint],
+]$1([yy_symbol_value_print],
     [static void],
                [[FILE *yyoutput],                       [yyoutput]],
                [[int yytype],                           [yytype]],
@@ -452,16 +453,7 @@
 ]b4_location_if([  YYUSE (yylocationp);
 ])dnl
 b4_parse_param_use[]dnl
-[  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
-
-]b4_location_if([  YY_LOCATION_PRINT (yyoutput, *yylocationp);
-  YYFPRINTF (yyoutput, ": ");
-])dnl
-[
-# ifdef YYPRINT
+[# ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
 # endif
@@ -471,6 +463,31 @@
 [      default:
         break;
     }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+]$1([yy_symbol_print],
+    [static void],
+               [[FILE *yyoutput],                       [yyoutput]],
+               [[int yytype],                           [yytype]],
+               [[const YYSTYPE * const yyvaluep],       [yyvaluep]][]dnl
+b4_location_if([, [[const YYLTYPE * const yylocationp], [yylocationp]]])[]dnl
+m4_ifset([b4_parse_param], [, b4_parse_param]))[
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+]b4_location_if([  YY_LOCATION_PRINT (yyoutput, *yylocationp);
+  YYFPRINTF (yyoutput, ": ");
+])dnl
+[  yy_symbol_value_print (yyoutput, yytype, yyvaluep]dnl
+b4_location_if([, yylocationp])[]b4_user_args[);
   YYFPRINTF (yyoutput, ")");
 }]dnl
 ])
Index: data/glr.c
===================================================================
RCS file: /cvsroot/bison/bison/data/glr.c,v
retrieving revision 1.148
diff -u -u -r1.148 glr.c
--- data/glr.c 22 Dec 2005 04:38:26 -0000 1.148
+++ data/glr.c 22 Dec 2005 13:01:06 -0000
@@ -577,14 +577,14 @@
     YYFPRINTF Args;                            \
 } while (YYID (0))
 
-]b4_yysymprint_generate([b4_c_ansi_function_def])[
+]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[
 
 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                     \
 do {                                                                       \
   if (yydebug)                                                             \
     {                                                                      \
       YYFPRINTF (stderr, "%s ", Title);                                        
    \
-      yysymprint (stderr,                                                  \
+      yy_symbol_print (stderr,                                             \
                  Type, Value]b4_location_if([, Location])[]b4_user_args[); \
       YYFPRINTF (stderr, "\n");                                                
    \
     }                                                                      \
@@ -976,7 +976,7 @@
       if (yydebug)
        {
          YYFPRINTF (stderr, "%s unresolved ", yymsg);
-         yysymprint (stderr, yystos[yys->yylrState],
+         yy_symbol_print (stderr, yystos[yys->yylrState],
                      &yys->yysemantics.yysval]b4_location_if([, 
&yys->yyloc])[]b4_user_args[);
          YYFPRINTF (stderr, "\n");
        }
@@ -1407,10 +1407,10 @@
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       fprintf (stderr, "   $%d = ", yyi + 1);
-      yysymprint (stderr, yyrhs[yyprhs[yyrule] + yyi],
-                 &]b4_rhs_value(yynrhs, yyi + 1)[
-                 ]b4_location_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
-                 b4_user_args[);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+                      &]b4_rhs_value(yynrhs, yyi + 1)[
+                      ]b4_location_if([, &]b4_rhs_location(yynrhs, yyi + 
1))[]dnl
+                      b4_user_args[);
       fprintf (stderr, "\n");
     }
 }
Index: data/lalr1.cc
===================================================================
RCS file: /cvsroot/bison/bison/data/lalr1.cc,v
retrieving revision 1.117
diff -u -u -r1.117 lalr1.cc
--- data/lalr1.cc 22 Dec 2005 04:38:26 -0000 1.117
+++ data/lalr1.cc 22 Dec 2005 13:01:06 -0000
@@ -153,13 +153,20 @@
 b4_error_verbose_if([, int tok])[);
 
 #if YYDEBUG
+    /// \brief Report a symbol value on the debug stream.
+    /// \param yytype       The token type.
+    /// \param yyvaluep     Its semantic value.
+    /// \param yylocationp  Its location.
+    virtual void yy_symbol_value_print_ (int yytype,
+                                        const semantic_type* yyvaluep,
+                                        const location_type* yylocationp);
     /// \brief Report a symbol on the debug stream.
     /// \param yytype       The token type.
     /// \param yyvaluep     Its semantic value.
     /// \param yylocationp  Its location.
-    virtual void yysymprint_ (int yytype,
-                             const semantic_type* yyvaluep,
-                             const location_type* yylocationp);
+    virtual void yy_symbol_print_ (int yytype,
+                                  const semantic_type* yyvaluep,
+                                  const location_type* yylocationp);
 #endif /* ! YYDEBUG */
 
 
@@ -331,7 +338,7 @@
   if (yydebug_)                                                \
     {                                                  \
       *yycdebug_ << Title << ' ';                      \
-      yysymprint_ ((Type), (Value), (Location));       \
+      yy_symbol_print_ ((Type), (Value), (Location));  \
       *yycdebug_ << std::endl;                         \
     }                                                  \
 } while (false)
@@ -419,26 +426,29 @@
   | Print this symbol on YYOUTPUT.  |
   `--------------------------------*/
 
-  void
-  ]b4_parser_class_name[::yysymprint_ (int yytype,
+  inline void
+  ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
                            const semantic_type* yyvaluep, const location_type* 
yylocationp)
   {
-    /* Backward compatibility, but should be removed eventually.  */
-    std::ostream& cdebug_ = *yycdebug_;
-
-    YYUSE (!&cdebug_);
     YYUSE (yylocationp);
     YYUSE (yyvaluep);
-
-    *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm")
-            << ' ' << yytname_[yytype] << " ("
-               << *yylocationp << ": ";
     switch (yytype)
       {
   ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
 [       default:
           break;
       }
+  }
+
+
+  void
+  ]b4_parser_class_name[::yy_symbol_print_ (int yytype,
+                           const semantic_type* yyvaluep, const location_type* 
yylocationp)
+  {
+    *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm")
+              << ' ' << yytname_[yytype] << " ("
+               << *yylocationp << ": ";
+    yy_symbol_value_print_ (yytype, yyvaluep, yylocationp);
     *yycdebug_ << ')';
   }
 #endif /* ! YYDEBUG */
Index: data/yacc.c
===================================================================
RCS file: /cvsroot/bison/bison/data/yacc.c,v
retrieving revision 1.124
diff -u -u -r1.124 yacc.c
--- data/yacc.c 22 Dec 2005 04:38:26 -0000 1.124
+++ data/yacc.c 22 Dec 2005 13:01:06 -0000
@@ -647,13 +647,13 @@
   if (yydebug)                                                           \
     {                                                                    \
       YYFPRINTF (stderr, "%s ", Title);                                        
  \
-      yysymprint (stderr,                                                \
+      yy_symbol_print (stderr,                                           \
                   Type, Value]b4_location_if([, Location])[]b4_user_args[); \
       YYFPRINTF (stderr, "\n");                                                
  \
     }                                                                    \
 } while (YYID (0))
 
-]b4_yysymprint_generate([b4_c_function_def])[
+]b4_yy_symbol_print_generate([b4_c_function_def])[
 
 /*------------------------------------------------------------------.
 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
@@ -696,10 +696,10 @@
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       fprintf (stderr, "   $%d = ", yyi + 1);
-      yysymprint (stderr, yyrhs[yyprhs[yyrule] + yyi],
-                  &]b4_rhs_value(yynrhs, yyi + 1)[
-                  ]b4_location_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl
-                 b4_user_args[);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+                       &]b4_rhs_value(yynrhs, yyi + 1)[
+                       ]b4_location_if([, &]b4_rhs_location(yynrhs, yyi + 
1))[]dnl
+                      b4_user_args[);
       fprintf (stderr, "\n");
     }
 }





reply via email to

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