bison-patches
[Top][All Lists]
Advanced

[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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]