+2009-05-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Convert multiple variable definition warnings to complaints.
+ * NEWS (2.5): Add a new entry for that change.
+ * doc/bison.texinfo (Decl Summary): Update %define entry.
+ (Bison Options): Update -D/--define/-F/--force-define entry.
+ * src/muscle_tab.c (muscle_percent_define_insert): Implement.
+ * src/muscle_tab.h (muscle_percent_define_insert): Update
+ comments.
+ * tests/input.at (`%define errors'): Update.
+ (`%define, --define, --force-define'): Update.
+
+2009-05-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ -F/--force-define and relative %define/-D/--define priorities.
+ * NEWS (2.5): Add documentation to -D/--define entry.
+ * build-aux/cross-options.pl: Hard-code association of
+ --force-define with %define.
+ * doc/bison.texinfo (Decl Summary): In %define entry,
+ cross-reference command-line options.
+ (Bison Options): Add documentation to -D/--define entry.
+ (Option Cross Key): Widen column for --force-define row.
+ * src/getargs.c (usage): Document -F/--force-define. Realign
+ options in output.
+ (short_options, long_options, getargs): Parse -F/--force-define,
+ and update muscle_percent_define_insert invocation.
+ * src/muscle_tab.h (muscle_percent_define_how): New enum type.
+ (muscle_percent_define_insert): Add argument with that type.
+ * src/muscle_tab.c (muscle_percent_define_insert): Implement
+ -F/--force-define behavior and priorities.
+ * src/parse-gram.y (prologue_declaration): Update
+ muscle_percent_define_insert invocations.
+ * tests/input.at (`%define, --define'): Rename to...
+ (`%define, --define, --force-define'): ... this and extend.
+
+2009-05-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Update some comments to make sense for -D.
+ * data/bison.m4 (b4_check_user_names): In header comments, say
+ "user occurrence" instead of "grammar occurrence".
+ * src/muscle_tab.h (muscle_percent_define_insert): Likewise.
+ (muscle_percent_code_grow): Likewise just for consistency.
+
+2009-05-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/c++.m4: Update copyright year.
+
+2009-05-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/c++.m4 (b4_namespace_close): Simplify slightly.
+
+2009-05-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Handle a trailing `:' in a user-supplied C++ namespace better.
+ * data/c++.m4 (b4_namespace_close): Don't let it be printed
+ among the closing braces here. This fix might make the
+ generated code easier to debug, but otherwise it should be
+ insignificant because a trailing `:' is a C++ error already.
+
+2009-05-19 Akim Demaille <demaille@gostai.com>
+
+ remove useless variable.
+ * src/getargs.c (skeleton_arg): Remove now useless variable.
+ Should help the compiler see that this printf-like call is sane.
+
+2009-05-11 Akim Demaille <demaille@gostai.com>
+
+ doc: use C++ headers.
+ * doc/bison.texinfo (Calc++ Scanner): Prefer C++ headers to C
+ headers.
+
+2009-05-05 Akim Demaille <demaille@gostai.com>
+
+ fix hexadecimal token number support.
+ * src/scan-gram.l: Catch incorrect ids after hexadecimal numbers.
+
+2009-05-05 Akim Demaille <demaille@gostai.com>
+
+ tests: check token numbers.
+ * tests/input.at (Numbered tokens): New.
+
+2009-05-04 Akim Demaille <demaille@gostai.com>
+
+ bison: catch bad symbol names.
+ * src/scan-gram.l({int}{id}): Report as an invalid identifier.
+ * tests/input.at: Adjust.
+
+2009-05-04 Akim Demaille <demaille@gostai.com>
+
+ space changes.
+ * src/scan-gram.l: Untabify to be robust to zealous editors.
+
+2009-05-04 Akim Demaille <demaille@gostai.com>
+
+ identifiers: dashes are letters.
+ Dashes can now start identifiers (symbols and directives).
+
+ * src/scan-gram.l ({letter}): Add dash.
+ ({id}): Remove it.
+ * tests/input.at (Symbols): Adjust.
+ Remove stray comment.
+ * tests/regression.at (Invalid inputs): Adjust error message.
+ * doc/bison.texinfo (Symbols): Update.
+
+2009-05-01 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Declare %code to be a permanent feature.
+ * NEWS (2.4.2): Here.
+ * doc/bison.texinfo (Prologue Alternatives): Don't say it's
+ experimental.
+ (Decl Summary): Likewise.
+
+2009-04-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Convert underscores to dashes in some %define variable names.
+ For now, just api.push-pull and lr.keep-unreachable-states.
+ Maintain old names for backward compatibility.
+ * NEWS (2.5): Document.
+ * data/c.m4 (b4_identification): Update comment.
+ * data/yacc.c: Update access.
+ * doc/bison.texinfo: Update.
+ * etc/bench.pl.in (bench_grammar): Update use.
+ * src/files.c (tr): Move to...
+ * src/getargs.c, src/getargs.h (tr): ... here because I can't
+ think of a better place to expose it. My logic is that, for all
+ uses of tr so far, command-line arguments can be involved, and
+ getargs.h is already included.
+ * src/main.c (main): Update access.
+ * src/muscle_tab.c (muscle_percent_define_insert): Convert old
+ variable names to new variable names before assigning value.
+ * src/reader.c (reader): Update setting default.
+ * tests/calc.at: Update uses.
+ * tests/conflicts.at (Unreachable States After Conflict
+ Resolution): Update use.
+ * tests/input.at (%define enum variables): Update use.
+ (%define backward compatibility): New test group.
+ * tests/push.at: Update uses.
+ * tests/reduce.at: Update uses.
+ * tests/torture.at: Update uses.
+
+2009-04-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Set all front-end %define defaults in one place.
+ * src/main.c (main): Move lr.keep_unreachable_states default...
+ * src/reader.c (reader): ... to here.
+
+2009-04-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rename lr.default_reductions to lr.default-reductions.
+ * NEWS (2.5): Here.
+ * doc/bison.texinfo: Here.
+ * src/lalr.c (initialize_LA): Here.
+ * src/print.c (print_reductions): Here.
+ * src/reader.c (reader): Here.
+ * src/tables.c (action_row): Here.
+ * tests/input.at (%define enum variables): Here.
+ * tests/reduce.at (AT_TEST_LR_DEFAULT_REDUCTIONS): Here.
+
+2009-04-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Pacify ./configure --enable-gcc-warnings.
+ * tests/input.at (Symbols): Prototype yyerror and yylex.
+
+2009-04-21 Akim Demaille <demaille@gostai.com>
+
+ tests: check the use of dashes and periods in symbols.
+ * tests/input.at (Symbol): New test group.
+
+2009-04-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Document how `%define "var" "value"' is not M4-friendly.
+ * src/parse-gram.y (variable): In comments here.
+
+2009-04-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add copyright updates missed during previous cherry pick.
+ * src/output.c: Here.
+ * src/parse-gram.y: Here.
+ * src/scan-gram.l: Here.
+
+2009-04-20 Akim Demaille <demaille@gostai.com>
+
+ variables: accept dashes.
+ * src/scan-gram.l ({id}): Also accept dashes after the initial
+ letter.
+ ({directive}): Use {id}.
+ * src/parse-gram.y: Comment and formatting changes.
+ * doc/bison.texinfo (Symbols): Adjust the lexical definitions of
+ symbols.
+ * src/complain.h, src/complain.c (yacc_at): New.
+ * src/symtab.c (symbol_new): Use yacc_at to report inappropriate
+ symbol names.
+ * src/output.c (token_definitions_output): Do not #define token
+ names with dashes.
+
+2009-04-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up recent patches a little.
+ Reported by Akim Demaille.
+ * doc/bison.texinfo (Understanding): Fix typos.
+ * src/print.c (print_reductions): Don't use negated variable.
+
+2009-04-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ List accepted values for a %define enum variable with an invalid value.
+ Suggested by Akim Demaille at
+ <http://lists.gnu.org/archive/html/bison-patches/2009-04/msg00082.html>.
+ * data/bison.m4 (_b4_percent_define_check_values): Implement.
+ * src/muscle_tab.c (muscle_percent_define_check_values): Implement.
+ * tests/input.at (%define lr.default_reductions invalid values): Merge
+ into...
+ (%define enum variables): ... here, and update output.
+
+2009-04-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rename "default rule" to "default reduction".
+ This includes changing variable names in code, changing
+ comments, and renaming %define lr.default_rules to %define
+ lr.default_reductions.
+ * NEWS (2.5): Update IELR documentation.
+ * data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c:
+ Adjust YYDEFACT and yydefact_ documentation.
+ * doc/bison.texinfo (Decl Summary): Adjust lr.default_reductions
+ and lr.type documentation. Make some other wording
+ improvements.
+ (Glossary): Adjust cross-references and Default Reduction
+ definition.
+ * src/lalr.c (state_lookahead_tokens_count): Adjust code.
+ Remove a confusing comment pointed out by Akim Demaille.
+ (initialize_LA): Adjust code.
+ * src/print-xml.c (print_reductions): Adjust code.
+ * src/print.c (print_reductions): Adjust code.
+ * src/reader.c (reader): Adjust code.
+ * src/tables.c (action_row): Adjust code.
+ (token_actions): Adjust code.
+ * src/tables.h: Adjust YYDEFACT documentation.
+ * tests/input.at (%define lr.default_rules invalid values):
+ Rename test group to...
+ (%define lr.default_reductions invalid values): ... this, and
+ update grammar file and expected output.
+ * tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): Rename to...
+ (AT_TEST_LR_DEFAULT_REDUCTIONS): ... this, and update.
+
+2009-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Document %define lr.type and lr.default_rules.
+ * NEWS (2.5): Add an entry.
+ * src/getargs.c (usage): Mention IELR(1) and canonical LR(1)
+ besides just LALR(1) and GLR(1).
+ * doc/bison.texinfo (Introduction): Likewise.
+ (Language and Grammar): Bison is no longer limited to LALR(1)
+ restrictions.
+ (GLR parsing): Say deterministic or LR(1) rather than LALR(1)
+ when trying to distinguish from GLR. Talk about LR(1) grammars
+ rather than LALR(1) grammars.
+ (Decl Summary): In %define api.push_pull entry, say it applies
+ to deterministic parsers in C rather than LALR(1) parsers in C.
+ Add lr.default_rules entry.
+ Add lr.type entry.
+ (Mystery Conflicts): Bison is no longer limited to LALR(1)
+ restrictions.
+ (Generalized LR Parsing): Same changes as for the previous GLR
+ section.
+ (Memory Management): Say deterministic rather than LALR(1).
+ (Understanding): Correct some bison output.
+ Index discussion of "accepting state".
+ Say deterministic rather than LALR(1).
+ (Bison Options): In --yacc entry, say deterministic rather than
+ LALR(1).
+ In --report, --graph, and --xml entries, just don't mention
+ LALR(1).
+ (C++ Parsers): Say deterministic rather than LALR(1).
+ (Table of Symbols): Likewise in YYSTACK_USE_ALLOCA entry.
+ (Glossary): Add Accepting State, Consistent State, Default Rule,
+ and IELR(1) definitions.
+ In Generalized LR (GLR) definition, make same changes as in
+ previous GLR sections.
+ In LALR(1) definition, say Bison uses LALR(1) by default rather
+ than implying Bison is limited to LALR(1).
+ (LocalWords): Add IELR.
+
+2009-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Finish implementing %define lr.type.
+ Its value can be "LALR", "IELR", or "canonical LR".
+ * lib/timevar.def (TV_IELR_PHASE1): New var.
+ (TV_IELR_PHASE2): New var.
+ (TV_IELR_PHASE3): New var.
+ (TV_IELR_PHASE4): New var.
+ * src/Makefile.am (bison_SOURCES): Add AnnotationList.c,
+ AnnotationList.h, InadequacyList.c, InadequacyList.h, Sbitset.c,
+ Sbitset.h, ielr.h, and ielr.c.
+ * src/getargs.h, src/getargs.c (enum trace, trace_args,
+ trace_types): Add trace_ielr.
+ * src/lalr.h, src/lalr.c (ngotos): Export it.
+ (F): Rename to...
+ (goto_follows): ... this, update all uses, and export it.
+ (set_goto_map): Export it.
+ (map_goto): Export it.
+ (compute_lookahead_tokens): Don't free goto_follows yet. Now
+ handled in ielr.
+ (initialize_LA): Export it. Move lookback allocation to...
+ (lalr): ... here because, for canonical LR, initialize_LA must
+ be invoked but lookback and much of the rest of LALR isn't
+ needed.
+ * main.c (main): Instead of lalr, invoke ielr, which invokes
+ lalr.
+ * src/reader.c (reader): Default lr.type to "LALR".
+ Default lr.default_rules to "accepting" if lr.type is "canonical
+ LR". Leave the default as "all" otherwise.
+ Check for a valid lr.type value.
+ * src/state.h, src/state.c (struct state_list): Add state_list
+ member.
+ (state_new): Initialize state_list member to NULL.
+ (state_new_isocore): New function, exported.
+ * tests/existing.at (AT_TEST_EXISTING_GRAMMAR): New macro that
+ exercises all values of lr.type.
+ (GNU AWK Grammar): Rename test group to...
+ (GNU AWK 3.1.0 Grammar): ... this, and extend to use
+ AT_TEST_EXISTING_GRAMMAR.
+ (GNU Cim Grammar): Extend to use AT_TEST_EXISTING_GRAMMAR.
+ (GNU pic Grammar): Rename test group to...
+ (GNU pic (Groff 1.18.1) Grammar): ... this, and extend to use
+ AT_TEST_EXISTING_GRAMMAR.
+ * tests/reduce.at (AT_TEST_LR_TYPE): New macro that exercises
+ all values of lr.type.
+ (Single State Split): New test groups using AT_TEST_LR_TYPE.
+ (Lane Split): Likewise.
+ (Complex Lane Split): Likewise.
+ (Split During Added Lookahead Propagation): Likewise.
+
+2009-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add new files for IELR and canonical LR implementation.
+ * src/AnnotationList.c: New.
+ * src/AnnotationList.h: New.
+ * src/InadequacyList.c: New.
+ * src/InadequacyList.h: New.
+ * src/Sbitset.c: New.
+ * src/Sbitset.h: New.
+ * src/ielr.c: New.
+ * src/ielr.h: New.
+
+2009-04-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Implement %define lr.default_rules.
+ Its value describes the states that are permitted to contain
+ default rules: "all", "consistent", or "accepting".
+ * src/reader.c (reader): Default lr.default_rules to "all".
+ Check for a valid lr.default_rules value.
+ * src/lalr.c (state_lookahead_tokens_count): If lr.default_rules
+ is "accepting", then only mark the accepting state as
+ consistent.
+ (initialize_LA): Tell state_lookahead_tokens_count whether
+ lr.default_rules is "accepting".
+ * src/tables.c (action_row): If lr.default_rules is not "all",
+ then disable default rules in inconsistent states.
+ * src/print.c (print_reductions): Use this opportunity to
+ perform some assertions about whether lr.default_rules was
+ obeyed correctly.
+ * tests/local.at (AT_TEST_TABLES_AND_PARSE): New macro that
+ helps with checking the parser tables for a grammar.
+ * tests/input.at (%define lr.default_rules invalid values): New
+ test group.
+ * tests/reduce.at (AT_TEST_LR_DEFAULT_RULES): New macro using
+ AT_TEST_TABLES_AND_PARSE.
+ (`no %define lr.default_rules'): New test group generated by
+ AT_TEST_LR_DEFAULT_RULES.
+ (`%define lr.default_rules "all"'): Likewise.
+ (`%define lr.default_rules "consistent"'): Likewise.
+ (`%define lr.default_rules "accepting"'): Likewise.
+
+2009-04-20 Akim Demaille <demaille@gostai.com>
+
+ Consistently refer to Yacc, not YACC.
+ * src/getargs.c (usage, warnings_args): s/YACC/Yacc/.
+
+2009-04-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Pacify make maintainer-check-posix.
+ * tests/input.at (%define, --define): Move bison command-line
+ options before grammar file name.
+
+2009-04-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Document semicolon warnings.
+ * NEWS (2.5): Here.
+
+2008-12-08 Akim Demaille <demaille@gostai.com>
+
+ Fix portability issue in the test suite.
+ * tests/local.at (AT_MATCHES_CHECK): New.
+ Based on Perl instead of Sed. Sed has too many portability
+ pitfalls, not ever Sed is GNU Sed.
+ * tests/actions.at (Fix user actions without a trailing semicolon):
+ Use it.
+
+2008-12-07 Di-an Jan <dianj@freeshell.org>
+
+ Implement the FIXME that ends an user action with a semicolon
+ if it seems necessary.
+ * src/scan-code.l (flex rules section): Flag cpp directive from
+ any `#' to the first unescaped end-of-line. Semicolon is not
+ needed after `;', `{', '}', or cpp directives and is needed after
+ any other token (whitespaces and comments have no effect).
+ * tests/actions.at (Fix user actions without a trailing semicolon):
+ New test.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Add semicolons to
+ to make user actions complete statements.
+ Adjust column numbers in error messages.
+ * tests/regression.at (Fix user actions without a trailing semicolon):
+ Remove. Covered by new test.
+
2009-04-14 Akim Demaille <demaille@gostai.com>
doc: minor fixes.