From 68fff38a09c92653f386aab7853b07da9e2f1ebc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 16 Apr 2012 17:03:19 +0200 Subject: [PATCH] %printer: support both yyo and yyoutput. 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 | 2 ++ data/glr.cc | 6 ++++-- data/lalr1.cc | 3 +++ doc/bison.texinfo | 8 ++++---- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/data/c.m4 b/data/c.m4 index 195c441d..fee006a3 100644 --- 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); diff --git a/data/glr.cc b/data/glr.cc index 0f9141c4..b7a8b40d 100644 --- a/data/glr.cc +++ b/data/glr.cc @@ -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 diff --git a/data/lalr1.cc b/data/lalr1.cc index d7201dd4..76a83504 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -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 diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 1a5b20c4..0e9329fb 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -3079,14 +3079,14 @@ type: %code requires @{ #include "type1.h" @} %union @{ type1 field1; @} %destructor @{ type1_free ($$); @} -%printer @{ type1_print ($$); @} +%printer @{ type1_print (yyoutput, $$); @} @end group @group %code requires @{ #include "type2.h" @} %union @{ type2 field2; @} %destructor @{ type2_free ($$); @} -%printer @{ type2_print ($$); @} +%printer @{ type2_print (yyoutput, $$); @} @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 () << $$; @} +%printer @{ yyoutput << $$; @} @end example @noindent -- 2.45.2