X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/b4cbf822eba2133e123d165603bc5542c5662b33..6cbfbcc58c425fef062c4d759e5d43c56a9a194e:/TODO diff --git a/TODO b/TODO index 27d2c084..a6b677f6 100644 --- a/TODO +++ b/TODO @@ -1,49 +1,11 @@ -*- 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. +* Several %unions +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. When implementing multiple-%union support, bare the following in mind: @@ -118,16 +80,6 @@ Paul suggests: #define BAR 257 ... -> I'm in favor of -> -> %token FOO 256 -> %token BAR 257 -> -> and Bison moves error into 258. - -Yes, I think that's a valid extension too, if the user doesn't define -the token number for error. - * Output directory Akim: