X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/865f1e9f85d52c41d9c26463d65d0d6be008404f..aa0cb40d61cda5bfa9d325a45735439cbbd06327:/TODO diff --git a/TODO b/TODO index 0a4aef40..d244a828 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,45 @@ -*- outline -*- +* Short term +** Use b4_symbol in all the skeleton +Then remove the older system, including the tables generated by +output.c + +** Update the documentation on gnu.org + +** Get rid of fake #lines [Bison: ...] +Possibly as simple as checking whether the column number is nonnegative. + +I have seen messages like the following from GCC. + +:0: fatal error: opening dependency file .deps/libltdl/argz.Tpo: No such file or directory + + +** Discuss about %printer/%destroy in the case of C++. +It would be very nice to provide the symbol classes with an operator<< +and a destructor. Unfortunately the syntax we have chosen for +%destroy and %printer make them hard to reuse. For instance, the user +is invited to write something like + + %printer { debug_stream() << $$; } ; + +which is hard to reuse elsewhere since it wants to use +"debug_stream()" to find the stream to use. The same applies to +%destroy: we told the user she could use the members of the Parser +class in the printers/destructors, which is not good for an operator<< +since it is no longer bound to a particular parser, it's just a +(standalone symbol). + +** Rename LR0.cc +as lr0.cc, why upper case? + +** bench several bisons. +Enhance bench.pl with %b to run different bisons. + +** Use b4_symbol everywhere. +Move its definition in the more standard places and deploy it in other +skeletons. + * Various ** YYPRINT glr.c inherits its symbol_print function from c.m4, which supports @@ -14,6 +54,45 @@ number for the error token, which POSIX wants to be 256, but which Bison might renumber if the user used number 256. Keep fix and doc? Throw away? +Also, why don't we output the token name of the error token in the +output? It is explicitly skipped: + + /* Skip error token and tokens without identifier. */ + if (sym != errtoken && id) + +Of course there are issues with name spaces, but if we disable we have +something which seems to be more simpler and more consistent instead +of the special case YYERRCODE. + + enum yytokentype { + error = 256, + // ... + }; + + +We could (should?) also treat the case of the undef_token, which is +numbered 257 for yylex, and 2 internal. Both appear for instance in +toknum: + + const unsigned short int + parser::yytoken_number_[] = + { + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + +while here + + enum yytokentype { + TOK_EOF = 0, + TOK_EQ = 258, + +so both 256 and 257 are "mysterious". + + const char* + const parser::yytname_[] = + { + "\"end of command\"", "error", "$undefined", "\"=\"", "\"break\"", + + ** YYFAIL It is seems to be *really* obsolete now, shall we remove it? @@ -92,12 +171,8 @@ management is performed once instead of three times). I suggest that we do the same in yacc.c. ** yysyntax_error -In lalr1.cc we invoke it with the translated lookahead (yytoken), and -yacc.c uses yychar. I don't see why. - -** yysyntax_error -The use of switch to select yyfmt in lalr1.cc seems simpler than -what's done in yacc.c. +The code bw glr.c and yacc.c is really alike, we can certainly factor +some parts. * Header guards @@ -231,7 +306,8 @@ this issue. Does anybody have it? Some history of Bison and some bibliography would be most welcome. Are there any Texinfo standards for bibliography? - +** %printer +Wow, %printer is not documented. Clearly mark YYPRINT as obsolete. * Java, Fortran, etc. @@ -352,8 +428,8 @@ Equip the parser with a means to create the (visual) parse tree. ----- -Copyright (C) 2001, 2002, 2003, 2004, 2006, 2008 Free Software Foundation, -Inc. +Copyright (C) 2001, 2002, 2003, 2004, 2006, 2008-2009 Free Software +Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler.