From: Paul Eggert Date: Mon, 17 Dec 2001 18:48:43 +0000 (+0000) Subject: Define YYDEBUG to 0 if it is not defined and if we are not debugging. X-Git-Tag: BISON-1_30h~6 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/cc6ed5f7f1d81de46bbbaafc5af7a3718d1cf7f3 Define YYDEBUG to 0 if it is not defined and if we are not debugging. POSIX requires this. --- diff --git a/NEWS b/NEWS index 58884909..831648ee 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,9 @@ Bison News Changes in version 1.30h: +* When the generated parser lacks debugging code, YYDEBUG is now 0 + (as POSIX requires) instead of being undefined. + * User Actions Bison has always permitted actions such as { $$ = $1 }: it adds the ending semicolon. Now if in Yacc compatibility mode, the semicolon diff --git a/doc/bison.1 b/doc/bison.1 index 927a128f..93eaf201 100644 --- a/doc/bison.1 +++ b/doc/bison.1 @@ -262,9 +262,9 @@ and so on. .ns .TP .B \-\-debug -Output a definition of the macro +In the parser file, define the macro .B YYDEBUG -into the parser file, +to 1 if it is not already defined, so that the debugging facilities are compiled. .TP .B \-v diff --git a/doc/bison.rnh b/doc/bison.rnh index c90bd085..23efa323 100644 --- a/doc/bison.rnh +++ b/doc/bison.rnh @@ -56,7 +56,8 @@ foo_tab.c. .indent -1 2 /DEBUG .skip -Output a definition of the macro YYDEBUG into the parser file, +In the parser file, +define the macro YYDEBUG to 1 if it is not already defined, so that the debugging facilities are compiled. .skip .indent -1 diff --git a/doc/bison.texinfo b/doc/bison.texinfo index e604012c..e9e37701 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -708,8 +708,8 @@ headers. On some non-@sc{gnu} hosts, @code{}, @code{}, and @code{} are included as needed to 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}). +Other system headers may be included if you define @code{YYDEBUG} to a +nonzero value (@pxref{Debugging, ,Debugging Your Parser}). @node Stages @section Stages in Using Bison @@ -3235,9 +3235,9 @@ directives: @table @code @item %debug -Output a definition of the macro @code{YYDEBUG} into the parser file, so -that the debugging facilities are compiled. @xref{Debugging, ,Debugging -Your Parser}. +In the parser file, define the macro @code{YYDEBUG} to 1 if it is not +already defined, so that the debugging facilities are compiled. +@xref{Debugging, ,Debugging Your Parser}. @item %defines Write an extra output file containing macro definitions for the token @@ -4925,21 +4925,23 @@ If a Bison grammar compiles properly but doesn't do what you want when it runs, the @code{yydebug} parser-trace feature can help you figure out why. To enable compilation of trace facilities, you must define the macro -@code{YYDEBUG} when you compile the parser. You could use -@samp{-DYYDEBUG=1} as a compiler option or you could put @samp{#define -YYDEBUG 1} in the C declarations section of the grammar file -(@pxref{C Declarations, ,The C Declarations Section}). 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. +@code{YYDEBUG} to a nonzero value when you compile the parser. You +could use @samp{-DYYDEBUG=1} as a compiler option or you could put +@samp{#define YYDEBUG 1} in the C declarations section of the grammar +file (@pxref{C Declarations, ,The C Declarations Section}). +Alternatively, use the @samp{-t} option when you run Bison +(@pxref{Invocation, ,Invoking Bison}) or the @code{%debug} declaration +(@pxref{Decl Summary, ,Bison Declaration Summary}). We suggest that +you always define @code{YYDEBUG} so that debugging is always possible. 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}. +arguments. If you define @code{YYDEBUG} to a nonzero value 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}. @@ -5100,9 +5102,9 @@ you are developing Bison. @item -t @itemx --debug -Output a definition of the macro @code{YYDEBUG} into the parser file, so -that the debugging facilities are compiled. @xref{Debugging, ,Debugging -Your Parser}. +In the parser file, define the macro @code{YYDEBUG} to 1 if it is not +already defined, so that the debugging facilities are compiled. +@xref{Debugging, ,Debugging Your Parser}. @item --locations Pretend that @code{%locations} was specified. @xref{Decl Summary}.