From 18ad57b384e164c337e735df2f0ed0fe3c51fbf5 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 17 Jun 2012 10:54:15 +0200 Subject: [PATCH] news: condemn YYPARSE_PARAM and YYLEX_PARAM. * NEWS: here. (Bison 1.875): Add %parse-param and %lex-param. * doc/bison.texinfo: Spello. --- NEWS | 33 +++++++++++++++++++++++++++++++-- doc/bison.texinfo | 2 +- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 9c5d67b7..72e4b6b3 100644 --- a/NEWS +++ b/NEWS @@ -5,8 +5,10 @@ GNU Bison NEWS ** Future changes: The next major release will drop support for generating parsers in K&R C, - and remove the definition of yystype (removal announced since Bison - 1.875). + and remove the definitions of yystype and yyltype (removal announced since + Bison 1.875). YYPARSE_PARAM and YYLEX_PARAM, which were deprecated in + favor of %parse-param and %lex-param (introduced in Bison 1.875 too), will + no longer be supported. ** The generated header is included (yacc.c) @@ -1202,6 +1204,33 @@ GNU Bison NEWS - "parsing stack overflow..." -> "parser stack overflow" GLR parsers now report "parser stack overflow" as per the Bison manual. +** %parse-param and %lex-param + The macros YYPARSE_PARAM and YYLEX_PARAM provide a means to pass + additional context to yyparse and yylex. They suffer from several + shortcomings: + + - a single argument only can be added, + - their types are weak (void *), + - this context is not passed to anciliary functions such as yyerror, + - only yacc.c parsers support them. + + The new %parse-param/%lex-param directives provide a more precise control. + For instance: + + %parse-param {int *nastiness} + %lex-param {int *nastiness} + %parse-param {int *randomness} + + results in the following signatures: + + int yylex (int *nastiness); + int yyparse (int *nastiness, int *randomness); + + or, if both %pure-parser and %locations are used: + + int yylex (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness); + int yyparse (int *nastiness, int *randomness); + ** Bison now warns if it detects conflicting outputs to the same file, e.g., it generates a warning for "bison -d -o foo.h foo.y" since that command outputs both code and header to foo.h. diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 97b32734..4f2e1c62 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -6011,7 +6011,7 @@ For instance: @end example @noindent -results in the following signature: +results in the following signatures: @example int yylex (int *nastiness); -- 2.45.2