]> git.saurik.com Git - bison.git/blobdiff - TODO
* tests/sets.at (AT_EXTRACT_SETS): Don't use 8 char long sed labels.
[bison.git] / TODO
diff --git a/TODO b/TODO
index 0b12b008c33436f4d0f134378230e1b6af3c1380..fd0d4f7084e19c4672d0e771b0dd330ecda6ee68 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,5 +1,50 @@
 -*- outline -*-
 
+
+* URGENT: Prologue
+The %union is declared after the user C declarations. It can be
+a problem if YYSTYPE is declared after the user part.
+
+Actually, the real problem seems that the %union ought to be output
+where it was defined.  For instance, in gettext/intl/plural.y, we
+have:
+
+       %{
+       ...
+       #include "gettextP.h"
+       ...
+       %}
+
+       %union {
+         unsigned long int num;
+         enum operator op;
+         struct expression *exp;
+       }
+
+       %{
+       ...
+       static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
+       ...
+       %}
+
+Where the first part defines struct expression, the second uses it to
+define YYSTYPE, and the last uses YYSTYPE.  Only this order is valid.
+
+Note that we have the same problem with GCC.
+
+I suggest splitting the prologue into pre-prologue and post-prologue.
+The reason is that:
+
+1. we keep language independance as it is the skeleton that joins the
+two prologues (there is no need for the engine to encode union yystype
+and to output it inside the prologue, which breaks the language
+independance of the generator)
+
+2. that makes it possible to have several %union in input.  I think
+this is a pleasant (but useless currently) feature, but in the future,
+I want a means to %include other bits of grammars, and _then_ it will
+be important for the various bits to define their needs in %union.
+
 * Coding system independence
 Paul notes:
 
@@ -171,40 +216,6 @@ critical for user data: when aborting a parsing, when handling the
 error token etc., we often throw away yylval without giving a chance
 of cleaning it up to the user.
 
-* NEWS
-Sort from 1.31 NEWS.
-
-* Prologue
-The %union is declared after the user C declarations. It can be
-a problem if YYSTYPE is declared after the user part.  []
-
-Actually, the real problem seems that the %union ought to be output
-where it was defined.  For instance, in gettext/intl/plural.y, we
-have:
-
-       %{
-       ...
-       #include "gettextP.h"
-       ...
-       %}
-
-       %union {
-         unsigned long int num;
-         enum operator op;
-         struct expression *exp;
-       }
-
-       %{
-       ...
-       static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-       ...
-       %}
-
-Where the first part defines struct expression, the second uses it to
-define YYSTYPE, and the last uses YYSTYPE.  Only this order is valid.
-
-Note that we have the same problem with GCC.
-
 * --graph
 Show reductions.       []
 
@@ -400,7 +411,7 @@ The way I solved this was to define a macro YYACT_EPILOGUE that would
 be invoked after the action. For reasons of symmetry I also added
 YYACT_PROLOGUE. Although I had no use for that I can envision how it
 might come in handy for debugging purposes.
-All is needed is to add 
+All is needed is to add
 
 #if YYLSP_NEEDED
     YYACT_EPILOGUE (yyval, (yyvsp - yylen), yylen, yyloc, (yylsp - yylen));