doc: clearly deprecate YYPRINT

* doc/bison.texi (Prologue): Stop using YYPRINT as an example.
(The YYPRINT Macro): Clearly show this macro is deprecated.
This commit is contained in:
Akim Demaille
2019-12-07 15:03:41 +01:00
parent 5e71eef267
commit 20107b77c0
3 changed files with 24 additions and 22 deletions

6
NEWS
View File

@@ -2,6 +2,12 @@ GNU Bison NEWS
* Noteworthy changes in release ?.? (????-??-??) [?] * Noteworthy changes in release ?.? (????-??-??) [?]
** Deprecated features
The YYPRINT macro, which works only with yacc.c and only for tokens, was
obsoleted long ago by %printer, introduced in Bison 1.50 (November 2002).
It is deprecated and its support will be removed eventually.
** New Features ** New Features
*** A skeleton for the D programming language *** A skeleton for the D programming language

3
TODO
View File

@@ -1,7 +1,4 @@
* Bison 3.5 * Bison 3.5
** Deprecate YYPRINT
The doc shows it too much.
** doc ** doc
I feel its ugly to use the GNU style to declare functions in the doc. It I feel its ugly to use the GNU style to declare functions in the doc. It
generates tons of white space in the page, and may contribute to bad page generates tons of white space in the page, and may contribute to bad page

View File

@@ -2935,8 +2935,7 @@ declaration.
@group @group
%@{ %@{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token (enum yytokentype token, YYSTYPE val);
#define YYPRINT(F, N, L) print_token_value (F, N, L)
%@} %@}
@end group @end group
@@ -2985,8 +2984,7 @@ Look again at the example of the previous section:
@group @group
%@{ %@{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token (enum yytokentype token, YYSTYPE val);
#define YYPRINT(F, N, L) print_token_value (F, N, L)
%@} %@}
@end group @end group
@@ -3048,8 +3046,7 @@ the same time:
@group @group
%code @{ %code @{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token (enum yytokentype token, YYSTYPE val);
#define YYPRINT(F, N, L) print_token_value (F, N, L)
static void trace_token (enum yytokentype token, YYLTYPE loc); static void trace_token (enum yytokentype token, YYLTYPE loc);
@} @}
@end group @end group
@@ -3114,8 +3111,7 @@ Thus, they belong in one or more @code{%code requires}:
@group @group
%code @{ %code @{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token (enum yytokentype token, YYSTYPE val);
#define YYPRINT(F, N, L) print_token_value (F, N, L)
static void trace_token (enum yytokentype token, YYLTYPE loc); static void trace_token (enum yytokentype token, YYLTYPE loc);
@} @}
@end group @end group
@@ -3194,8 +3190,7 @@ unqualified @code{%code} to a @code{%code provides}:
@group @group
%code @{ %code @{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token (FILE *file, int token, YYSTYPE val);
#define YYPRINT(F, N, L) print_token_value (F, N, L)
@} @}
@end group @end group
@@ -10069,9 +10064,7 @@ of variables show where in the grammar it is working.
The debugging information normally gives the token type of each token read, The debugging information normally gives the token type of each token read,
but not its semantic value. The @code{%printer} directive allows specify but not its semantic value. The @code{%printer} directive allows specify
how semantic values are reported, see @ref{Printer Decl, , Printing how semantic values are reported, see @ref{Printer Decl, , Printing
Semantic Values}. For backward compatibility, Yacc like C parsers may also Semantic Values}.
use the @code{YYPRINT} (@pxref{The YYPRINT Macro, , The @code{YYPRINT}
Macro}), but its use is discouraged.
As a demonstration of @code{%printer}, consider the multi-function As a demonstration of @code{%printer}, consider the multi-function
calculator, @code{mfcalc} (@pxref{Multi-function Calc}). To enable run-time calculator, @code{mfcalc} (@pxref{Multi-function Calc}). To enable run-time
@@ -10234,14 +10227,16 @@ Cleanup: popping nterm input ()
@node The YYPRINT Macro @node The YYPRINT Macro
@subsection The @code{YYPRINT} Macro @subsection The @code{YYPRINT} Macro
@findex YYPRINT @findex YYPRINT
Before @code{%printer} support, semantic values could be displayed using the
@code{YYPRINT} macro, which works only for terminal symbols and only with The @code{%printer} directive was introduced in Bison 1.50 (Novembre 2002).
the @file{yacc.c} skeleton. Before then, @code{YYPRINT} provided a similar feature, but only for
terminal symbols and only with the @file{yacc.c} skeleton.
@deffn {Macro} YYPRINT (@var{stream}, @var{token}, @var{value}); @deffn {Macro} YYPRINT (@var{stream}, @var{token}, @var{value});
@findex YYPRINT @findex YYPRINT
Deprecated, will be removed eventually.
If you define @code{YYPRINT}, it should take three arguments. The parser If you define @code{YYPRINT}, it should take three arguments. The parser
will pass a standard I/O stream, the numeric code for the token type, and will pass a standard I/O stream, the numeric code for the token type, and
the token value (from @code{yylval}). the token value (from @code{yylval}).
@@ -10254,7 +10249,7 @@ calculator (@pxref{Mfcalc Declarations, ,Declarations for @code{mfcalc}}):
@example @example
%@{ %@{
static void print_token_value (FILE *, int, YYSTYPE); static void print_token_value (FILE *file, int type, YYSTYPE value);
#define YYPRINT(File, Type, Value) \ #define YYPRINT(File, Type, Value) \
print_token_value (File, Type, Value) print_token_value (File, Type, Value)
%@} %@}
@@ -10271,6 +10266,9 @@ print_token_value (FILE *file, int type, YYSTYPE value)
@} @}
@end example @end example
@xref{Mfcalc Traces, ,Enabling Debug Traces for @code{mfcalc}}, for the
proper use of @code{%printer}.
@c ================================================= Invoking Bison @c ================================================= Invoking Bison
@node Invocation @node Invocation
@@ -14232,7 +14230,8 @@ parsing. @xref{Parser Function, ,The Parser Function @code{yyparse}}.
@deffn {Macro} YYPRINT @deffn {Macro} YYPRINT
Macro used to output token semantic values. For @file{yacc.c} only. Macro used to output token semantic values. For @file{yacc.c} only.
Obsoleted by @code{%printer}. Deprecated, use @code{%printer} instead (@pxref{Printer Decl, , Printing
Semantic Values}).
@xref{The YYPRINT Macro, , The @code{YYPRINT} Macro}. @xref{The YYPRINT Macro, , The @code{YYPRINT} Macro}.
@end deffn @end deffn