]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Improve error messages for `$' or `@' followed by `.' or `-'.
[bison.git] / ChangeLog
index 15d4a2f6a0c92982348311a53d7856f78449f869..1ff0f09dce5fc44061447d1702a747f98e157340 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,260 @@
+2011-01-09  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       Improve error messages for `$' or `@' followed by `.' or `-'.
+       Previously, for this special case of an invalid reference, the
+       usual "symbol not found in production:" was printed.  However,
+       because the symbol name was parsed as the empty string, that
+       message was followed immediately by a newline instead of a symbol
+       name.  In reality, this is a syntax error, so the reference is
+       invalid regardless of the symbols actually appearing in the
+       production.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2011-01/msg00012.html>.
+       * src/scan-code.l (parse_ref): Report the above case as a syntax
+       error.  Other than that, continue to handle this case like any
+       other invalid reference that Bison manages to parse because
+       "possibly meant" messages can still be helpful to the user.
+       * tests/named-refs.at ($ or @ followed by . or -): New test group.
+
+2011-01-08  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       doc: don't use @acronym.
+       Lately, many GNU packages are dropping it.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2011-01/msg00003.html>.
+       * doc/bison.texinfo: Remove all uses.
+
+2011-01-05  Alex Rozenman  <rozenman@gmail.com>
+
+       Do not allow identifiers that start with a negative number.
+       Reported by Paul Hilfinger as a side effect of named references
+       support at
+       <http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00000.html>.
+       Suggested by Paul Eggert.
+       * src/scan-code.l ({letter}, {id}): Adjust lexical definitions.
+       * src/scan-gram.l ({letter}, {id}): Likewise.
+
+2011-01-03  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       * ChangeLog (2011-01-02): improve description.
+
+2011-01-03  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       maint: don't update copyright years in bootstrap.
+       * .x-update-copyright: Add entry for bootstrap.
+       * bootstrap: Remove 2011 from copyright years.  The bootstrap
+       version we're currently using comes from an older version of
+       gnulib.
+       * bootstrap.conf (bootstrap_sync): Add comments explaining this
+       issue.
+
+2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       maint: run "make update-copyright".
+
+2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       maint: prepare to use year ranges in copyright notices.
+       * README (Copyright statements): New section explaining the range
+       notation.  The GNU maintainers document requires this explanation:
+       <http://www.gnu.org/prep/maintain/maintain.html#Copyright-Notices>.
+       I copied our explanation from coreutils.
+       * build-aux/update-b4-copyright: Revert 2010-06-17 changes that
+       disabled Bison's automated use of ranges.
+       * cfg.mk (update-copyright-env): Likewise.
+
+2011-01-02  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       Correct my email address.
+       * ChangeLog: In all recent entries.
+       * THANKS (Joel E. Denny): Here.
+
+2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       doc: cleanup.
+       * NEWS (2.5): Try to sort entries according to how interesting
+       users might find them.
+
+2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       doc: cleanup.
+       * NEWS (2.5): Make some minor improvements to wording, and format
+       entries more consistently.
+       * doc/bison.texinfo (Language and Grammar): Point out that IELR
+       and canonical LR are experimental features.
+       (Decl Summary): In list of %define variables, make wording more
+       consistent.  Improve discussion of using LALR for GLR.
+
+2010-12-19  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       parse.lac: document.
+       * NEWS (2.5): Add entry for LAC, and mention LAC in entry for
+       other corrections to verbose syntax error messages.
+       * doc/bison.texinfo (Decl Summary): Rewrite entries for
+       lr.default-reductions and lr.type to be clearer, to mention
+       %nonassoc's effect on canonical LR, and to mention LAC.  Add entry
+       for parse.lac.
+       (Glossary): Add entry for LAC.
+
+2010-12-11  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       parse.lac: implement exploratory stack reallocations.
+       * data/yacc.c: Rename %define variable parse.lac.es-capacity to
+       parse.lac.es-capacity-initial.  Accept parse.lac.memory-trace
+       with values of "failures" (default) or "full".
+       (b4_declare_parser_state_variables): Add yyesa, yyes, and
+       yyes_capacity variables.
+       (YYSTACK_USE_ALLOCA): Ignore it if LAC requested.
+       (YYSTACK_ALLOC, YYSTACK_FREE, YYSTACK_ALLOC_MAXIMUM): Define if
+       LAC requested.
+       (YYCOPY_NEEDED): New cpp macro.
+       (YYCOPY): Define if LAC requested.
+       (yy_lac_stack_realloc): New function implementing stack
+       reallocations.  Use YYMAXDEPTH for maximum stack size given that
+       the stack should never need to grow larger than the main state
+       stack needs to grow without LAC.
+       (YY_LAC_ESTABLISH): Update yy_lac invocation.
+       (yy_lac): Add arguments for exploratory stack memory data
+       recorded in the main parser.  Invoke yy_lac_stack_realloc when
+       reallocation is necessary.
+       (yysyntax_error): Add the same new arguments and pass them to
+       yy_lac.
+       (yypstate_delete): Free yyes if necessary.
+       (yyesa, yyes, yyes_capacity): #define these to yypstate members
+       in the case of push parsing.
+       (yyparse, yypush_parse): Initialize yyes and yyes_capacity.
+       Update yysyntax_error invocations.  At yyreturn, free yyes if
+       necessary.
+       * src/parse-gram.y: %define parse.lac full.
+       * tests/input.at (LAC: errors for %define): Extend for
+       parse.lac-memory-trace.
+       * tests/regression.at (LAC: Exploratory stack): Extend to check
+       that stack reallocs happen when expected.
+       (LAC: Memory exhaustion): Update to use YYMAXDEPTH and
+       parse.lac.es-capacity-initial.
+
+2010-12-11  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       parse.lac: implement as %define variable.
+       LAC = lookahead correction.  See discussion at
+       <http://lists.gnu.org/archive/html/bison-patches/2009-09/msg00034.html>.
+       However, one point there must be corrected: because of %nonassoc,
+       LAC is *not* always redundant for lr.type=canonical-lr.
+       * data/yacc.c: Accept values of "none" (default) or "full" for
+       parse.lac.  Accept %define parse.lac.es-capacity to specify
+       capacity of LAC's temporary exploratory stack.  It defaults to 20
+       and, for now, will not grow dynamically.
+       (b4_lac_flag, b4_lac_if): New m4 macros.  Evaluate as true for
+       parse.lac!=none.
+       (YYBACKUP): Invoke YY_LAC_DISCARD.
+       (YY_LAC_ESTABLISH, YY_LAC_DISCARD): New cpp macros that invoke
+       yy_lac and track when it needs to be invoked
+       (yy_lac): New function that, given the current stack, determines
+       whether a token can eventually be shifted.  Return status mimics
+       yyparse return status.
+       (yysyntax_error): Change yystate argument to yyssp so stack top
+       can be passed to yy_lac.  If LAC is requested, build expected
+       token list by invoking yy_lac for every token instead of just
+       checking the current state for lookaheads.  Return 2 if yy_lac
+       exhausts memory.
+       (yyparse, yypush_parse): Use local variable yy_lac_established and
+       cpp macros YY_LAC_ESTABLISH and YY_LAC_DISCARD to implement LAC.
+       Update yysyntax_error invocation.  Add yyexhaustedlab code if LAC
+       is requested.
+       * tests/conflicts.at (%nonassoc and eof): Extend to check the
+       effect of each of -Dlr.type=canonical-lr and -Dparse.lac=full.
+       (%error-verbose and consistent errors): Likewise.
+       (LAC: %nonassoc requires splitting canonical LR states): New test
+       group demonstrating how LAC can fix canonical LR.
+       * tests/input.at (LAC: Errors for %define): New test group.
+       * tests/regression.at (LAC: Exploratory stack): New test group.
+       (LAC: Memory exhaustion): New test group.
+
+2010-11-21  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       build: use gnulib's new bootstrap_sync option.
+       Now, whenever we update bison's copy of gnulib, bootstrap will
+       update itself the next time it's run.
+       * bootstrap: Copy from latest gnulib for bootstrap_sync support.
+       * bootstrap.conf (bootstrap_sync): Set to true.
+       * gnulib: Update to latest so bootstrap is in sync now.
+
+2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: adjust prior fixes for branch-2.5's lalr1.cc.
+       On master, there is no yychar in lalr1.cc, but there is on
+       branch-2.5, and the prior cherry-pick of "Fix handling of yychar
+       manipulation in user semantic actions" wasn't adjusted for that
+       difference.
+       * data/lalr1.cc (yy::parser::parse): Translate yychar before
+       every use of yytoken, and add comments explaining this approach.
+       * tests/conflicts.at (%error-verbose and consistent errors):
+       Extend to test yychar manipulation with lalr1.cc.
+
+2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: fix for consistent error with lookahead.
+       * NEWS (2.5): Document.
+       * data/yacc.c (yysyntax_error): In a verbose syntax error
+       message while in a consistent state with a default action (which
+       must be an error action given that yysyntax_error is being
+       invoked), continue to drop the expected token list, but don't
+       drop the unexpected token unless there actually is no lookahead.
+       Moreover, handle that internally instead of returning 1 to tell
+       the caller to do it.  With that meaning of 1 gone, renumber
+       return codes more usefully.
+       (yyparse, yypush_parse): Update yysyntax_error usage.  Most
+       importantly, set yytoken to YYEMPTY when there's no lookahead.
+       * data/glr.c (yyreportSyntaxError): As in yacc.c, don't drop the
+       unexpected token unless there actually is no lookahead.
+       * data/lalr1.cc (yy::parser::parse): If there's no lookahead,
+       set yytoken to yyempty_ before invoking yysyntax_error_.
+       (yy::parser::yysyntax_error_): Again, don't drop the unexpected
+       token unless there actually is no lookahead.
+       * data/lalr1.java (YYParser::parse): If there's no lookahead,
+       set yytoken to yyempty_ before invoking yysyntax_error.
+       (YYParser::yysyntax_error): Again, don't drop the unexpected
+       token unless there actually is no lookahead.
+       * tests/conflicts.at (%error-verbose and consistent
+       errors): Extend test group to further reveal how the previous
+       use of the simple "syntax error" message was too general.  Test
+       yacc.c, glr.c, lalr1.cc, and lalr1.java.  No longer an expected
+       failure.
+       * tests/java.at (AT_JAVA_COMPILE, AT_JAVA_PARSER_CHECK): Move
+       to...
+       * tests/local.at: ... here.
+       (_AT_BISON_OPTION_PUSHDEFS): Push AT_SKEL_JAVA_IF definition.
+       (AT_BISON_OPTION_POPDEFS): Pop it.
+       (AT_FULL_COMPILE): Extend to handle Java.
+
+2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: more preparation for readability of next patch.
+       There are no behavioral changes here.
+       * data/glr.c (yyreportSyntaxError): Reorganize.
+       * data/lalr1.cc (yy::parser::yysyntax_error_): Reorganize.
+       * tests/conflicts.at (%error-verbose and consistent errors):
+       Reorganize.
+
+2010-11-07  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: prepare for readability of next patches.
+       These are purely whitespace changes that result in ugly code
+       but that make the next couple of patches much easier to read.
+       * data/glr.c (yyreportSyntaxError): Reindent.
+       * data/lalr1.cc (yy::parser::yysyntax_error_): Reindent.
+       * data/lalr1.java (YYParser::yysyntax_error): Reindent.
+       * data/yacc.c (yysyntax_error): Reindent.
+
+2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       yysyntax_error: improve invocation readability.
+       * data/yacc.c (yyparse, yypush_parse): For yysyntax_error
+       invocation, get rid of the while loop, which is misleading
+       because there are really at most two iterations.
+
+2010-10-31  Joel E. Denny  <joeldenny@joeldenny.org>
+
+       * ChangeLog: Correct some errors in previous entries.
+
 2010-10-17  Joel E. Denny  <joeldenny@joeldenny.org>
 
        maint: re-anchor all .gitignore entries.
 2010-10-17  Joel E. Denny  <joeldenny@joeldenny.org>
 
        maint: re-anchor all .gitignore entries.
 
        YYFAIL: warn about uses and remove from lalr1.java.
        * NEWS (2.5): Document.
 
        YYFAIL: warn about uses and remove from lalr1.java.
        * NEWS (2.5): Document.
-       * data/lalr1.java (parser::YYStack::YYFAIL): Rename to YYERRLAB,
+       * data/lalr1.java (YYParser::YYFAIL): Rename to YYERRLAB,
        and make it private.  Update all uses.
        * src/scan-code.l (SC_RULE_ACTION): Implement warning.
 
        and make it private.  Update all uses.
        * src/scan-code.l (SC_RULE_ACTION): Implement warning.
 
 
        YYFAIL: deprecate.
        * NEWS (2.4.2): Document deprecation and the phase-out plan.
 
        YYFAIL: deprecate.
        * NEWS (2.4.2): Document deprecation and the phase-out plan.
-       * data/lalr1.java (parser::YYStack::YYFAIL): Add comment about
+       * data/lalr1.java (YYParser::YYFAIL): Add comment about
        deprecation.
        * data/yacc.c (YYFAIL): Likewise, and suppress warnings about
        YYFAIL from GCC cpp's -Wunused-macros.
        deprecation.
        * data/yacc.c (YYFAIL): Likewise, and suppress warnings about
        YYFAIL from GCC cpp's -Wunused-macros.
 
        -----
 
 
        -----
 
-       Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
-       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-       2008, 2009, 2010 Free Software Foundation, Inc.
+       Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
+       Inc.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this