From 02a81e05f964931100cf7c7a83a127c1afb5a457 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 14 Dec 2001 01:51:33 +0000 Subject: [PATCH] Document YYFPRINTF, YYSTDERR. --- doc/bison.texinfo | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 36557012..609f870b 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -706,8 +706,9 @@ In some cases the Bison parser file includes system headers, and in those cases your code should respect the identifiers reserved by those headers. On some non-@sc{gnu} hosts, @code{}, @code{}, and @code{} are included as needed to -declare memory allocators and related types. On all hosts, -@code{} is included if you define @code{YYDEBUG} +declare memory allocators and related types. In the same situation, +C++ parsers may include @code{} and @code{} instead. +Other system headers may be included if you define @code{YYDEBUG} (@pxref{Debugging, ,Debugging Your Parser}). @node Stages @@ -4930,8 +4931,14 @@ of the grammar file (@pxref{Prologue, , The Prologue}). Alternatively, use the @samp{-t} option when you run Bison (@pxref{Invocation, ,Invoking Bison}). We always define @code{YYDEBUG} so that debugging is always possible. -The trace facility uses @code{stderr}, so you must add -@w{@code{#include }} to the prologue unless it is already there. +The trace facility outputs messages with macro calls of the form +@code{YYFPRINTF (YYSTDERR, @var{format}, @var{args})} where +@var{format} and @var{args} are the usual @code{printf} format and +arguments. If you define @code{YYDEBUG} but do not define +@code{YYFPRINTF}, @code{} is automatically included and the +macros are defined to @code{fprintf} and @code{stderr}. In the same +situation, C++ parsers include @code{} instead, and use +@code{std::fprintf} and @code{std::stderr}. Once you have compiled the program with trace facilities, the way to request a trace is to store a nonzero value in the variable @code{yydebug}. @@ -5010,7 +5017,7 @@ Here @var{infile} is the grammar file name, which usually ends in @samp{.y}. The parser file's name is made by replacing the @samp{.y} with @samp{.tab.c}. Thus, the @samp{bison foo.y} filename yields @file{foo.tab.c}, and the @samp{bison hack/foo.y} filename yields -@file{hack/foo.tab.c}. It's is also possible, in case you are writting +@file{hack/foo.tab.c}. It's is also possible, in case you are writing C++ code instead of C in your grammar file, to name it @file{foo.ypp} or @file{foo.y++}. Then, the output files will take an extention like the given one as input (repectively @file{foo.tab.cpp} and @file{foo.tab.c++}). -- 2.47.2