]> git.saurik.com Git - bison.git/blobdiff - TODO
* src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser
[bison.git] / TODO
diff --git a/TODO b/TODO
index 89c5a07075e17fa18f7c0eb8605a93df28fcd3b7..af8f10fa7e7a4f9ea477bb59404b99b701f79f90 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,17 +1,38 @@
 -*- outline -*-
 
+* URGENT: Documenting C++ output
+Write a first documentation for C++ output.
+
+* value_components_used
+Was defined but not used: where was it coming from?  It can't be to
+check if %union is used, since the user is free to $<foo>n on her
+union, doesn't she?
+
+* yyerror, yyprint 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...
+
 * documentation
-Explain $axiom (and maybe change its name: BTYacc names it goal).
+Explain $axiom (and maybe change its name: BTYacc names it `goal',
+byacc `$accept' probably based on AT&T Yacc, Meta `Start'...).
 Complete the glossary (item, axiom, ?).
 
-* report documentation
+* Error messages
+Some are really funky.  For instance
+
+       type clash (`%s' `%s') on default action
+
+is really weird.  Revisit them all.
+
+* Report documentation
 Extend with error.  The hard part will probably be finding the right
 rule so that a single state does not exhibit to many yet undocumented
 ``features''.  Maybe an empty action ought to be presented too.  Shall
 we try to make a single grammar with all these features, or should we
 have several very small grammars?
 
-* documentation
+* Documentation
 Some history of Bison and some bibliography would be most welcome.
 Are there any Texinfo standards for bibliography?
 
@@ -38,23 +59,8 @@ When implementing multiple-%union support, bare the following in mind:
 
 * --report=conflict-path
 Provide better assistance for understanding the conflicts by providing
-a sample text exhibiting the (LALR) ambiguity.
-
-* report
-Solved conflicts should not be reported in the beginning of the file.
-Rather they should be reported within each state description.  Also,
-now that the symbol providing the precedence of a rule is kept, it is
-possible to explain why a conflict was solved this way.  E.g., instead
-of
-
-   Conflict in state 8 between rule 2 and token '+' resolved as reduce.
-
-we can (in state 8) report something like
-
-   Conflict between rule 2 and token '+' resolved as reduce
-   because '*' < '+'.
-
-or something like that.
+a sample text exhibiting the (LALR) ambiguity.  See the paper from
+DeRemer and Penello: they already provide the algorithm.
 
 * Coding system independence
 Paul notes:
@@ -69,77 +75,6 @@ Paul notes:
        PDP-10 ports :-) but they should probably be documented
        somewhere.
 
-* Output directory
-Akim:
-
-| I consider this to be a bug in bison:
-|
-| /tmp % mkdir src
-| /tmp % cp ~/src/bison/tests/calc.y src
-| /tmp % mkdir build && cd build
-| /tmp/build % bison ../src/calc.y
-| /tmp/build % cd ..
-| /tmp % ls -l build src
-| build:
-| total 0
-|
-| src:
-| total 32
-| -rw-r--r--    1 akim     lrde        27553 oct  2 16:31 calc.tab.c
-| -rw-r--r--    1 akim     lrde         3335 oct  2 16:31 calc.y
-|
-|
-| Would it be safe to change this behavior to something more reasonable?
-| Do you think some people depend upon this?
-
-Jim:
-
-Is it that behavior documented?
-If so, then it's probably not reasonable to change it.
-I've Cc'd the automake list, because some of automake's
-rules use bison through $(YACC) -- though I'll bet they
-all use it in yacc-compatible mode.
-
-Pavel:
-
-Hello, Jim and others!
-
-> Is it that behavior documented?
-> If so, then it's probably not reasonable to change it.
-> I've Cc'd the automake list, because some of automake's
-> rules use bison through $(YACC) -- though I'll bet they
-> all use it in yacc-compatible mode.
-
-Yes, Automake currently used bison in Automake-compatible mode, but it
-would be fair for Automake to switch to the native mode as long as the
-processed files are distributed and "missing" emulates bison.
-
-In any case, the makefiles should specify the output file explicitly
-instead of relying on weird defaults.
-
-> | src:
-> | total 32
-> | -rw-r--r--    1 akim     lrde        27553 oct  2 16:31 calc.tab.c
-> | -rw-r--r--    1 akim     lrde         3335 oct  2 16:31 calc.y
-
-This is not _that_ ugly as it seems - with Automake you want to put
-sources where they belong - to the source directory.
-
-> | This is not _that_ ugly as it seems - with Automake you want to put
-> | sources where they belong - to the source directory.
->
-> The difference source/build you are referring to is based on Automake
-> concepts.  They have no sense at all for tools such as bison or gcc
-> etc.  They have input and output.  I do not want them to try to grasp
-> source/build.  I want them to behave uniformly: output *here*.
-
-I realize that.
-
-It's unfortunate that the native mode of Bison behaves in a less uniform
-way than the yacc mode. I agree with your point. Bison maintainters may
-want to fix it along with the documentation.
-
-
 * Unit rules
 Maybe we could expand unit rules, i.e., transform
 
