]> git.saurik.com Git - bison.git/commitdiff
%printer: support both yyo and yyoutput.
authorAkim Demaille <akim@lrde.epita.fr>
Mon, 16 Apr 2012 15:03:19 +0000 (17:03 +0200)
committerAkim Demaille <akim@lrde.epita.fr>
Mon, 16 Apr 2012 15:34:36 +0000 (17:34 +0200)
lalr1.cc used to support yyo, but not yyoutput.  Support both,
but document only yyoutput (at least until there is some consensus
on this).

* data/c.m4 (yy_symbol_value_print): Also support yyo.
* data/glr.cc  (yy_symbol_value_print_): Support both yyo and yyoutput.
* data/lalr1.cc: Also support yyoutput.
* doc/bison.texinfo: Explicitly use yyoutput in the examples.
* examples/mfcalc/mfcalc.test: Test the -p option.
(cherry picked from commit c50263271db482261b11f7452283c142a780a09d)

Conflicts:

data/c.m4
data/lalr1.cc
doc/bison.texinfo
etc/Makefile.am

data/c.m4
data/glr.cc
data/lalr1.cc
doc/bison.texinfo

index 195c441d4219db19951919aa009a0b246c9e5392..fee006a3d3523eb9389bd4bb35fcd22d6144dced 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -456,6 +456,8 @@ m4_define_default([b4_yy_symbol_print_generate],
 b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
 m4_ifset([b4_parse_param], [, b4_parse_param]))[
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 ]b4_locations_if([  YYUSE (yylocationp);
index 0f9141c46db926ea0d988e9710c49c6e873cd15a..b7a8b40d3c9cbdedcd011a25a90c18aabbb164c1 100644 (file)
@@ -151,9 +151,11 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
   ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype,
                           const semantic_type* yyvaluep, const location_type* yylocationp)
   {
-    /* Pacify ``unused variable'' warnings.  */
-    YYUSE (yyvaluep);
     YYUSE (yylocationp);
+    YYUSE (yyvaluep);
+    std::ostream& yyoutput = debug_stream ();
+    std::ostream& yyo = yyoutput;
+    YYUSE (yyo);
     switch (yytype)
       {
   ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
index d7201dd42c5f5b449c95ff83ed3e4467524dee26..76a8350497a0d0ee1f6fa4d4fb1e894325cc028a 100644 (file)
@@ -446,6 +446,9 @@ do {                                        \
   {
     YYUSE (yylocationp);
     YYUSE (yyvaluep);
+    std::ostream& yyo = debug_stream ();
+    std::ostream& yyoutput = yyo;
+    YYUSE (yyoutput);
     switch (yytype)
       {
   ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
index 1a5b20c4669ea3de8fe14a0cdcae73e76a16a30e..0e9329fb614ecee201a42de77023c6af36d2d60e 100644 (file)
@@ -3079,14 +3079,14 @@ type:
 %code requires @{ #include "type1.h" @}
 %union @{ type1 field1; @}
 %destructor @{ type1_free ($$); @} <field1>
-%printer @{ type1_print ($$); @} <field1>
+%printer @{ type1_print (yyoutput, $$); @} <field1>
 @end group
 
 @group
 %code requires @{ #include "type2.h" @}
 %union @{ type2 field2; @}
 %destructor @{ type2_free ($$); @} <field2>
-%printer @{ type2_print ($$); @} <field2>
+%printer @{ type2_print (yyoutput, $$); @} <field2>
 @end group
 @end example
 
@@ -9665,10 +9665,10 @@ To enable memory deallocation during error recovery, use
 @c FIXME: Document %printer, and mention that it takes a braced-code operand.
 @comment file: calc++-parser.yy
 @example
-%printer    @{ debug_stream () << *$$; @} "identifier"
+%printer    @{ yyoutput << *$$; @} "identifier"
 %destructor @{ delete $$; @} "identifier"
 
-%printer    @{ debug_stream () << $$; @} <ival>
+%printer    @{ yyoutput << $$; @} <ival>
 @end example
 
 @noindent