X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/c981ce9b2b825d09920e70ffe5a5045f13b6341f..219139f52178b3e020be1952c59b1ba76009c386:/TODO diff --git a/TODO b/TODO index 216c97f4..addd135d 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,28 @@ -*- outline -*- * Short term +** Use syntax_error from the scanner? +This would provide a means to raise syntax error from function called +from the scanner. Actually, there is no good solution to report a +lexical error in general. Usually they are kept at the scanner level +only, ignoring the guilty token. But that might not be the best bet, +since we don't benefit from the syntactic error recovery. + +We still have the possibility to return an invalid token number, which +does the trick. But then the error message from the parser is poor +(something like "unexpected $undefined"). Since the scanner probably +already reported the error, we should directly enter error-recovery, +without reporting the error message (i.e., YYERROR's semantics). + +Back to lalr1.cc (whose name is now quite unfortunate, since it also +covers lr and ielr), if we support exceptions from yylex, should we +propose a lexical_error in addition to syntax_error? Should they have +a common root, say parse_error? Should syntax_error be renamed +syntactic_error for consistency with lexical_error? + +** Variable names. +What should we name `variant' and `lex_symbol'? + ** Use b4_symbol in all the skeleton Then remove the older system, including the tables generated by output.c @@ -144,11 +166,11 @@ what it should look like. For instance what follows crashes. The code in yyerrlab reads: if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } There are only two yychar that can be <= YYEOF: YYEMPTY and YYEOF. But I can't produce the situation where yychar is YYEMPTY here, is it @@ -258,7 +280,7 @@ Note that there remains the problem of locations: `@r'? We should find a means to provide an access to values deep in the stack. For instance, instead of - baz: qux { $$ = $-1 + $0 + $1; } + baz: qux { $$ = $-1 + $0 + $1; } we should be able to have: @@ -291,13 +313,13 @@ XML output for GNU Bison * Unit rules Maybe we could expand unit rules, i.e., transform - exp: arith | bool; - arith: exp '+' exp; - bool: exp '&' exp; + exp: arith | bool; + arith: exp '+' exp; + bool: exp '&' exp; into - exp: exp '+' exp | exp '&' exp; + exp: exp '+' exp | exp '&' exp; when there are no actions. This can significantly speed up some grammars. I can't find the papers. In particular the book `LR @@ -322,19 +344,19 @@ Wow, %printer is not documented. Clearly mark YYPRINT as obsolete. * Coding system independence Paul notes: - Currently Bison assumes 8-bit bytes (i.e. that UCHAR_MAX is - 255). It also assumes that the 8-bit character encoding is - the same for the invocation of 'bison' as it is for the - invocation of 'cc', but this is not necessarily true when - people run bison on an ASCII host and then use cc on an EBCDIC - host. I don't think these topics are worth our time - addressing (unless we find a gung-ho volunteer for EBCDIC or - PDP-10 ports :-) but they should probably be documented - somewhere. + Currently Bison assumes 8-bit bytes (i.e. that UCHAR_MAX is + 255). It also assumes that the 8-bit character encoding is + the same for the invocation of 'bison' as it is for the + invocation of 'cc', but this is not necessarily true when + people run bison on an ASCII host and then use cc on an EBCDIC + host. I don't think these topics are worth our time + addressing (unless we find a gung-ho volunteer for EBCDIC or + 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. + 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. @@ -433,10 +455,26 @@ to bison. If you're interested, I'll work on a patch. * Better graphics Equip the parser with a means to create the (visual) parse tree. +* Complaint submessage indentation. +We already have an implementation that works fairly well for named +reference messages, but it would be nice to use it consistently for all +submessages from Bison. For example, the "previous definition" +submessage or the list of correct values for a %define variable might +look better with indentation. + +However, the current implementation makes the assumption that the +location printed on the first line is not usually much shorter than the +locations printed on the submessage lines that follow. That assumption +may not hold true as often for some kinds of submessages especially if +we ever support multiple grammar files. + +Here's a proposal for how a new implementation might look: + + http://lists.gnu.org/archive/html/bison-patches/2009-09/msg00086.html + ----- -Copyright (C) 2001, 2002, 2003, 2004, 2006, 2008-2009 Free Software -Foundation, Inc. +Copyright (C) 2001-2004, 2006, 2008-2012 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler.