From: Akim Demaille Date: Sun, 17 Jun 2012 08:54:15 +0000 (+0200) Subject: news: condemn YYPARSE_PARAM and YYLEX_PARAM. X-Git-Tag: v2.6~63 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/18ad57b384e164c337e735df2f0ed0fe3c51fbf5?hp=da402d1caef3f4a849cefe516780d7a3cf61811f news: condemn YYPARSE_PARAM and YYLEX_PARAM. * NEWS: here. (Bison 1.875): Add %parse-param and %lex-param. * doc/bison.texinfo: Spello. --- 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);