+2011-03-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: cite publication for LAC.
+ * doc/bison.texinfo (LAC): Here.
+
+2011-03-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: clean up terminology for mysterious conflicts.
+ * doc/bison.texinfo (Mystery Conflicts): Rename node to...
+ (Mysterious Conflicts): ... this, which is already the section
+ title and the name used in the index. Update all cross-references
+ to this node. Also, don't imply that R/R conflicts are the only
+ kind of mysterious conflict.
+
+2011-03-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ lr.default-reductions: rename "all" value to "full".
+ States that shift the error token do not have default reductions,
+ and GLR disables some default reductions, so "all" was a misnomer.
+ * doc/bison.texinfo (%define Summary): Update.
+ (Default Reductions): Update.
+ * src/print.c (print_reductions): Update.
+ * src/reader.c (prepare_percent_define_front_end_variables):
+ Update.
+ * src/tables.c (action_row): Update.
+ * tests/input.at (%define enum variables): Update.
+ * tests/reduce.at (%define lr.default-reductions): Update.
+
+2011-03-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: create a new Tuning LR section in the manual.
+ And clean up all other documentation of the features described
+ there.
+ * NEWS (2.5): Tweak wording of lr.type and parse.lac entries a
+ bit, update the cross-references to the manual, and point out that
+ LAC has caveats. Don't be so adamant that IELR+LAC=canonical LR.
+ That is, as the referenced section in the manual documents, LAC
+ does not fix infinite parsing loops on syntax errors.
+ * doc/bison.texinfo: Consistently drop the "(1)" suffix from LALR,
+ IELR, and LR in @cindex.
+ (%define Summary): Condense the entries for lr.default-reductions,
+ lr.keep-unreachable-states, lr.type, and parse.lac into brief
+ summaries, and cross-reference the appropriate subsections of
+ Tuning LR. For parse.lac, mention that it's only implemented for
+ deterministic parsers in C. In parse.error entry, mention LAC,
+ and add cross-reference to the LAC section.
+ (Error Reporting): When mentioning parse.error, mention LAC, and
+ add cross-reference to the LAC section.
+ (Tuning LR): New section with an extended version of the
+ documentation removed from %define Summary. Change all
+ cross-references in the manual to point here instead of there.
+ (Calc++ Parser): When mentioning parse.error, mention LAC, and add
+ cross-reference to the LAC section.
+ (Table of Symbols): In %error-verbose entry, add cross-reference
+ to Error Reporting.
+ (Glossary): Capitalize entry titles consistently. Add definitions
+ for "defaulted state" and "unreachable state". Expand IELR
+ acronym in IELR's entry.
+
+2011-02-20 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: add bibliography to manual.
+ * doc/bison.texinfo (Mystery Conflicts): Cross-reference
+ bibliography instead of citing publications directly.
+ (Generalized LR Parsing): Likewise.
+ (Bibliography): New section. Not all entries are cross-referenced
+ yet, but that will come in future patches.
+
+2011-02-19 Joel E. Denny <joeldenny@joeldenny.org>
+
+ java: test and document previous bug fix.
+ * NEWS (2.5): Document it.
+ * tests/java.at (_AT_DATA_JAVA_CALC_Y): To one of the yyerror
+ invocations, pass a location that spans multiple tokens. Change
+ yyerror to report all of a location rather than just the begin
+ position. Extend yylex and Position to count tokens on a line.
+ Remove getHashCode as it's unused. Update all expected output.
+
+2011-02-19 Bernd Kiefer <kiefer@dfki.de> (tiny change)
+
+ java: fix location handling bug.
+ Reported at
+ <http://lists.gnu.org/archive/html/bison-patches/2011-02/msg00005.html>.
+ * data/lalr1.java (YYParser::yylloc): For non-empty RHS, fix
+ reversed access to location stack.
+ * THANKS (Bernd Kiefer): Add.
+
+2011-02-13 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: fix some minor inconsistencies.
+ * doc/bison.texinfo (%define Summary): Fix mislabeled entry for
+ lex_symbol.
+ (%code Summary): For consistency with the variable list in the
+ %define Summary, enclose the list of %code qualifiers in a table
+ instead of an itemize.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: clean up new subsections in manual.
+ * doc/bison.texinfo (%define Summary): Reword so it reads well as
+ a separate section. For example, add an intro, and move most of
+ the text outside of the @deffn so it is not indented so far.
+ (%code Summary): Likewise.
+ (Table of Symbols): Reword %code entry to match the %code entry in
+ Decl Summary.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: finish splitting apart the manual's Decl Summary section.
+ Suggested by Akim Demaille at
+ <http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00013.html>.
+ * doc/bison.texinfo (Decl Summary): Extract most of the %define
+ entry into...
+ (%define Summary): ... this new subsection, and update all
+ cross-references. For readability of the patches, rewriting of
+ the text so it makes sense as a separate subsection will come in a
+ later patch. Moreover, the majority of the text describing the
+ various new LR features should likely move to another new section
+ somewhere.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: begin to split apart the manual's Decl Summary section.
+ Discussed in thread starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2009-05/msg00013.html>.
+ * doc/bison.texinfo (Decl Summary): Extract most of the %code
+ entry into...
+ (%code Summary): ... this new subsection, and update all
+ cross-references. For readability of the patches, rewriting of
+ the text so it makes sense as a separate subsection will come in a
+ later patch.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: clean up naming of various Bison files.
+ The Bison manual's names for various files associated with a Bison
+ parser has devolved into inconsistency. This patch makes the
+ naming consistent for the most important files. First, it chooses
+ "grammar file" over "input file". The former appears to be more
+ traditional in the Bison manual, and Bison has other input
+ files (skeletons). Second, it chooses "parser implementation
+ file" over names like "parser file", "parser source file", "parser
+ source code file", and "parser output file". The new name makes
+ it clearer where Bison generates the main parser implementation,
+ and it is easily distinguishable from "parser header file".
+ * doc/bison.texinfo: Implement throughout.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: give credit to more of Bison's developers.
+ * doc/bison.texinfo (Introduction): Don't imply that only Robert
+ Corbett, Richard Stallman, and Wilfred Hansen have contributed to
+ Bison. However, I don't have time to write a full history, so
+ just point readers to THANKS and ChangeLog.
+
+2011-02-06 Joel E. Denny <joeldenny@joeldenny.org>
+
+ doc: document experimental features better.
+ * doc/bison.texinfo (Introduction): Say that IELR(1) and canonical
+ LR(1) are experimental. Mention Java. Normally experimental
+ features probably shouldn't be mentioned in the introduction.
+ However, if Bison's limitations to LALR(1), C, and C++ are so
+ important that they should be mentioned here, then it's important
+ to point out that Bison is beginning to escape those limitations.
+ Moreover, these particular experimental features have very little
+ chance of being removed.
+ * src/getargs.c (usage): Say that IELR(1) and canonical LR(1) are
+ experimental.
+
+2011-01-29 Joel E. Denny <joeldenny@joeldenny.org>
+
+ Do not allow identifiers that start with a dash.
+ This cleans up our previous fixes for a bug whereby Bison
+ discarded `.field' in `$-1.field'. The previous fixes were less
+ restrictive about where a dash could appear in an identifier, but
+ the restrictions were hard to explain. That bug was reported and
+ this final fix was originally suggested by Paul Hilfinger. This
+ also fixes a remaining bug reported by Paul Eggert whereby Bison
+ parses `%token ID -123' as `%token ID - 123' and handles `-' as an
+ identifier. Now, `-' cannot be an identifier. Discussed in
+ threads beginning at
+ <http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00000.html>,
+ <http://lists.gnu.org/archive/html/bug-bison/2011-01/msg00004.html>.
+ * NEWS (2.5): Update entry describing the dash extension to
+ grammar symbol names. Also, move that entry before the named
+ references entry because the latter mentions the former.
+ * doc/bison.texinfo (Symbol): Update documentation for symbol
+ names. As suggested by Paul Eggert, mention the effect of periods
+ and dashes on named references.
+ (Decl Summary): Update documentation for unquoted %define values,
+ which, as a side effect, can no longer start with dashes either.
+ * src/scan-code.l (id): Implement.
+ * src/scan-gram.l (id): Implement.
+ * tests/actions.at (Exotic Dollars): Extend test group to exercise
+ bug reported by Paul Hilfinger.
+ * tests/input.at (Symbols): Update test group, and extend to
+ exercise bug reported by Paul Eggert.
+ * tests/named-refs.at (Stray symbols in brackets): Update test
+ group.
+ ($ or @ followed by . or -): Likewise.
+ * tests/regression.at (Invalid inputs): Likewise.
+
+2011-01-24 Joel E. Denny <joeldenny@joeldenny.org>
+
+ * data/yacc.c: Fix last apostrophe warning from xgettext.
+
+2011-01-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix minor problems encountered by a fresh bootstrap.
+ * data/glr.c, data/yacc.c: Do not use apostrophes in '#' comments,
+ as they confuse xgettext, which tries to parse them as C character
+ constants in a preprocessor directive.
+ * data/yacc.c (yy_lac): Don't use printf %d format on *yyesp, as
+ that expression might not promote to int on some platforms.
+ * src/parse-gram.c, src/parse-gram.h: Regenerate.
+
+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.
+ (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 <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: 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 <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 (parse.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>
+
+ Fix memory leak.
+ * src/output.c (prepare_rules): Free temporary array.
+
+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.
+ * bootstrap: Copy from gnulib's latest for the fix to
+ automatically anchor entries it constructs.
+ * gnulib: Update to latest just so it has the same bootstrap.
+ * .gitignore, build-aux/.gitignore, doc/.gitignore:
+ * lib/.gitignore, m4/.gitignore, po/.gitignore:
+ * runtime-po/.gitignore: Re-anchor all entries.
+
2010-10-08 Paul Eggert <eggert@cs.ucla.edu>
Fix portability problem on OpenBSD 4.7.
2010-07-23 Paul Hilfinger <hilfingr@EECS.Berkeley.EDU>
* NEWS: Describe new semantic-predicate feature.
- * data/c.m4 (b4_predicate_case): New definition.
- * data/java.m4 (b4_predicate_case): New definition.
- * data/glr.c (yyimmediate): Add definition.
- (yydoAction): Remove comment, now obsolete.
- Do YY_REDUCE_PRINT here.
- (yyglrReduce): Alter comment to indicate that semantic values
- need not be deferred.
- Remove YY_REDUCE_PRINT from here; done in yydoAction.
- (yyprocessOneStack): Pass immediate flag.
- Delete stacks rejected by predicates in newly split-off parsers.
- Change handling of yyerr so that only current stack gets deleted
- when semantic predicate fails.
- (yyfillin): Don't crash if a semantic value is unresolved (as may
- happen in predicate rules).
- Copy lr state as well in debugging mode.
- Update comment on setting of yysval to include yyloc as well.
- (yy_reduce_print): Add yynormal argument. Perform fillin properly.
- Report unresolved RHS values.
- (yyimmediate): New table.
- * src/gram.h (struct rule): Add is_predicate field.
- * src/output.c (user_actions_output): Use b4_predicate_case for
- predicates.
- (prepare_symbols): Output yyimmediate.
- * src/scan-gram.l: Add %? token, SC_PREDICATE state.
- * src/scan-code.l (code_props_rule_action_init): Add is_predicate
- argument.
- * src/scan-code.h (struct code_props): Add is_predicate field.
- (code_props_rule_action_init): New interface.
- * src/parse-gram.y (%?{...}): New token.
- (rhs): Add %?{...} rule.
- * src/parse-gram.c: Regenerate.
- * src/parse-gram.h: Regenerate.
- * src/reader.c (grammar_current_rule_action_append): Add
- immediate argument.
- (grammar_midrule_action): Use new interface for
- code_props_rule_action_init.
- (grammar_current_rule_action_append): Ditto.
- (packgram): Transfer is_predicate value.
- * src/reader.h (grammar_current_rule_action_append): New interface.
- * doc/bison.texinfo: Document semantic predicates (%?).
-
- * data/glr.c (yylhsNonterm, yyisDefaultedState,yyDefaultAction)
- (yygetLRActions,yynewGLRStackItem,yyaddDeferredAction,yyinitStateSet)
- (yyinitGLRStack,yyexpandGLRStack,yyupdateSplit,yymarkStackDeleted)
- (yyundeleteLastStack,yyglrShift,yyglrShiftDefer,yydoAction,yyglrReduce)
- (yyidenticalOptions,yymergeOptionSets,yyresolveStates,yyresolveAction)
- (yyresolveLocations,yyresolveValue,yyreducePrint): Update parameter
- names in comments and mention all parameters.
- (struct yyGLRState): Fix description of yyposn field.
- (yyresolveLocations): Correct comment so as not to imply action when
- yyn1==0.
+ * data/c.m4 (b4_predicate_case): New definition.
+ * data/java.m4 (b4_predicate_case): New definition.
+ * data/glr.c (yyimmediate): Add definition.
+ (yydoAction): Remove comment, now obsolete.
+ Do YY_REDUCE_PRINT here.
+ (yyglrReduce): Alter comment to indicate that semantic values
+ need not be deferred.
+ Remove YY_REDUCE_PRINT from here; done in yydoAction.
+ (yyprocessOneStack): Pass immediate flag.
+ Delete stacks rejected by predicates in newly split-off parsers.
+ Change handling of yyerr so that only current stack gets deleted
+ when semantic predicate fails.
+ (yyfillin): Don't crash if a semantic value is unresolved (as may
+ happen in predicate rules).
+ Copy lr state as well in debugging mode.
+ Update comment on setting of yysval to include yyloc as well.
+ (yy_reduce_print): Add yynormal argument. Perform fillin properly.
+ Report unresolved RHS values.
+ (yyimmediate): New table.
+ * src/gram.h (struct rule): Add is_predicate field.
+ * src/output.c (user_actions_output): Use b4_predicate_case for
+ predicates.
+ (prepare_symbols): Output yyimmediate.
+ * src/scan-gram.l: Add %? token, SC_PREDICATE state.
+ * src/scan-code.l (code_props_rule_action_init): Add is_predicate
+ argument.
+ * src/scan-code.h (struct code_props): Add is_predicate field.
+ (code_props_rule_action_init): New interface.
+ * src/parse-gram.y (%?{...}): New token.
+ (rhs): Add %?{...} rule.
+ * src/parse-gram.c: Regenerate.
+ * src/parse-gram.h: Regenerate.
+ * src/reader.c (grammar_current_rule_action_append): Add
+ immediate argument.
+ (grammar_midrule_action): Use new interface for
+ code_props_rule_action_init.
+ (grammar_current_rule_action_append): Ditto.
+ (packgram): Transfer is_predicate value.
+ * src/reader.h (grammar_current_rule_action_append): New interface.
+ * doc/bison.texinfo: Document semantic predicates (%?).
+
+ * data/glr.c (yylhsNonterm, yyisDefaultedState,yyDefaultAction)
+ (yygetLRActions,yynewGLRStackItem,yyaddDeferredAction,yyinitStateSet)
+ (yyinitGLRStack,yyexpandGLRStack,yyupdateSplit,yymarkStackDeleted)
+ (yyundeleteLastStack,yyglrShift,yyglrShiftDefer,yydoAction,yyglrReduce)
+ (yyidenticalOptions,yymergeOptionSets,yyresolveStates,yyresolveAction)
+ (yyresolveLocations,yyresolveValue,yyreducePrint): Update parameter
+ names in comments and mention all parameters.
+ (struct yyGLRState): Fix description of yyposn field.
+ (yyresolveLocations): Correct comment so as not to imply action when
+ yyn1==0.
2010-06-17 Paul Eggert <eggert@cs.ucla.edu>
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.
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.
2009-12-18 Joel E. Denny <jdenny@clemson.edu>
lalr1.cc: don't discard non-existent lookahead on syntax error.
- * data/lalr1.cc (parser::parse): Check yyempty first.
+ * data/lalr1.cc (yy::parser::parse): Check yyempty first.
* tests/c++.at (Syntax error discarding no lookahead): New test
group.
-----
- 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