@@ -152,7 +87,10 @@ into
        exp: exp '+' exp | exp '&' exp;
 
 when there are no actions.  This can significantly speed up some
-grammars.
+grammars.  I can't find the papers.  In particular the book `LR
+parsing: Theory and Practice' is impossible to find, but according to
+`Parsing Techniques: a Practical Guide', it includes information about
+this issue.  Does anybody have it?
 
 * Stupid error messages
 An example shows it easily:
@@ -178,11 +116,6 @@ src/bison/tests % cd ./testsuite.dir/51
 tests/testsuite.dir/51 % echo "()" | ./calc
 1.2-1.3: parse error, unexpected ')', expecting error or "number" or '-' or '('
 
-* yyerror, yyprint 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...
-
 * read_pipe.c
 This is not portable to DOS for instance.  Implement a more portable
 scheme.  Sources of inspiration include GNU diff, and Free Recode.
@@ -191,12 +124,6 @@ scheme.  Sources of inspiration include GNU diff, and Free Recode.
 A round of memory leak clean ups would be most welcome.  Dmalloc,
 Checker GCC, Electric Fence, or Valgrind: you chose your tool.
 
-* Memory leaks in the parser
-The same applies to the generated parsers.  In particular, this is
-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.
-
 * --graph
 Show reductions.       []
 
@@ -292,9 +219,6 @@ should recognize these, and preserve them.
 See if we can integrate backtracking in Bison.  Contact the BTYacc
 maintainers.
 
-* Automaton report
-Display more clearly the lookaheads for each item.
-
 * RR conflicts
 See if we can use precedence between rules to solve RR conflicts.  See
 what POSIX says.
@@ -307,25 +231,6 @@ move to partial orders.
 This will be possible with a Bison parser for the grammar, as it will
 make it much easier to extend the grammar.
 
-* Parsing grammars
-Rewrite the reader in Flex/Bison.  There will be delicate parts, in
-particular, expect the scanner to be hard to write.  Many interesting
-features cannot be implemented without such a new reader.
-
-* Presentation of the report file
-From: "Baum, Nathan I" <s0009525@chelt.ac.uk>
-Subject: Token Alias Bug
-To: "'bug-bison@gnu.org'" <bug-bison@gnu.org>
-
-I've also noticed something, that whilst not *wrong*, is inconvienient: I
-use the verbose mode to help find the causes of unresolved shift/reduce
-conflicts. However, this mode insists on starting the .output file with a
-list of *resolved* conflicts, something I find quite useless. Might it be
-possible to define a -v mode, and a -vv mode -- Where the -vv mode shows
-everything, but the -v mode only tells you what you need for examining
-conflicts? (Or, perhaps, a "*** This state has N conflicts ***" marker above
-each state with conflicts.)
-
 * $undefined
 From Hans:
 - If the Bison generated parser experiences an undefined number in the
@@ -350,9 +255,6 @@ a Bison option where every typed default rule is explicitly written out
 
 Note: Robert Anisko handles this.  He knows how to do it.
 
-* Documenting C++ output
-Write a first documentation for C++ output.
-
 * Warnings
 It would be nice to have warning support.  See how Autoconf handles
 them, it is fairly well described there.  It would be very nice to
@@ -391,6 +293,10 @@ at the proper place to bison.simple. Ditto for YYACT_PROLOGUE.
 I was wondering what you think about adding YYACT_PROLOGUE/EPILOGUE
 to bison. If you're interested, I'll work on a patch.
 
+* Move to Graphviz
+Well, VCG seems really dead.  Move to Graphviz instead.  Also, equip
+the parser with a means to create the (visual) parse tree.
+
 -----
 
 Copyright (C) 2001, 2002 Free Software Foundation, Inc.