[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: maint: news: condemn YYPARSE_PARAM and YYLEX_PARAM
From: |
Akim Demaille |
Subject: |
Re: maint: news: condemn YYPARSE_PARAM and YYLEX_PARAM |
Date: |
Thu, 21 Jun 2012 17:13:32 +0200 |
Le 17 juin 2012 à 10:55, Akim Demaille a écrit :
> Will install in maint if there is no resistance.
Installed as follows.
From 18ad57b384e164c337e735df2f0ed0fe3c51fbf5 Mon Sep 17 00:00:00 2001
From: Akim Demaille <address@hidden>
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 9c5d67b..72e4b6b 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 97b3273..4f2e1c6 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);
--
1.7.10.4