]> git.saurik.com Git - bison.git/blobdiff - TODO
debug: improve the display of symbol lists
[bison.git] / TODO
diff --git a/TODO b/TODO
index 2a08164a4dc44edc6ace5d05714819eb1525488a..d2e457c976607977dde5a5c147bb0fe2fa49fe51 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,16 +1,50 @@
 * Short term
 * Short term
+** Laxism in Bison invocation arguments:
+The flag_argmatch functions were meant to be generic. The introduction of
+-Werror= in generic code is a bit troublesome, and generates weird
+behaviour. Because seeing "error=" causes Bison to match the subsequent
+categories with a generic procedure, but on a very specific variable, the
+following commands are legal, and equivalent:
+
+$ bison -Werror=yacc            # OK
+$ bison --warnings=error=yacc   # err, looks very weird?
+$ bison -rerror=itemsets        # this value of 'report' enum has a value
+                                # of '1 << 1', just like Wyacc
+$ bison --report=error=itemsets # (same)
+$ bison -ferror=caret           # (same)
+$ bison --feature=error=caret   # (same)
+
+Basically, writing -rerror={THINGS} or -ferror={FEATURE} is not prohibited,
+and results in UB.
+
+I don't think there is any reason for the user to expect anything out of
+these options (this implementation-driven behavior is not documented of
+course, as it isn't exactly a feature), so this bug isn't critical but
+should be addressed some day nonetheless.
+
 ** Graphviz display code thoughts
 The code for the --graph option is over two files: print_graph, and
 ** Graphviz display code thoughts
 The code for the --graph option is over two files: print_graph, and
-graphviz. I believe this is because Bison used to also produce VCG graphs,
-but since this is no longer true, maybe we could consider these files for
-fusion.
+graphviz. This is because Bison used to also produce VCG graphs, but since
+this is no longer true, maybe we could consider these files for fusion.
+
+An other consideration worth noting is that print_graph.c (correct me if I
+am wrong) should contain generic functions, whereas graphviz.c and other
+potential files should contain just the specific code for that output
+format. It will probably prove difficult to tell if the implementation is
+actually generic whilst only having support for a single format, but it
+would be nice to keep stuff a bit tidier: right now, the construction of the
+bitset used to show reductions is in the graphviz-specific code, and on the
+opposite side we have some use of \l, which is graphviz-specific, in what
+should be generic code.
 
 
-Little effort factoring seems to have been given to factoring in these files,
-and their print-xml and print counterpart. We would very much like to re-use
-the pretty format of states from .output in the .dot
+Little effort seems to have been given to factoring these files and their
+rint{,-xml} counterpart. We would very much like to re-use the pretty format
+of states from .output for the graphs, etc.
 
 
-Also, the underscore in print_graph.[ch] isn't very fitting considering
-the dashes in the other filenames.
+Also, the underscore in print_graph.[ch] isn't very fitting considering the
+dashes in the other filenames.
+
+Since graphviz dies on medium-to-big grammars, maybe consider an other tool?
 
 ** push-parser
 Check it too when checking the different kinds of parsers.  And be
 
 ** push-parser
 Check it too when checking the different kinds of parsers.  And be
@@ -48,9 +82,6 @@ Get rid of it.  The original idea is nice, but actually it makes
 the code harder to follow, and uselessly different from the other
 skeletons.
 
 the code harder to follow, and uselessly different from the other
 skeletons.
 
-** Variable names.
-What should we name `variant' and `lex_symbol'?
-
 ** Get rid of fake #lines [Bison: ...]
 Possibly as simple as checking whether the column number is nonnegative.
 
 ** Get rid of fake #lines [Bison: ...]
 Possibly as simple as checking whether the column number is nonnegative.
 
@@ -77,9 +108,6 @@ since it is no longer bound to a particular parser, it's just a
 ** Rename LR0.cc
 as lr0.cc, why upper case?
 
 ** Rename LR0.cc
 as lr0.cc, why upper case?
 
-** bench several bisons.
-Enhance bench.pl with %b to run different bisons.
-
 * Various
 ** YYERRCODE
 Defined to 256, but not used, not documented.  Probably the token
 * Various
 ** YYERRCODE
 Defined to 256, but not used, not documented.  Probably the token
@@ -143,12 +171,6 @@ really possible?  The test suite does not exercise this case.
 This shows that it would be interesting to manage to install skeleton
 coverage analysis to the test suite.
 
 This shows that it would be interesting to manage to install skeleton
 coverage analysis to the test suite.
 
-** Table definitions
-It should be very easy to factor the definition of the various tables,
-including the separation bw declaration and definition.  See for
-instance b4_table_define in lalr1.cc.  This way, we could even factor
-C vs. C++ definitions.
-
 * From lalr1.cc to yacc.c
 ** Single stack
 Merging the three stacks in lalr1.cc simplified the code, prompted for
 * From lalr1.cc to yacc.c
 ** Single stack
 Merging the three stacks in lalr1.cc simplified the code, prompted for
@@ -274,9 +296,6 @@ Paul notes:
         tokens, either via escapes (e.g., "x\0y") or via a NUL byte in
         the source code.  This should get fixed.
 
         tokens, either via escapes (e.g., "x\0y") or via a NUL byte in
         the source code.  This should get fixed.
 
-* --graph
-Show reductions.
-
 * Broken options ?
 ** %token-table
 ** Skeleton strategy
 * Broken options ?
 ** %token-table
 ** Skeleton strategy
@@ -373,7 +392,7 @@ End:
 
 -----
 
 
 -----
 
-Copyright (C) 2001-2004, 2006, 2008-2012 Free Software Foundation, Inc.
+Copyright (C) 2001-2004, 2006, 2008-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
 
 This file is part of Bison, the GNU Compiler Compiler.