X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/437c2d80006f7c4729cffd329c106de50dbd4acc..080e734812d0fe1f427e16b5e9c7e7fd55c89347:/TODO diff --git a/TODO b/TODO index 7b4b7fd4..3b2bf690 100644 --- a/TODO +++ b/TODO @@ -17,8 +17,8 @@ Write a first documentation for C++ output. * Documentation -Before releasing, make sure the documentation refers to the current -`output' format. +Before releasing, make sure the documentation ("Understanding your +parser") refers to the current `output' format. * GLR & C++ @@ -29,7 +29,7 @@ Currently, the GLR parser cannot compile with a C++ compiler. ** GLR How would Paul like to display the conflicted actions? In particular, -what when two reductions are possible on a given lookahead, but one is +what when two reductions are possible on a given look-ahead token, but one is part of $default. Should we make the two reductions explicit, or just keep $default? See the following point. @@ -52,10 +52,39 @@ DeRemer and Penello: they already provide the algorithm. * Extensions -** yyerror, yysymprint interface +** %destructor +I think we should document it as experimental, and allow its use in +the next releases. But we also need to port it to GLR. What about +lalr1.cc? Well, read what Hans reported, maybe we don't want +%detructor. On the other hand, there is no reason not to provide it: +users can avoid its use. + +** $foo +Have a look at the Lemon parser generator: instead of $1, $2 etc. they +can name the values. This is much more pleasant. For instance: + + exp (res): exp (a) '+' exp (b) { $res = $a + $b; }; + +I love this. I have been bitten too often by the removal of the +symbol, and forgetting to shift all the $n to $n-1. If you are +unlucky, it compiles... + +** $-1 +We should find a means to provide an access to values deep in the +stack. For instance, instead of + + baz: qux { $$ = $-1 + $0 + $1; } + +we should be able to have: + + foo($foo) bar($bar) baz($bar): qux($qux) { $baz = $foo + $bar + $qux; } + +Or something like this. + +** yysymprint interface It should be improved, in particular when using Bison features such as -locations, and YYPARSE_PARAMS. For the time being, it is recommended -to #define yyerror and yyprint to steal internal variables... +locations, and YYPARSE_PARAMS. For the time being, it is almost +recommended to yyprint to steal internal variables... ** Several %unions I think this is a pleasant (but useless currently) feature, but in the @@ -88,6 +117,20 @@ to avoid falling into another CPP mistake. ** -D, --define-muscle NAME=VALUE To define muscles via cli. Or maybe support directly NAME=VALUE? +** XML Output +There are couple of available extensions of Bison targeting some XML +output. Some day we should consider including them. One issue is +that they seem to be quite orthogonal to the parsing technique, and +seem to depend mostly on the possibility to have some code triggered +for each reduction. As a matter of fact, such hooks could also be +used to generate the yydebug traces. Some generic scheme probably +exists in there. + +XML output for GNU Bison and gcc + http://www.cs.may.ie/~jpower/Research/bisonXML/ + +XML output for GNU Bison + http://yaxx.sourceforge.net/ * Unit rules Maybe we could expand unit rules, i.e., transform @@ -131,7 +174,7 @@ There are a couple of proposed outputs: which is based on Bison. -Sébastien Serrurier (serrur_s@epita.fr) is working on this: he is +Sebastien Serrurier (serrur_s@epita.fr) is working on this: he is expected to contact the authors, design the output, and implement it into Bison. @@ -149,7 +192,9 @@ Paul notes: PDP-10 ports :-) but they should probably be documented somewhere. - + More importantly, Bison does not currently allow NUL bytes in + tokens, either via escapes (e.g., "x\0y") or via a NUL byte in + the source code. This should get fixed. * --graph Show reductions. [] @@ -294,7 +339,7 @@ the parser with a means to create the (visual) parse tree. ----- -Copyright (C) 2001, 2002 Free Software Foundation, Inc. +Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Bison.