]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
parse.lac: implement as %define variable.
[bison.git] / ChangeLog
index 019c238469e2ad810aee9ac6d111c08191d46130..63d41ed6375c549295348762f821bbeb2c4c2ad2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,85 @@
+2010-12-11  Joel E. Denny  <jdenny@clemson.edu>
+
+       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.
+       (parse.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  <jdenny@clemson.edu>
+
+       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  <jdenny@clemson.edu>
+
+       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,
+       pass yyempty_ not yyla.type to 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 (parse.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  <jdenny@clemson.edu>
 
        yysyntax_error: more preparation for readability of next patch.
 2010-11-07  Joel E. Denny  <jdenny@clemson.edu>
 
        yysyntax_error: more preparation for readability of next patch.