]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Make parser::yytranslate static.
[bison.git] / ChangeLog
index 9072e40978a5574510af9a2f679a1dfae8efab7c..d9e52b870296284dbc105340bb6337baccd0e9a5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Make parser::yytranslate static.
+       Small speedup (1%) on the list grammar.  And makes yytranslate_ available
+       in non member functions.
+       
+       * data/lalr1.cc (yytranslate_): Does not need to be a instance
+       function.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Avoid trailing spaces.
+       * data/c.m4: b4_comment(TEXT): Don't indent empty lines.
+       * data/lalr1.cc: Don't indent before rule and symbol actions, as
+       they can be empty, and anyway this incorrectly indents the first
+       action.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Comment changes.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Use "enum" for integral constants.
+       This is just nicer to read, I observed no speedup.
+       
+       * data/lalr1.cc (yyeof_, yylast_, yynnts_, yyempty_, yyfinal_)
+       (yterror_, yyerrcode_, yyntokens_): Define as members of an enum.
+       (yyuser_token_number_max_, yyundef_token_): Move into...
+       (yytranslate_): here.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Shortcuts in bench directives.
+       * etc/bench.pl.in (parse_dirs): New.
+       Use it.
+       (bench_variant_parser, bench_fusion_parser): Use %s and %d.
+       Create the benches in "benches/".
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Formatting changes.
+       * data/lalr1.cc: here.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Adjust verbose message to using emacs.
+       * etc/bench.pl.in: Inform compilation-mode when we change the
+       directory.
+       (generate_grammar_list): Recognize %define "variant" in addition
+       to %define variant.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Classify symbols by type-name.
+       * src/uniqstr.h (UNIQSTR_CMP): New.
+       * src/output.c (symbol_type_name_cmp, symbols_by_type_name)
+       (type_names_output): New.
+       (muscles_output): Use it.
+       * data/lalr1.cc (b4_symbol_action_): Remove.
+       (b4_symbol_case_, b4_type_action_): New.
+       Adjust uses of b4_symbol_action_ to use b4_type_action_.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Change the handling of the symbols in the skeletons.
+       Before we were using tables which lines were the symbols and which
+       columns were things like number, tag, type-name etc.  It is was
+       difficult to extend: each time a column was added, all the numbers had
+       to be updated (you asked for colon $2, not for "tag").  Also, it was
+       hard to filter these tables when only a subset of the symbols (say the
+       tokens, or the nterms, or the tokens that have and external number
+       *and* a type-name) was of interest.
+       
+       Now instead of monolithic tables, we define one macro per cell.  For
+       instance "b4_symbol(0, tag)" is a macro name which contents is
+       self-decriptive.  The macro "b4_symbol" provides easier access to
+       these cells.
+       
+       * src/output.c (type_names_output): Remove.
+       (symbol_numbers_output, symbol_definitions_output): New.
+       (muscles_output): Call them.
+       (prepare_symbols): Define b4_symbols_number.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       --trace=muscles
+       * src/getargs.h, src/getargs.c (trace_muscle): New.
+       (trace_types, trace_args): Support it.
+       * src/output.c (output_skeleton): Use it.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       muscles_output.
+       * src/output.c (muscles_output): New, extracted from...
+       (output_skeleton): here.
+       Adjust.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Formatting changes.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Update the variant example.
+       * examples/variant.yy: Formatting changes.
+       One stage build.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Support constructor with an argument.
+       This improves the "list" bench by 2%.
+       
+       * data/lalr1.cc (variant::build): Add an overloaded version with
+       an argument.
+       * tests/c++.at (AT_CHECK_VARIANT): Check it.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Test variants.
+       * tests/c++.at (AT_CHECK_VARIANTS): New.
+       Use it with and without %define assert.
+
+2008-11-10  Akim Demaille  <demaille@gostai.com>
+
+       Add %precedence support.
+       Unfortunately it is not possible to reuse the %prec directive.  This
+       is because to please POSIX, we do not require to end the rules with a
+       semicolon.  As a result,
+       
+       foo: bar %prec baz
+       
+       is ambiguous: either a rule which precedence is that of baz, or a rule,
+       and then a declaration of the precedence of the token baz.
+       
+       * doc/bison.texinfo: Document %precedence.
+       (Precedence Only): New.
+       * src/assoc.h, src/assoc.c (precedence_assoc): New.
+       * src/conflicts.c (resolve_sr_conflict): Support it.
+       * src/scan-gram.l, src/parse-gram.y (%precedence): New token.
+       Parse it.
+       * tests/calc.at: Use %precedence for NEG.
+       * tests/conflicts.at (%precedence does not suffice)
+       (%precedence suffices): New tests.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Make benches in a sub dirs.
+       * etc/bench.pl.in ($dir): New.
+       Use it.
+       Check the use of constructors with an argument.
+       (bench_variant_parser): Fix.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       fix eof condition
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Fix --help.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Require the generation of parse-gram.output.
+       * src/Makefile.am (YACC): Pass --report=all.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Formatting changes.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Update TODO.
+       * TODO: Remove obsolete items.
+       Update others.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Enhance bench.pl.
+       * etc/bench.pl.in (parse, parse_expr, parse_term, parse_fact)
+       (@token, $grammar, $bench): New.
+       (generate_grammar_variant): Rename as...
+       (generate_grammar_list): this.
+       (generate_grammar): Adjust.
+       (bench_grammar): Rename as...
+       (bench): this.
+       Use it in the various bench-marking routines.
+       (-b, -g): New options.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Use a static hierarchy for symbols in the C++ parser.
+       * data/lalr1.cc (symbol_base_type, symbol_type)
+       (stack_symbol_type): Make it a static hierarchy.
+       Adjust dependencies.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       bench.pl -d, --directive.
+       * etc/bench.pl.in (@directive): New.
+       (&bench_grammar): Use it.
+       (&bench_list_grammar): New, to provide access to the "variant"
+       grammar.
+       Use it.
+       (getopts): Support -d, --directive.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Use inline for small operations.
+       * data/lalr1.cc (symbol_base_type, symbol_type)
+       (stack_symbol_type): Declare constructor and other operations as
+       inline.
+       (yy_destroy_): Inline.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Introduce a hierarchy for symbols.
+       * data/lalr1.cc (symbol_base_type, symbol_type): New.
+       (data_type): Rename as...
+       (stack_symbol_type): this.
+       Derive from symbol_base_type.
+       (yy_symbol_value_print_): Merge into...
+       (yy_symbol_print_): this.
+       Rename as...
+       (yy_print_): this.
+       (yydestruct_): Rename as...
+       (yy_destroy_): this.
+       (b4_symbols_actions, YY_SYMBOL_PRINT): Adjust.
+       (parser::parse): yyla is now of symbol_type.
+       Use its type member instead of yytoken.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Rename data_type and stack_symbol_type.
+       * data/lalr1.cc (data_type): Rename as...
+       (stack_symbol_type): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Handle semantic value and location together.
+       * data/lalr1.cc (b4_symbol_actions): Bounce $$ and @$ to
+       yydata.value and yydata.location.
+       (yy_symbol_value_print_, yy_symbol_print_, yydestruct_)
+       (YY_SYMBOL_PRINT): Now take semantic value and location as a
+       single arg.
+       Adjust all callers.
+       (yydestruct_): New overload for a stack symbol.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Push a complete symbol, not connected parts.
+       * data/lalr1.cc (yypush_): Take a data_type&, not disconnected
+       state, value and location.
+       Adjust callers.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Agregate yylval and yylloc.
+       * data/lalr1.cc (parser::yylval, parser::yylloc): Replace by...
+       (parser::yyla): this.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Rely on the state stack to display reduction traces.
+       To display rhs symbols before a reduction, we used information about the rule
+       reduced, which required the tables yyrhs and yyprhs.  Now use rely only on the
+       state stack to get the same information.
+       
+       * data/lalr1.cc (b4_rhs_data, b4_rhs_state): New.
+       Use them.
+       (parser::yyrhs_, parser::yyprhs_): Remove.
+       (parser::yy_reduce_print_): Use the state stack.
+
+2008-11-09  Akim Demaille  <demaille@gostai.com>
+
+       Fuse yyval and yyloc into yylhs.
+       * data/lalr1.cc (b4_lhs_value, b4_lhs_location): Adjust to using
+       yylhs.
+       (parse): Replace yyval and yyloc with yylhs.value and
+       yylhs.location.
+       After a user action, compute yylhs.state earlier.
+       (yyerrlab1): Do not play tricks with yylhs.location, rather, use a
+       fresh error_token.
+
+2008-11-09  Di-an Jan  <dianj@freeshell.org>
+
+       Remove unused variable.
+       * src/output.c (type_names_output): Remove unused variable sep.
+
+2008-11-09  Paolo Bonzini  <bonzini@gnu.org>
+
+       Change tests/output.at quoting.
+       * tests/output.at (AT_CHECK_OUTPUT): Use conventional m4 quoting when
+       expanding arguments.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't add a semicolon to actions for %skeleton or %language.
+       It breaks Java test cases as reported by Akim Demaille.
+       * src/scan-code.l: Implement.
+
+2008-11-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up %skeleton and %language priority implementation.
+       * src/getargs.c (skeleton_prio): Use default_prio rather than 2, and
+       remove static qualifier because others will soon need to see it.
+       (language_prio): Likewise.
+       (getargs): Use command_line_prio rather than 0.
+       * src/getargs.h (command_line_prio, grammar_prio, default_prio): New
+       enum fields.
+       (skeleton_prio): Extern it.
+       (language_prio): Extern it.
+       * src/parse-gram.y: Use grammar_prio rather than 1.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Moving push traces into yypush_.
+       * data/lalr1.cc (yypush_): Now takes a optional trace message.
+       Adjust all uses.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       The single-stack C++ parser is now the standard one.
+       * data/lalr1.cc: Rename as...
+       * data/lalr1-split.cc: this.
+       * data/lalr1-fusion.cc: Rename as...
+       * data/lalr1.cc: this.
+       * etc/bench.pl.in: Adjust.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Avoid empty-if warnings.
+       Reported by Quentin Hocquet.
+       
+       * data/lalr1-fusion.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT)
+       (YY_STACK_PRINT): Provide some contents even when !YYDEBUG.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Pass command line location to skeleton_arg and language_argmatch.
+       * src/getargs.h, src/getargs.c (skeleton_arg, language_argmatch):
+       The location argument is now mandatory.
+       Adjust all dependencies.
+       (getargs): Use command_line_location.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       -D, --define.
+       * src/getargs.c (usage): Document -D.
+       Fix help string for --locations.
+       (command_line_location): New.
+       (short_options, long_options, getargs): Support -D, --define.
+       (getargs): Move -d support at the right place.
+       * doc/bison.texinfo (Bison Options): Update.
+       * tests/input.at (%define, --define): New.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Initialize the muscle table before parsing the command line.
+       * src/getargs.c (quotearg.h, muscle_tab.h): Include.
+       (getargs): Define file_name.
+       * src/main.c (main): Initialize muscle_tab before calling
+       getargs.
+       * src/muscle_tab.c (muscle_init): No longer define file_name, as
+       its value is not available yet.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Locations without columns for command line arguments.
+       * src/location.c (location_print): Don't display negative columns.
+       * src/location.h: Document this.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Fix --help.
+       * src/getargs.c (usage): Fix help string for -W.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Handle more general types of option arguments.
+       * build-aux/cross-options.pl: The argument ends at the first
+       space, not the first non-symbol character.
+       Use @var for each word appearing the argument description.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Destroy the variants that remain on the stack in case of error.
+       * data/lalr1-fusion.cc (yydestruct_): Invoke the variant's
+       destructor.
+       Display the value only if yymsg is nonnull.
+       (yyreduce): Invoke yydestruct_ when popping lhs symbols.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Add "%define assert" to variants.
+       This is used to help the user catch cases where some value gets
+       ovewritten by a new one.  This should not happen, as this will
+       probably leak.
+       
+       Unfortunately this uncovered a bug in the C++ parser itself: the
+       lookahead value was not destroyed between two calls to yylex.  For
+       instance if the previous lookahead was a std::string, and then an int,
+       then the value of the std::string was correctly taken (i.e., the
+       lookahead was now an empty string), but std::string structure itself
+       was not reclaimed.
+       
+       This is now done in variant::build(other&) (which is used to take the
+       value of the lookahead): other is not only stolen from its value, it
+       is also destroyed.  This incurs a new performance penalty of a few
+       percent, and union becomes faster again.
+       
+       * data/lalr1-fusion.cc (variant::build(other&)): Destroy other.
+       (b4_variant_if): New.
+       (variant::built): New.
+       Use it whereever the status of the variant changes.
+       * etc/bench.pl.in: Check the penalty of %define assert.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Use "%define variant" in bench.pl.
+       * etc/bench.pl.in: No longer use the pseudo directive %variants,
+       just use %define variants.
+
+2008-11-07  Akim Demaille  <demaille@gostai.com>
+
+       Regen.
+       * src/parse-gram.h, src/parse-gram.c: Regen.
+
+2008-11-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix user actions without a trailing semicolon.
+       Reported by Sergei Steshenko at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-11/msg00001.html>.
+       * THANKS (Sergei Steshenko): Add.
+       * src/scan-code.l (SC_RULE_ACTION): Fix it.
+       * tests/regression.at (Fix user actions without a trailing semicolon):
+       New test case.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Use b4_copyright_years.
+       * data/yacc.c (b4_copyright_years): New.
+       Fix its value according to the comments in the file.
+       Use it and undefine it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Formatting changes.
+       * data/lalr1-fusion.cc, src/parse-gram.y: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Formatting changes.
+       * data/lalr1-fusion.cc: here.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Use strict on bench.pl.
+       * etc/bench.pl.in (&run, &generate_grammar): New.
+       Rename the grammar generating functions for consistency.
+       Change the interface so that the list of benches to run is passed
+       as (optionless) arguments.
+       (&compile): Use &run.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Remove spurious initial empty lines.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
+       * data/yacc.c: End the @output lines with an @.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Improve the display of sizes.
+       * etc/bench.p.in: Higher precision.
+       Sort by decreasing size.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Don't memcpy C++ structures.
+       * data/lalr1-fusion.cc (b4_symbol_variant): Adjust additional
+       arguments.
+       (variant::build): New overload for
+       copy-construction-that-destroys.
+       (variant::swap): New.
+       (parser::yypush_): Use it in variant mode.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Better defaults for bench.pl.
+       * etc/bench.pl.in ($verbose, $cflags, $iterations): Change the
+       default values.
+       Adjust &verbose uses.
+       (-q, --quiet): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Make variant.yy more complex.
+       std::list cannot be copied via memcpy, they are more demanding than
+       std::string.  Use one std::list to strengthen the test.
+       
+       * examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
+       Adjust.
+       Create a list of strings, instead of a single large string.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       bench.pl --bench.
+       * etc/bench.pl.in (--bench, $bench): New.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Sort methods.
+       * data/lalr1-fusion.cc (destroy): Use as() in its definition.
+       Define it after as().
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Useless parens.
+       * data/lalr1-fusion.cc (b4_rhs_location): Remove useless parens.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Issue missing synclines after user actions.
+       * data/c.m4 (b4_case): Issue synclines on the output file.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Remove trailing empty line.
+       * data/lalr1-fusion.cc: Don't add an empty line after the user's
+       epilogue.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Fix output of copyright years.
+       * data/bison.m4 (b4_copyright): Fix the indentation of the
+       copyright year paragraph.
+       Use b4_copyright_years when no years are given.
+       * data/lalr1.cc, data/lalr1-fusion.cc, data/location.cc
+       (b4_copyright_years): New.
+       Use it.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Avoid the spurious initial empty line.
+       * data/lalr1-fusion.cc, data/location.cc: Put a trailing "@" at
+       the end of @output request to suppress the empty line that
+       results.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Remove parser::rhs_number_type.
+       * data/lalr1-fusion.cc (rhs_number_type): No longer define it.
+       (yyrhs_): Use b4_table_define.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Fix iteration type.
+       * data/lalr1-fusion.cc: Use an int to iterate up to an int.
+
+2008-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Factor the declaration of the integer tables.
+       * data/lalr1-fusion.cc (b4_table_define): New.
+       Use it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Fix indentation of tables in lalr1.cc
+       * data/lalr1-fusion.cc: Fix the indentation.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Destroy the lhs symbols after reduction.
+       * data/lalr1-fusion.cc (parse): After the user action, when in
+       variant mode, destroy the lhs symbols.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Simplify yysyntax_error_ use.
+       * data/lalr1-fusion.cc (yysyntax_error_): Always pass it the token
+       type, but make it unnamed in the declaration when it is not used.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Let yy::variant::build return an lvalue.
+       * data/lalr1-fusion.cc (variant::build): Return a reference to the
+       object.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Define yy::variant only when needed.
+       * data/lalr1-fusion.cc (yy::variant): Define only if variants are
+       used.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Bench the three-stack lalr1.cc.
+       * etc/bench.pl.in: Bench the three-stack lalr1.cc vs. the
+       one-stack one.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Fail on parse error in calc++.
+       * doc/bison.texinfo (calc++.cc): Propagate failures to the exit
+       status.
+       * examples/calc++/test ($me, $number, $exit, run): New.
+       Use them to propagate errors to the exit status.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Don't specify the skeleton twice in the example.
+       * examples/calc++/Makefile.am: Don't pass -S to Bison, the grammar
+       file does what is needed.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench: Improve output.
+       * etc/bench.pl.in (bench_grammar): Tune the printf format.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench: check impact of %debug on variants.
+       * etc/bench.pl.in (variant_grammar): Fix the computation of
+       $variant.
+       Generate a grammar file that can work with or without %debug.
+       Do use the @directive.
+       (bench_variant_parser): Check impact of %debug.
+       (@directives): Rename all the occurrences to...
+       (@directive): this, for consistency.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench: report the size too.
+       * etc/bench.pl.in ($iterations): Defaults to -3.
+       (&bench_grammar): Require hireswallclock.
+       Compute and display the size of the result.
+       More comments.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench: More use of the verbosity level.
+       * etc/bench.pl.in ($verbose, &verbose): New.
+       Use them.
+       More POD documentation.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench.pl: a command line interface
+       * etc/bench.pl.in: More doc.
+       Some fixes in the documentation.
+       ($cflags, $iterations, &help, &getopt): New.
+       Use them.
+       (&variant_grammar): Let the number of stages be 10 times what is
+       specified.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Bench the use of Boost.Variants.
+       * etc/bench.pl.in ($cxx, &variant_grammar, &bench_variant_parser):
+       New.
+       (&compile): Be ready to compile C++ parsers.
+       (&bench_push_parser): Move debug information to the outermost
+       level.
+       * THANKS: Add Michiel De Wilde.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       bench.pl: Pass directives as a list instead of as a string.
+       * etc/bench.pl.in (&directives): New.
+       (&triangular_grammar, &calc_grammar): Use it to format the Bison
+       directives.
+       (&triangular_grammar): Do use the directives (were ignored).
+       (&bench_grammar, &bench_push_parser): Adjust to pass lists of
+       directives.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Improve genericity of bench.pl.
+       * etc/bench.pl.in (&bench_grammar): Take the set of benches as
+       argument.
+       (&bench_push_parser): New.
+       Call it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Add documentation to bench.pl.
+       * etc/bench.pl.in: Comment changes.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Fuse the three stacks into a single one.
+       In order to make it easy to perform benchmarks to ensure that there are no
+       performance loss, lalr1.cc is forked into lalr1-fusion.cc.  Eventually,
+       lalr1-fusion.cc will replace lalr1.cc.
+       
+       Meanwhile, to make sure that lalr1-fusion.cc is correctly exercized by the
+       test suite, the user must install a symbolic link from lalr1.cc to it.
+       
+       Instead of having three stacks (state, value, location), use a stack
+       of triples.  This considerably simplifies the code (and it will be
+       easier not to require locations as currently does the C++ parser),
+       and also gives a 10% speedup according to etc/bench (probably mainly since
+       memory allocation is done once instead of three times).
+       
+       Another motivation is to make it easier to destruct properly
+       semantic values: now that they are bound to their state (hence
+       symbol type) it will be easier to call the appropriate destructor.
+       
+       These changes should probably benefit the C parser too.
+       
+       * data/lalr1.cc: Copy as...  * data/lalr1-fusion.cc: this new
+       file.
+       (b4_rhs_value, b4_rhs_location): New definitions overriding those
+       from c++.m4.
+       (state_stack_type, semantic_stack_type, location_stack_type)
+       (yystate_stack_, yysemantic_stack_, yylocation_stack_): Remove.
+       (data_type, stack_type, yystack_): New.
+       (YYLLOC_DEFAULT, yypush_): Adjust.
+       (yyerror_range): Now based on data_type, not location_type.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Push the state, value, and location at the same time.
+       This is needed to prepare a forthcoming patch that fuses the three
+       stacks into one.
+       
+       * data/lalr1.cc (parser::yypush_): New.
+       (parser::yynewstate): Change the semantics: instead of arriving to
+       this label when value and location have been pushed, but yystate
+       is to be pushed on the state stack, now the three of them must
+       have been pushed before.  yystate still must be the new state.
+       This allows to use yypush_ everywhere instead of individual
+       handling of the stacks.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Prefer references to pointers.
+       * data/lalr1.cc (b4_symbol_actions): New, overrides the default C
+       definition to use references instead of pointers.
+       (yy_symbol_value_print_, yy_symbol_print_, yydestruct_):
+       Take the value and location as references.
+       Adjust callers.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       stack::size instead of stack::height.
+       * data/lalr1.cc (stack::height): Rename as...
+       (stack::size): this.
+       Fix the output type.
+       Comment changes.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Use variants to support objects as semantic values.
+       This patch was inspired by work by Michiel De Wilde.  But he used Boost
+       variants which (i) requires Boost on the user side, (ii) is slow, and
+       (iii) has useless overhead (the parser knows the type of the semantic value
+       there is no reason to duplicate this information as Boost.Variants do).
+       
+       This implementation reserves a buffer large enough to store the largest
+       objects.  yy::variant implements this buffer.  It was implemented with
+       Quentin Hocquet.
+       
+       * src/output.c (type_names_output): New.
+       (output_skeleton): Invoke it.
+       * data/c++.m4 (b4_variant_if): New.
+       (b4_symbol_value): If needed, provide a definition for variants.
+       * data/lalr1.cc (b4_symbol_value, b4_symbol_action_)
+       (b4_symbol_variant, _b4_char_sizeof_counter, _b4_char_sizeof_dummy)
+       (b4_char_sizeof, yy::variant): New.
+       (parser::parse): If variants are requested, define
+       parser::union_type, parser::variant, change the definition of
+       semantic_type, construct $$ before running the user action instead
+       of performing a default $$ = $1.
+       * examples/variant.yy: New.
+       Based on an example by Michiel De Wilde.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Parameterize the extraction of semantic values.
+       To make future changes easier, no longer rely on ".TYPE" being the
+       way to get a semantic value.
+       
+       * data/c.m4 (b4_symbol_value): New.
+       Use it.
+       * data/c++.m4, data/yacc.c: Use it.
+       * data/glr.c: Use b4_symbol_value.
+       (b4_rhs_data): New.
+       Use it.
+
+2008-11-03  Akim Demaille  <demaille@gostai.com>
+
+       Prepare easier M4 changes.
+       * data/lalr1.cc: Use escaped [] instead of literals to prepare
+       future changes.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Initiate further development.
+       * NEWS: Create an empty section for new entries.
+       * gnulib: Update submodule to HEAD.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS: Version 2.4.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Prepare for next release.
+       * NEWS: Briefly mention changes since 2.3b.
+       * README: Say GNU m4 1.4.6, which we've been requiring in release
+       announcements already, not 1.4.3, which breaks the build.
+
+2008-11-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Say %language is experimental.
+       We're thinking of extending it's effect on output file naming.  See the
+       thread at
+       <http://lists.gnu.org/archive/html/bison-patches/2008-10/msg00003.html>.
+       * NEWS: Say it's experimental.
+       * doc/bison.texinfo (Decl Summary): Say it's experimental, and so don't
+       recommend it over %skeleton for now.
+       (Bison Options): Likewise.
+       (C++ Bison Interface): Use %skeleton not %language.
+       (Calc++ Parser): Use %skeleton not %language.
+       * src/getargs.c (usage): Say it's experimental.
+
+2008-11-01  Di-an Jan  <dianj@freeshell.org>
+           Paolo Bonzini  <bonzini@gnu.org>
+
+       Support all Java parser class modifiers.
+       * data/java.m4 (b4_percent_define_get3): New.
+       (b4_final_if, b4_strictfp_if): New.
+       * data/lalr1.java (final, strictfp, extends, implements): Support.
+       * doc/bison.texinfo (final, strictfp, extends, implements): Add
+       documentation.
+       * tests/java.at (AT_CHECK_JAVA_MINIMAL): New.
+       (AT_CHECK_JAVA_MINIMAL_W_LEXER): New.
+       (AT_CHECK_JAVA_GREP): New.
+       (Java parser class modifiers): New test.
+       (Java parser class extends and implements): New test.
+
+       Model exception propagation better with throws and lex_throws.
+       * data/java.m4 (b4_list2): New.
+       (throws): Change default.
+       * data/lalr1.java (yyaction): Add throws.
+       (parse): Add lex_throws in addition to throws.
+       * doc/bison.texinfo (throws, lex_throws): Add documentation.
+       * tests/java.at (Java throws specifications): New test.
+
+       Improve documentation for Java parsers.
+       * doc/bison.texinfo (Java Parsers): Add subsections.
+       Don't quote first argument of %define.
+       (Java Bison Interface): Document output files.  Move documentation
+       of parser class and merge into Java Parser Interface.  Document
+       features that error out.  Document directives with no effect.
+       Move note about Javadoc higher.
+       (Java Semantic Values): Explicitly mention stype.
+       Document that generic types cannot be used.
+       (Java Location Values): Use @deftypeivar.  Document constructors.
+       Correct return value for toString.
+       (Java Parser Interface): List undocumented constants/fields.
+       Move documentation of fields added by %parse-param closer to list
+       of members.  Document that token names are added as fields.
+       Document constructors accurately.  Remove error method.
+       (Java Scanner Interface): Move note on %pure-parser to Java Bison
+       Interface.  Describe %code lexer and yylex accutately.
+       Remove documentation that does not match the code.
+       (Java Action Features): New.
+       (Java Differences): Add reference.  Add item on semantic values.
+       Add note about @{ ... @}.  Clarify %% epilogue placement.
+       (Java Declarations Summary): New.
+
+       Fix Java skeleton.
+       * data/java.m4 (b4_prefix): Correct quoting for m4_define_default.
+       (b4_remove_comma): Quote test argument.
+       (b4_identification): Remove "bison" field.
+       * tests/java.at (Java parser class and package names): New test.
+       (Java %parse-param and %lex-param): New test.
+       (Java stype, position_class and location_class): New test.
+
+2008-10-31  Di-an Jan  <dianj@freeshell.org>
+
+       * data/lalr1.jave: Update copyright years.
+       (YYParser): Correct name of "generated from" file in Javadoc:
+       use b4_file_name instead of @ofile@.
+       (Location constructor): Correct Javadoc parameter name.
+       (yylloc): Add missing opening m4 quote after b4_location_if.
+       This removes a stray [ in the Javadoc of Lexer.getStartPos.
+       (Lexer.yyerror): Fix incorrect m4 and Javadoc.
+       (YYParser constructor): Correct Javadoc parameter name.
+
+2008-10-30  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Always put auxiliary code files in the same dir as other output files.
+       * src/files.c (compute_file_name_parts): When the user specifies
+       --output but not --file-prefix, extract the directory prefix from the
+       file prefix not from the grammar file name.  This affects the location
+       of files like location.hh generated by the C++ skeleton.  The includes
+       in the other output files require this fix.
+       * tests/output.at (AT_CHECK_OUTPUT): Automatically create directories
+       for expected output files.
+       (Output files): Add a test for the above.
+
+2008-10-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * gnulib: Update submodule to HEAD.
+
+2008-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update copyright year.
+       * src/files.c: Here.
+
+2008-10-28  Di-an Jan  <dianj@freeshell.org>  (tiny change)
+
+       Don't overwrite the input file.
+       * src/files.c (output_file_name_check): Fatal error if using input file
+       for output.
+       * tests/output.at: (AT_CHECK_CONFLICTING_OUTPUT): Add return status
+       argument.
+       (Conflicting output files): Add test.
+
+2008-10-28  Akim Demaille  <demaille@gostai.com>
+
+       Space changes.
+       * data/lalr1.cc: Formatting changes.
+
+2008-10-28  Akim Demaille  <demaille@gostai.com>
+
+       Don't define debugging functions when !YYDEBUG.
+       * data/lalr1.cc (debug_stream, set_debug_stream)
+       (debug_level_type, debug_level, set_debug_level): Don't
+       declare them when YYDEBUG is not defined.
+       The implementation are already YYDEBUG-aware.
+
+2008-10-28  Akim Demaille  <demaille@gostai.com>
+
+       Prefer "continue" for empty loop bodies.
+       * etc/bench.pl.in: Use "continue" instead of {}.
+
+2008-10-28  Akim Demaille  <demaille@gostai.com>
+
+       Space and comments changes.
+       * data/c++.m4, data/glr.c, data/lalr1.cc: Copyright year changes.
+       * data/c.m4, data/lalr1.cc: Space changes.
+
+2008-10-28  Akim Demaille  <demaille@gostai.com>
+
+       Make gnulib a submodule.
+       * gnulib: New.
+       * .gitmodules (gnulib): New.
+
+2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix yyerror_range for user-defined location type in C++.  Reported by
+       Georg Sauthoff at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-08/msg00008.html>.
+       * data/lalr1.cc (parse): Change type of yyerror_range to location_type.
+       * THANKS (Georg Sauthoff): Add.
+
+2008-10-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update several administrative files mainly to facilitate releasing.
+       * HACKING (Administrivia): Make the git-merge-changelog notes more
+       helpful.
+       (Test suite): Don't say lalr1.cc is not exercised in the test suite.
+       (Release Procedure): Update for git and add numerous details that were
+       previously missing.
+       * Makefile.am (EXTRA_DIST): Remove Makefile.cfg and Makefile.maint.
+       * maint.mk (announcement): Don't list bison as a bootstrap tool so
+       that announcements don't claim we bootstrapped with whatever bison
+       happened to be in PATH.  Add flex as a bootstrap tool.
+       * Makefile.maint: Remove, previously replaced by maint.mk.
+       * Makefile.cfg: Remove, and migrate settings to...
+       * cfg.mk: ... here for the sake of `make announcement'.
+       * bootstrap.conf (gnulib_modules): Add announce-gen.
+       * README: Say GNU Bison instead of just Bison.  Suggested by Karl
+       Berry.
+
+2008-10-08  Di-an Jan  <dianj@freeshell.org>  (tiny change)
+
+       Small but important bugfixes for the Java skeleton.
+       * data/lalr1.java (yyerror): Change Location to b4_location_type.
+       (yy_symbol_print): Call toString on yyvaluep.
+
+2008-08-29  Akim Demaille  <demaille@gostai.com>
+
+       Clarify UPDATED use.
+        * doc/bison.texinfo: It refers to the last edition of this file,
+       not to the release date of Bison.
+        Reported by Joel E. Denny.
+
+2008-08-29  Akim Demaille  <demaille@gostai.com>
+
+       * README: Update FAQ pointer.
+       Reported by Joel E. Denny.
+
+2008-08-27  Eric Blake  <ebb9@byu.net>
+
+       Resync m4sugar from autoconf.
+       * data/m4sugar/m4sugar.m4 (m4_defn, m4_popdef, m4_undefine)
+       (m4_init): Adjust to latest m4.git changes.
+       (m4_mapall_sep, _m4_list_cmp, m4_version_compare): Reduce side
+       effects.
+       * data/m4sugar/foreach.m4 (_m4_shiftn): Fix off-by-one bug.
+       (_m4_list_cmp): Reduce side effects.
+
+2008-08-27  Akim Demaille  <demaille@gostai.com>
+
+       Check yyerrok in calc.at.
+        * tests/calc.at (calc.y): Use yyerrok on "( error )".
+        (AT_CHECK_CALC): Add a check that ensures that yyerrok works as
+        expected.
+
+2008-08-27  Akim Demaille  <demaille@gostai.com>
+
+       Support yyerrok in lalr1.cc.
+       YYBACKUP is still to import back into lalr1.cc.
+        * data/lalr1.cc (yyerrork, yyclearin, YYRECOVERING): Define.
+
+2008-08-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For maintainer-check*, don't recompile for a $(VERSION) update.
+       * cfg.mk: New file.
+       (_is-dist-target): Override the one in GNUmakefile.
+       * Makefile.am (EXTRA_DIST): Add cfg.mk.
+
+2008-08-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update for recent change to gnulib.
+       * src/parse-gram.y: Don't include strverscmp.h.  It comes from
+       string.h now.
+
+2008-08-15  Eric Blake  <ebb9@byu.net>
+
+       Remaining m4sugar merge from autoconf.
+       * data/m4sugar/m4sugar.m4: Copy entire file from autoconf.
+       * data/m4sugar/foreach.m4: New file, copied from autoconf.
+       * data/Makefile.am (dist_m4sugar_DATA): Distribute it.
+       * src/output.c (output_skeleton): Tell m4 how to find it.
+
+       Partial m4sugar merge from autoconf: m4_map.
+       * data/m4sugar/m4sugar.m4 (m4_fst): Delete.
+       (m4_map, m4_map_sep, _m4_map): Rewrite more efficiently.
+       (m4_apply, _m4_apply, m4_mapall, m4_mapall_sep): New macros.
+       * data/java.m4 (b4_token_enums): Use more efficient short-circuit
+       for empty list.
+       * data/c.m4 (b4_token_defines, b4_token_enums, b4_c_ansi_formals):
+       Likewise.
+       (b4_parse_param_for): Avoid m4_fst, now that autoconf no longer
+       declares it.
+
+2008-08-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Keep .version and PACKAGE_VERSION in sync.
+       * Makefile.am ($(top_srcdir)/.version): Declare configure as a
+       dependency, and add comments justifying this in more detail.  Discussed
+       starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2008-07/msg00022.html>.
+
+2008-08-06  Eric Blake  <ebb9@byu.net>
+
+       Partial m4sugar merge from autoconf: m4_shiftn.
+       * data/m4sugar/m4sugar.m4 (m4_shiftn): Faster implementation.
+       (m4_shift2, m4_shift3): New macros.
+       (m4_case, m4_bmatch, m4_bpatsubsts, m4_join): Adjust clients.
+       * data/c.m4 (b4_c_function_def, b4_c_ansi_function_def)
+       (b4_c_ansi_function_decl, b4_c_function_call): Likewise.
+       * data/java.m4 (b4_remove_comma): Likewise.
+
+       Partial m4sugar merge from autoconf: m4_wrap vs. m4 1.6.
+       * data/m4sugar/m4sugar.m4 (m4_unquote, m4_wrap_lifo): New macros.
+       (m4_wrap): Guarantee FIFO order, in spite of m4 1.6.
+       (m4_init): Consolidate wrapped text into single m4_wrap.
+       * data/bison.m4 (b4_check_user_names_wrap): Stick with LIFO order
+       in wrapped text.
+
+2008-08-05  Eric Blake  <ebb9@byu.net>
+
+       Partial m4sugar merge from autoconf: builtins, version.m4.
+       * data/m4sugar/m4sugar.m4 (changeword): Nuke.
+       (m4_prepend): Remove, as it is unused and inherently quadratic,
+       whereas m4_append is linear in newer m4.
+       (m4_mkstemp): New builtin.
+       (m4_symbols): Make rename conditional.
+       (m4_version_prereq): Ensure fatal error if used in bison, which
+       intentionally lacks version.m4.
+
+       Fix comments in m4sugar.
+       * data/m4sugar/m4sugar.m4: Comment changes, borrowed from autoconf.
+
+2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update for recent .gitignore fix in Gnulib.
+       * bootstrap: Back out 2008-07-18 hack now that gnulib-tool creates
+       anchored .gitignore entries.
+
+2008-08-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Set gnu or gnits strictness.
+       * configure.ac (AM_INIT_AUTOMAKE): Set gnu strictness during
+       development and gnits strictness for releases.  Based on Eric Blake's
+       suggestion at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00019.html>.
+
+2008-07-31  Paolo Bonzini  <bonzini@gnu.org>
+
+       * NEWS: Clarify documentation of %language.
+
+2008-07-31  Paolo Bonzini  <bonzini@gnu.org>
+
+       Support usage of git-merge-changelog.
+       * .gitattributes: New.
+       * HACKING: Document usage of git-merge-changelog.
+       * bootstrap: Install git-merge-changelog entries in .git/config
+       if appropriate.
+
+2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Remove remaining dependence on CVS Id keyword.
+       * ChangeLog: For the sake of people still using CVS, don't use dollars
+       when mentioning Id.
+       * data/xslt/bison.xsl: Remove Id from header comments, where it was
+       unusual anyway.
+       * data/xslt/xml2dot.xsl: Likewise.
+       * data/xslt/xml2text.xsl: Likewise.
+       * data/xslt/xml2xhtml.xsl: Likewise.
+       * doc/Doxyfile.in (PROJECT_NUMBER): Don't use ID.
+       * doc/Makefile.am (neutralize): Remove, no longer needed.
+       (.x.1): Don't use neutralize.
+       (edit): Don't substitute for ID.
+       (Doxyfile): Don't define Id, and thus don't depend on ChangeLog.
+
+2008-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix dependence on computed configure variables.
+       * doc/Makefile.am (common_dep): Depend on $(top_srcdir)/configure not
+       $(top_srcdir)/configure.ac so that changes to computed variables, such
+       as PACKAGE_VERSION, are seen.
+       * tests/Makefile.am ($(srcdir)/package.m4): Likewise.
+
+2008-07-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update copyright dates for recent changes.
+       * Makefile.am: Here.
+       * src/Makefile.am: Here.
+       * src/reduce.c: Here.
+       * tests/reduce.at: Here.
+
+2008-07-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use git-version-gen for version names between releases.
+       * .cvsignore (.tarball-version, GNUmakefile, *~): Add.
+       * .gitignore (/.tarball-version, /GNUmakefile, /*~): Add.
+       * .prev-version: New.
+       * .version.in: Remove.
+       * ChangeLog: Remove the Id previously used for capturing the CVS
+       revision.
+       * GNUmakefile: Remove, now copied from Gnulib.
+       * Makefile.am: Add code suggested by comments in
+       build-aux/git-version-gen.
+       (EXTRA_DIST): Remove GNUmakefile, handled by Gnulib.  Add maint.mk,
+       .prev-version, and .version.
+       * NEWS (2.3b+): Rename to...
+       (?.?): ... this because we're dropping the "+" version naming scheme,
+       but, in general, we still can't be sure of our next release name.
+       * bootstrap: Add a quick hack to remove from .gitignore the
+       GNUmakefile entry that gnulib adds.  We already have a /GNUmakefile
+       entry.  This should really be fixed in gnulib instead.
+       * bootstrap.conf (gnulib_modules): Add gnumakefile.
+       * configure.ac (AC_INIT): Set version name by invoking
+       build-aux/git-version-gen.
+       (AC_CONFIG_FILES): Remove .version, now generated by
+       build-aux/git-version-gen.
+       * maint.mk: New, copied from coreutils.
+       * doc/.cvsignore (bison.1): Add.
+       * doc/.gitignore (/bison.1): Add.
+       * doc/bison.1: Remove, generated.
+       * src/.cvsignore (revision.c): Remove.
+       * src/.gitignore (/revision.c): Remove.
+       * src/Makefile.am (bison_SOURCES): Remove revision.c and revision.h.
+       (BUILT_SOURCES): Remove revision.c.
+       (revision.c): Remove.
+       * src/getargs.c (version): Don't print revision after the VERSION.
+       * src/revision.h: Remove.
+
+2008-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix untranslatable composition of sentences.  Reported by Goran
+       Uddeborg at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-06/msg00000.html>.
+       * THANKS (Goran Uddeborg): Add.
+       * src/reduce.c (reduce_print): Report the number of nonterminals and
+       rules useless in the grammar in separate sentences.
+       * tests/reduce.at (Useless Rules): Update output.
+       (Reduced Automaton): Likewise.
+       (Underivable Rules): Likewise.
+       (Empty Language): Likewise.
+
+2008-07-15  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix some .gitignore and .cvsignore problems.
+       * bootstrap (insert_sorted_if_absent): Replace all uses with...
+       (insert_vc_ignore): ... this new function, which prepends `/' to all
+       .gitignore entries before passing them to insert_sorted_if_absent.
+       * bootstrap.conf (vc_ignore): Set to '.cvsignore .gitignore' so that
+       .cvsignore files are maintained even though Bison developers run
+       bootstrap while using Git.
+       * .cvsignore (*.patch *.log log patches applied): Remove, apparently
+       unneeded by Bison.
+       (gnulib): Add.
+       * .gitignore (/*.patch *.log log patches applied): Remove, broken and
+       unneeded.  Reported by Eric Blake.
+       * lib/.gitignore (/*~): Add.
+       * po/.cvsignore, runtime-po/.cvsignore: Sync with .gitignore.
+       * examples/calc++/.gitignore (/calc++.exe): Add.  Reported by Eric
+       Blake.
+       * src/.gitignore (/bison.exe): Add.  Reported by Eric Blake.
+
+2008-07-15  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Improve forward-compatibility with GNU M4.  Reported by Eric Blake at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-07/msg00000.html>.
+       * bootstrap.conf (gnulib_modules): Add unsetenv.
+       * lib/.gitignore, lib/.cvsignore (/unsetenv.c): Add.
+       * m4/.gitignore, m4/.cvsignore (/environ.m4): Add.
+       (/setenv.m4): Add.
+       * src/output.c (output_skeleton): For the m4 invocation, pass -dV as
+       the first argument because it may become position-dependent, and unset
+       POSIXLY_CORRECT so Bison's skeletons have access to GNU M4 extensions.
+       Add comments explaining these issues in more detail.
+
+2008-07-14  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add .gitignore everywhere based on .cvsignore.
+       * .gitignore: New.
+       * build-aux/.gitignore: New.
+       * data/.gitignore: New.
+       * doc/.gitignore: New.
+       * etc/.gitignore: New.
+       * examples/.gitignore: New.
+       * examples/calc++/.gitignore: New.
+       * lib/.gitignore: New.
+       * m4/.gitignore: New.
+       * po/.gitignore: New.
+       * runtime-po/.gitignore: New.
+       * src/.gitignore: New.
+       * tests/.gitignore: New.
+
+2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3b+): New section, empty for now.
+       * configure.ac (AC_INIT): 2.3b -> 2.3b+.
+
+2008-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3b): Update release date since there has been a delay in
+       getting the announcements and tarballs out.
+
+2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS: Version 2.3b.
+       * configure.ac (AC_INIT): Likewise.
+       (PACKAGE_COPYRIGHT_YEAR): Update to 2008.
+
+2008-05-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * HACKING: Don't say don't mention HACKING in the ChangeLog.  We've
+       been doing it for years.
+       (Test suite): Mention maintainer-push-check and maintainer-xml-check.
+       (Release Procedure): Add FIXME about make alpha being unmaintained.
+
+2008-05-13  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/yacc.c: Reformat m4 a little for readability.
+       * src/lalr.c (build_relations): Correct comment.
+
+2008-05-12  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP specific issue.
+       * djgpp/config.sed: Fixes required to run configure scripts generated
+       by autoconf 2.62.
+
+2008-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * HACKING (Release Procedure): translation@iro.umontreal.ca is now
+       coordinator@translationproject.org.
+
+2008-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * THANKS: Add Eric Blake.
+
+2008-04-23  Eric Blake  <ebb9@byu.net>
+
+       Revert prior patch, by working around autoconf regression.
+       * tests/output.at (m4_expand): Add workaround for autoconf 2.62.
+       ("Output file name: ("): Uncomment test.
+       ("Output file name: )"): Likewise.
+       Based on an idea from Noah Misch.
+
+2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Work-around an Autoconf 2.62 AT_SETUP bug that was not present in
+       2.61.  Reported by Juan Manuel Guerrero at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-04/msg00011.html>.
+       * tests/output.at ("Output file name: ("): Comment out test case for
+       now.
+       ("Output file name: )"): Likewise.
+
+2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * GNUmakefile: Update git-version-gen invocation so make dist
+       succeeds.
+
+2008-04-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Update to the current gnulib CVS repository, and fix trigraph handling
+       in Bison.
+       * bootstrap: Update gnulib CVS repository URL.
+       (symlink_to_dir): Encapsulate the code that guarantees the destination
+       directory exists into...
+       (check_dst_dir): ... this new function, and...
+       (cp_mark_as_generated): ... reuse it here so that bootstrap doesn't
+       fail when copying files into lib/uniwidth/.
+       * src/output.c (prepare_symbols): When writing yytname muscles, where
+       symbol names will be encoded in C-string literals, tell quotearg to
+       escape trigraphs.  This used to be the default in gnulib.
+       * tests/regression.at (Token definitions): Because of the change in
+       gnulib's quotearg behavior, string_as_id in parse-gram.y no longer
+       escapes trigraphs in symbol names.  Thus, yytname no longer has
+       trigraphs unnecessarily doubly escaped.  Update test case output.
+       Extend test case to be sure Bison's own error messages will no longer
+       have trigraphs in symbol names unnecessarily escaped once.
+
+2008-04-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix make dist infinite loop reported by Juan Manuel Guerrero at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00009.html>.
+       * .cvsignore: Add .version.
+       * .version.in: New.
+       * bootstrap.conf (gnulib_modules): Add git-version-gen.
+       * configure.ac (AC_CONFIG_FILES): Add .version.
+       * build-aux/.cvsignore: Add git-version-gen.
+
+2008-03-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3a+): Mention that -g now takes an argument.
+       * doc/bison.texinfo (Bison Options): Reword -W entry a little for
+       consistency.  Update the -g and -x entries now that they take
+       arguments.  Use brackets to indicate optional arguments.
+       * src/getargs.c (usage): Explain the relationship between arguments of
+       long and short options more completely.  Document --defines and -d
+       separately since the former takes an argument but, for POSIX Yacc, the
+       latter does not.
+       (short_options): Let -W take an optional argument like --warnings.
+       (getargs): Sort cases.
+
+2008-02-28  Akim Demaille  <demaille@gostai.com>
+
+       * doc/bison.texinfo: Fix a few typos.
+
+2008-02-28  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo (Bison Options): Document -W.
+       Based on Joel E. Denny's NEWS entry, and Automake's documentation.
+
+2008-02-28  Akim Demaille  <akim@epita.fr>
+
+       * src/getargs.c (short_options): Split and sort for readability.
+       -g and -x take optional arguments, just like their long options.
+       * build-aux/cross-options.pl: Use /x to make the regexp easier to
+       understand.
+       Fix the handling of $opt which resulted in all the argument to be
+       considered as optional.
+
+2008-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3a+): Don't say %language is experimental.  Mention Java and
+       say its interface is experimental.
+       * doc/bison.texinfo (Decl Summary): In the %language entry, mention
+       Java.
+       (Bison Options): In the -L and --language entry, mention Java.
+       (Java Bison Interface): Say the interface is experimental.
+       * src/getargs.c (usage): Mention -L and --language.
+
+       * NEWS (2.3a+): Say the push parsing interface is experimental.
+       * doc/bison.texinfo (Push Decl): Likewise.
+       (Decl Summary): Likewise in the "%define api.push_pull" entry.
+       (Push Parser Function): Likewise.
+       (Pull Parser Function): Likewise.
+       (Parser Create Function): Likewise.
+       (Parser Delete Function): Likewise.
+       (Table of Symbols): Likewise in the yypstate_delete, yypstate_new,
+       yypull_parse, and yypush_parse entries.
+
+       * NEWS (2.3a+): Mention XML support, and say the schema is
+       experimental.
+       * doc/bison.texinfo (Bison Options): Mention -x and --xml.
+       * src/getargs.c (usage): Say the XML schema is experimental.
+
+       * NEWS (2.3a+): Say option instead of flag.
+
+2008-02-21  Wojciech Polak  <polak@gnu.org>
+
+       * data/xslt/xml2xhtml.xsl (xsl:template match="/"): Change footer
+       text.
+
+2008-02-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix impure push parser compile error reported by Bob Rossi at
+       <http://lists.gnu.org/archive/html/help-bison/2008-02/msg00023.html>.
+       * data/yacc.c: Clean up whitespace in the output a little.
+       (yypstate_allocated): Define for impure push parsers regardless of
+       whether the pull interface is also requested.
+       * tests/push.at (Push Parsing: Multiple impure instances): Extend to
+       check impure push parsers without the pull interface.
+
+       * data/yacc.c (yypstate_new): Don't try to invoke yyerror since
+       yyerror takes arguments specified by %parse-param while yypstate_new
+       does not.
+       * doc/bison.texinfo (Parser Create Function): Document that
+       yypstate_new returns 0 for multiple impure parser instances.
+       * tests/push.at (Push Parsing: Multiple impure instances): Update
+       expected stderr output.
+
+2008-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * runtime-po/POTFILES.in (push.c): Remove.
+
+2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/Makefile.am (dist_pkgdata_DATA): Remove push.c.
+       * data/push.c: Rename to...
+       * data/yacc.c: ... this, overwriting it.
+       * etc/bench.pl.in (bench_grammar): `%pure-parser'-> `%define api.pure'.
+       `%push-pull-parser' -> `%define api.push_pull "both"'.
+       Remove old yacc.c tests, and update push.c tests to yacc.c.
+
+2008-02-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/bison.m4 (b4_percent_code_get): Output %code block comments like
+       `"%code top" blocks' instead of `%code "top" blocks'.
+       * data/push.c: Import yacc.c changes from 2008-01-09 and 2007-08-03.
+       Clean up whitespace in the output a little.
+
+2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix documentation problems reported by Tim Josling at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00013.html>.
+       * NEWS (2.3a+): Mention removal of --no-parser, -n, and %no-parser.
+       * doc/bison.texinfo (Token Decl): Token numbers are *nonnegative*
+       integers.  Explain the effect of literal string aliases on error
+       messages.  Copy token 0 documentation from the C++ skeleton
+       documentation.
+
+2008-02-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Accept a token number in a %left, %right, or %nonassoc for POSIX
+       conformance.  Reported by Tim Josling at
+       <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>.
+       * NEWS (2.3a+): Mention.
+       * doc/bison.texinfo (Precedence Decl): Describe how literal strings
+       and code numbers are treated by precedence declarations.
+       * src/parse-gram.y (precedence_declaration): Use symbols.prec instead
+       of symbols.1.
+       (symbols.prec): New, just like symbols.1 but uses symbol.prec instead
+       of symbol.
+       (symbol.prec): New, just like symbol but allows INT.
+       * src/symtab.c (symbol_user_token_number_set): Remove an aver that no
+       longer holds.
+       * tests/regression.at (Token number in precedence declaration): New
+       test case.
+
+2008-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP specific issues.
+       * djgpp/config.bat: Add filenames that are not 8.3 clean and that must
+       be changed.  Copyright timestamp adjusted.
+       * djgpp/config.sed: Add filenames that are not 8.3 clean and that must
+       be changed.  Copyright timestamp adjusted.
+       * djgpp/config.site: Copyright timestamp adjusted.
+       * djgpp/config_h.sed: Copyright timestamp adjusted.
+       * djgpp/djunpack.bat: Copyright timestamp adjusted.
+       * djgpp/fnchnage.lst: Add filenames that are not 8.3 clean to the
+       filename translation list.
+       * djgpp/subpipe.c (init_subpipe): Check the environment variables
+       TMPDIR, TMP and TEMP, in that order, to determinate where the temp
+       files shall be created.  Before trying to use the temp dir where the
+       environment variable points to check that the dir really exists. If
+       not default to the cwd as temp dir.  Copyright timestamp adjusted.
+       * djgpp/subpipe.h: Copyright timestamp adjusted.
+       * djgpp/testsuite.sed: Copyright timestamp adjusted.
+
+2008-01-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/bison.texinfo: Update Back-Cover text to reflect new GNU wording.
+
+2008-01-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * data/yacc.c (yyparse): Correct the comment when locations aren't used.
+       Problem reported by Claudio Saavedra in
+       <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.
+
+2008-01-05  Wojciech Polak  <polak@gnu.org>
+
+       * data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
+       document's title with the input grammar file name.
+
+2007-12-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Automate regression testing of the XML/XSLT implementation.  Discussed
+       starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
+       * configure.ac (XSLTPROC): New substitution.
+       * Makefile.am (maintainer-xml-check): New phony target invoking...
+       * tests/Makefile.am (maintainer-xml-check): ... this new phony target
+       invoking make maintainer-check with BISON_TEST_XML=1.
+       * tests/atlocal.in (XSLTPROC): New.
+       * tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
+       not to report reachable memory when Bison is expected to have a
+       non-zero exit status and (2) to compare XML/XSLT output with --graph
+       and --report=all output for every working grammar when
+       BISON_TEST_XML=1.
+       (AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
+       (AT_BISON_CHECK_XML): New.
+       (AT_QUELL_VALGRIND): New.
+       * tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
+       (AT_CHECK): ... don't redefine this since this was the old way to
+       quell Valgrind.
+       * tests/actions.at: Rewrite all AT_CHECK invocations for bison as
+       AT_BISON_CHECK invocations.
+       * tests/c++.at: Likewise.
+       * tests/calc.at: Likewise.
+       * tests/conflicts.at: Likewise.
+       * tests/cxx-type.at: Likewise.
+       * tests/existing.at: Likewise.
+       * tests/glr-regression.at: Likewise.
+       * tests/headers.at: Likewise.
+       * tests/input.at: Likewise.
+       * tests/java.at: Likewise.
+       * tests/output.at: Likewise.
+       * tests/push.at: Likewise.
+       * tests/reduce.at: Likewise.
+       * tests/regression.at: Likewise.
+       * tests/sets.at: Likewise.
+       * tests/skeletons.at: Likewise.
+       * tests/synclines.at: Likewise.
+       * tests/torture.at: Likewise.
+       (Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
+       tends to hang xsltproc.
+       (Big horizontal): Likewise.
+
+2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In XML output, remove redundant class attribute on symbol element.
+       * data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
+       * data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
+       look up a symbol to determine whether it's a nonterminal or terminal.
+       * src/gram.c (rule_rhs_print_xml): Remove class attribute.
+       * src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.
+
+       Add prec/assoc information to XML output.
+       * src/gram.c (grammar_rules_print_xml): For each rule that has a
+       %prec, add a percent_prec attribute.
+       * src/print-xml.c (print_grammar): For each terminal that has a
+       precedence or associativity, add a prec or assoc attribute.
+       (xml_indent): New.
+       (xml_puts): Use xml_indent.
+       (xml_printf): Use xml_indent.
+       * src/print-xml.h (xml_indent): Prototype.
+
+       * tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
+       <http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.
+
+2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/xslt/bison.xsl (bison:ruleNumber): Rename to...
+       (bison:ruleByNumber): ... this for clarity.
+       * data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
+       * data/xslt/xml2text.xsl (xsl:template match="item"): Update.
+       (xsl:template match="reduction"): Update.
+       (xsl:template match="item"): Update.
+       (xsl:template match="reduction"): Update.
+
+       In the XML output, don't print the list of rules where symbols appear.
+       Compute it in XSLT instead.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
+       * data/xslt/bison.xsl (bison:ruleByLhs): New.
+       (bison:ruleByRhs): New.
+       * data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
+       bison:ruleByRhs.
+       (xsl:template match="terminal/rule"): Remove.
+       (xsl:template match="nonterminal"): Use bison:ruleByLhs and
+       bison:ruleByRhs.
+       (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+       Remove.
+       * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
+       bison:ruleByRhs and mode="number-link" for rule template.
+       (xsl:template match="terminal/rule"): Remove.
+       (xsl:template match="nonterminal"): Use bison:ruleByLhs and
+       bison:ruleByRhs and mode="number-link" for rule template.
+       (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+       Rewrite as...
+       (xsl:template match="rule" mode="number-link"): ... this.
+       * src/print-xml.c (print_grammar): Don't print the list of rules.
+
+2007-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't let --report affect XML output; always print all information.
+       Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
+       * src/conflicts.c (log_resolution): Implement.
+       * src/print-xml.c (print_core): Implement.
+       (print_state): Implement.
+       (print_xml): Implement.
+
+       * NEWS (2.3a+): Fix quotes.
+       * src/parse-gram.y (prologue_declaration): For consistency with -v,
+       don't let %verbose clear the list specified by --report.
+
+2007-11-26  Akim Demaille  <akim@epita.fr>
+
+       * data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.
+
+2007-11-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In the XML output, list useless and unused symbols and rules with the
+       useful ones and add a "usefulness" attribute.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
+       * src/gram.c (grammar_rules_partial_print_xml): Remove.
+       (grammar_rules_print_xml): Print all rules instead of just those
+       useful in the grammar, and add a "usefulness" attribute.
+       * src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
+       * src/print-xml.c (print_rules_useless_in_parser): Remove.
+       (print_grammar): Print all nonterminals instead of just useful ones,
+       and add a "usefulness" attribute to nonterminals and terminals.
+       (print_xml): Don't print a separate "reductions" or
+       "rules-useless-in-parser" element.
+       * src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
+       (reduce_xml): Remove.
+       (reduce_token_unused_in_grammar): New.
+       (reduce_nonterminal_useless_in_grammar): New.
+       * src/reduce.h (reduce_xml): Remove prototype.
+       (reduce_token_unused_in_grammar): Add prototype.
+       (reduce_nonterminal_useless_in_grammar): Add prototype.
+       * data/xslt/xml2text.xsl: Update for XML changes.
+       * data/xslt/xml2xhtml.xsl: Update for XML changes.
+       * tests/reduce.at (Useless Terminals): Update output.
+       (Useless Rules): Update output.
+       (Reduced Automaton): Update output.
+
+       Say "Terminals unused in grammar" instead of "Unused terminals".
+       * NEWS (2.3a+): Update.
+       * doc/bison.texinfo (Understanding): Update example output.
+       * src/reduce.c (reduce_output): Implement.
+       * data/xslt/xml2text.xsl: Implement.
+       * data/xslt/xml2xhtml.xsl: Implement.
+
+2007-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Accept --report-file=FILE to override the default `.output' filename.
+       * NEWS (2.3a+): Mention.
+       * doc/bison.texinfo (Bison Options): Add an entry.
+       * src/files.c (compute_output_file_names): Don't override
+       spec_verbose_file if already set.
+       * src/getargs.c (usage): Document --report-file.
+       (REPORT_FILE_OPTION): New anonymous enum member.
+       (long_options): Add entry for it.
+       (getargs): Add case for it setting spec_verbose_file.
+
+       * build-aux/cross-options.pl: Don't record a short option just because
+       there's an arg.
+       * doc/.cvsignore: Add yacc.1.
+
+2007-11-14  Akim Demaille  <akim@epita.fr>
+
+       * doc/yacc.1.in: New.
+       * configure.ac, doc/Makefile.am: Adjust.
+       * configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
+       config.h symbol.
+       Use AC_SUBST for assignments too.
+       * src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.
+
+2007-11-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/gram.c: Remove comments that duplicate comments in gram.h.
+
+       When reporting useless rules and nonterminals, say "useless in grammar"
+       instead of "useless", and say "useless in parser" instead of "never
+       reduced".  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
+       * NEWS (2.3a+): Mention this change.
+       * data/xslt/xml2text.xsl: Update output text and expected input XML
+       element names to match changes below.
+       * data/xslt/xml2xhtml.xsl: Likewise.
+       (xsl:template match="bison-xml-report"): Add missing entry in Table of
+       Contents: "Rules useless in parser due to conflicts".
+       * doc/bison.texinfo (Decl Summary): Reword a little.
+       (Understanding): Update example output for changes below.
+       * src/gram.c: (rule_useful_p): Rename to...
+       (rule_useful_in_grammar_p): ... this.
+       (rule_useless_p): Rename to...
+       (rule_useless_in_grammar_p): ... this.
+       (rule_never_reduced_p): Rename to...
+       (rule_useless_in_parser_p): ... this.
+       (grammar_rules_print): Update for renames.
+       (grammar_rules_print_xml): Update for renames.
+       (grammar_rules_never_reduced_report): Rename to...
+       (grammar_rules_useless_report): ... this since it is used for either
+       kind of useless rule.
+       * src/gram.h: Reword comments and update function names in prototypes.
+       * src/main.c (main): Say "rule useless in parser due to conflicts".
+       * src/print-xml.c (print_rules_never_reduced): Rename to...
+       (print_rules_useless_in_parser): ... this, and rename output XML
+       element "rules-never-reduced" to "rules-useless-in-parser".
+       (print_xml): Update for rename.
+       * src/print.c (print_results): Say "Rules useless in parser due to
+       conflicts".
+       * src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
+       (nonterminals_reduce): Say "nonterminal useless in grammar".
+       (reduce_output): Say "Nonterminals useless in grammar".
+       Say "Rules useless in grammar".
+       (reduce_xml): Rename output XML element "useless" to
+       "useless-in-grammar".
+       (reduce_print): Don't report the count of grammatically useless rules
+       as "rules never reduced" just because %yacc is specified.
+       In the correct report of this count, say nonterminal(s) and rule(s)
+       "useless in grammar".
+       * tests/conflicts.at (S/R in initial): Update expected output.
+       (Defaulted Conflicted Reduction): Likewise.
+       (Unreachable States After Conflict Resolution): Likewise.
+       * tests/existing.at (GNU pic Grammar): Likewise.
+       * tests/reduce.at (Useless Nonterminals): Likewise.
+       (Useless Rules): Likewise.
+       (Reduced Automaton): Likewise.
+       (Underivable Rules): Likewise.
+       (Empty Language): Likewise.
+
+2007-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
+       here document and before the EOF so that BSD's implementation of Bourne
+       shell doesn't parse the delimiter as part of the here document.
+       * doc/.cvsignore: Add cross-options.texi.
+       * src/getargs.c (usage): Add a blank line after the warning categories.
+
+2007-11-08  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/lalr1.java (Lexer): Remove usage of b4_pure_if.
+
+2007-11-05  Akim Demaille  <akim@epita.fr>
+
+       Remove Id: from bison.1.
+       * doc/Makefile.am (remove_time_stamp): Include the sed invocation.
+       (perl -0777 -pi -e 's/\.PP\nId): New.
+       (.x.1): Use it to ignore the version control revision.
+
+2007-11-05  Akim Demaille  <demaille@gostai.com>
+
+       * build-aux/Makefile.am: Ship cross-options.pl.
+       * doc/Makefile.am: Always refer to cross-options.texi with
+       $(srcdir).
+       (MAINTAINERCLEANFILES): Add it.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Generate the long/short option cross-table.
+       * build-aux/cross-options.pl: New.
+       * doc/Makefile.am (cross-options.texi): New.
+       * doc/bison.texinfo: Use it.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Generate bison.1 using help2man.
+       * doc/common.x, doc/bison.x: New.
+       * doc/Makefile.am (bison.1, .x.1): New.
+       The code is taken from autoconf-2.61/man/Makefile.am.
+       * configure.ac: Look for help2man.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Complete --help.
+       * src/getargs.c (usage): Document -W, make it clear that -d,
+       -g and -x have optional arguments.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+       Find sha1sum when named gsha1sum.
+       * bootstrap (find_tool): New.
+       ($SHA1SUM): New.
+
+2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Deprecate %pure-parser and add `%define api.pure'.  Discussed starting
+       at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
+       * NEWS (2.3a+): Mention.
+       * data/bison.m4 (b4_pure_if): Don't define it here.
+       * data/c.m4 (b4_identification): Depend on individual skeletons to
+       define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
+       values of the %define variables api.pure or api.push_pull.  Define
+       YYPURE, YYPUSH, and YYPULL accordingly.
+       * data/glr.c: Define b4_pure_if based on `%define api.pure' unless
+       glr.cc has already defined b4_pure_flag.
+       * data/push.c: Define b4_pure_if based on `%define api.pure'.
+       Remove YYPUSH and YYPULL since they're back in b4_identification again.
+       * data/yacc.c: Define b4_pure_if based on `%define api.pure'.
+       * doc/bison.texinfo (Pure Decl): Update.
+       (Push Decl): Update.
+       (Decl Summary): Add api.pure to %define entry.
+       In %pure-parser entry, say it's deprecated and reference %define.
+       (Pure Calling): Update.
+       (Error Reporting): Update.
+       (C++ Scanner Interface): Update.
+       (How Can I Reset the Parser): Update.
+       (Table of Symbols): In %pure-parser entry, say it's deprecated and
+       reference %define.
+       * src/getargs.c (pure_parser): Remove global variable.
+       * src/getargs.h (pure_parser): Remove extern.
+       * src/output.c (prepare): Don't define pure_flag muscle.
+       * src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
+       wrapper around `%define api.pure'.
+       * tests/calc.at (Simple LALR Calculator): Update.
+       (Simple GLR Calculator): Update.
+       * tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
+       Update.
+       (GLR: Resolve ambiguity, pure, locations): Update.
+       (GLR: Merge conflicting parses, pure, no locations): Update.
+       (GLR: Merge conflicting parses, pure, locations): Update.
+       * tests/glr-regression.at (Uninitialized location when reporting
+       ambiguity): Update
+       * tests/input.at (Unused %define api.pure): New test case.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
+       AT_PURE_IF and AT_PURE_AND_LOC_IF.
+       * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+
+2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       %define push_pull -> %define api.push_pull.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
+       * data/push.c: Expect the new name.
+       * data/yacc.c: Likewise.
+       * doc/bison.texinfo (Push Decl): Update.
+       (Decl Summary): Update %define entry.
+       (Push Parser Function): Update.
+       (Pull Parser Function): Update.
+       (Parser Create Function): Update.
+       (Parser Delete Function): Update.
+       * tests/calc.at (Simple LALR Calculator): Update.
+       * tests/input.at (%define enum variables): Update.
+       * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+       (Push Parsing: Multiple impure instances): Update.
+       (Push Parsing: Unsupported Skeletons): Update.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Update.
+       (Exploding the Stack Size with Malloc): Update.
+
+       * NEWS (2.3a+): Add an entry for the push parser, and clean up the
+       other entries some.
+
+2007-10-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       For the XML output's terminal element, rename @number to @token-number,
+       and add @symbol-number.  In the nonterminal element, rename @number to
+       @symbol-number.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
+       * data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for
+       renames.
+       (xsl:template match="nonterminal"): Likewise.
+       * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise.
+       (xsl:template match="nonterminal"): Likewise.
+       * src/print-xml.c (print_grammar): Implement.
+
+2007-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
+       2007-10-11 change, the child elements here are items not rules.
+       (xsl:template match="item"): New.
+       (xsl:template match="rule"): Update for new reduced itemset.
+       (xsl:template match="point"): Remove.
+       (xsl:template match="empty"): For consistency with --graph, don't
+       output "/* empty */".
+       * data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
+       line-wrap, don't pass a negative value as first-line-length since this
+       won't work with the following changes.
+       (xsl:template name="line-wrap"): Simplify slightly.
+       (xsl:template name="ws-search"): Eliminate recursion.
+       * src/print_graph.c (print_core): Don't print a reduction's lookahead
+       set next to an item whose dot is not at the end of the RHS even if it
+       happens to be associated with the same rule.
+
+2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add %define lr.keep_unreachable_states.
+       * NEWS (2.3a+): Mention it in the entry for unreachable state removal.
+       * doc/bison.texinfo (Decl Summary): Mention it in the %define entry.
+       * src/main.c (main): Implement it.
+       * tests/conflicts.at (Unreachable States After Conflict Resolution):
+       Extend to test it, and fix a typo.
+
+2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3a+): Add entry for recent .output file lookahead set fix.
+       * doc/bison.texinfo (Understanding): Remove a bogus lookahead set in
+       the example .output text.
+       * tests/regression.at (Extra lookahead sets in report): Improve wording
+       of comments.
+
+2007-10-17  Wojciech Polak  <polak@gnu.org>
+
+       * src/print-xml.c (print_grammar): Renamed
+       <terminal> and <nonterminal> attributes:
+       "type" to "number" and "symbol" to "name".
+       * data/xslt/xml2text.xsl (xsl:template match="terminal"):
+       Use new attribute names.
+       (xsl:template match="nonterminal"): Likewise.
+       * data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
+       (Option Cross Key): Likewise.
+
+       * src/print-xml.c (print_core): Don't print a reduction's lookahead set
+       next to an item whose dot is not at the end of the RHS even if it
+       happens to be associated with the same rule.
+       * src/print.c (print_core): Likewise.
+       * tests/conflicts.at (Unresolved SR Conflicts): Update output.
+       (Resolved SR Conflicts): Update output.
+       * tests/regression.at (Extra lookahead sets in report): New test case.
+
+2007-10-11  Wojciech Polak  <polak@gnu.org>
+
+       * src/print-xml.c (print_core): Remove item set
+       redundancy.
+       * data/xslt/bison.xsl (bison:ruleNumber): New key.
+       Improve processing time. Suggested by Joel E. Denny.
+       * data/xslt/xml2dot.xsl (xsl:template name="escape"):
+       Write xsl:param "required" attribute as comment.
+       * data/xslt/xml2text.xsl (xsl:template match="item"): New.
+       (xsl:template match="rule"): Support new reduced itemset.
+       (xsl:template match="point"): Remove.
+       * data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/getargs.c (version): Update copyright year.
+
+2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Make xml2dot.xsl and --graph produce the same output.
+       * data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a `&#10;'
+       instead of a `\n'.  That is, don't add escapes yet or they'll be doubly
+       escaped later.
+       (xsl:template name="output-node"): Use the new escape template instead
+       of the string-replace template directly.
+       (xsl:template name="output-edge"): Likewise.
+       (xsl:template name="escape"): New, escapes backslashes and newlines in
+       addition to quotation marks.
+       * src/graphviz.c (start_graph, output_node, output_edge): Add
+       whitespace to output for legibility.
+
+       Make xml2text.xsl and --report produce the same output, and remove the
+       XML "conflicts" element since a conflict summary is easily extracted
+       from the automaton.
+       * data/xslt/bison.xsl: New.
+       (xsl:template match="state" mode="bison:count-conflicts): New.
+       * data/xslt/xml2text.xsl: Import bison.xsl.
+       (xsl:template match="bison-xml-report"): Instead of styling the
+       "conflicts" element, style the "automaton" element with mode
+       "conflicts".  Unlike the former, the latter lists S/R and R/R
+       conflicts for a state on the same line.
+       (xsl:template match="conflicts"): Remove.
+       (xsl:template match="conflict"): Remove.
+       (xsl:template match="terminal"): Line-wrap the list of rules in which
+       the terminal is used.
+       (xsl:template match="nonterminal"): Likewise for nonterminals.
+       (xsl:template match="automaton" mode="conflicts"): New.
+       (xsl:template match="state" mode="conflicts"): New.
+       (xsl:template name="line-wrap"): New.
+       (xsl:template name="ws-search"): New.
+       * data/xslt/xml2xhtml.xsl: Import bison.xsl.
+       (xsl:template match="bison-xml-report"): Instead of styling the
+       "conflicts" element, style the "automaton" element with mode
+       "conflicts."
+       (xsl:template match="conflicts"): Remove.
+       (xsl:template match="conflict"): Remove.
+       (xsl:template match="automaton" mode="conflicts"): New.
+       (xsl:template match="state" mode="conflicts): New.
+       * src/conflicts.c (conflicts_output_xml): Remove.
+       * src/conflicts.h (conflicts_output_xml): Remove prototype.
+       * src/print-xml.c (print_xml): Don't invoke conflicts_output_xml.
+       * src/print.c (print_grammar): Consistently wrap at the 66th column so
+       the corresponding XSLT is easier.  Also, never wrap between a word and
+       the comma that follows it.
+
+2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Improve C++ namespace support.  Discussed starting at
+       <http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
+       * data/c++.m4: (b4_namespace_ref, b4_namespace_open,
+       b4_namespace_close): New macros that interpret the %define variable
+       "namespace" so its value can contain "::" to indicate nested
+       namespaces.
+       * data/glr.cc (b4_namespace): Don't define, and replace all uses with
+       the above macros.
+       * data/lalr1.cc (b4_namespace): Likewise.
+       * data/location.cc (b4_namespace): Likewise.
+       * doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry
+       inside a new table in the general %define entry.  Document `%define
+       namespace' there as well.  Point the %name-prefix entry to it since it
+       explains it more completely in the case of C++.
+       (C++ Bison Interface): Mention `%define namespace' instead of
+       %name-prefix.
+       (Table of Symbols): Remove the `%define push_pull' entry.  The %define
+       entry suffices.
+       * tests/c++.at (Relative namespace references): New test case.
+       (Absolute namespace references): New test case.
+       (Syntactically invalid namespace references): New test case.
+       * tests/input.at (C++ namespace reference errors): New test case.
+
 2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Add syncline support and location accessor to internal %define
 
 2007-03-07  Paolo Bonzini  <bonzini@gnu.org>
 
-        * data/java.m4 (b4_single_class_if): Remove.
-        (b4_abstract_if): Look at "%define abstract".
-        (b4_lexer_if): New.
-        (b4_union_name): Rename...
-        (b4_yystype): ... to this.  Map to "%define stype".
-        (b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
-        b4_maybe_throws): Fix quoting.
-        (b4_lex_param_call): Move below to keep b4_*_param_decl close.
-        * data/lalr1.java (Lexer interface): Always define.
-        (Lexer interface within parser class): Remove.
-        (YYLexer class): New, used when "%code lexer" is present.
-        (constructor): When "%code lexer" is used, pass %lex-param
-        to the lexer constructor.
-        (yylex, yyparse): Remove %lex-param from method invocations
-        (YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
-
-        * doc/bison.texinfo (Java Bison Interface): Mention "%define
-        abstract".  Rename "%define union_name" to "%define stype".
-        Rename method names according to previous patch.
-        (Java Scanner Interface): Describe "%code lexer" instead of
-        "%pure-parser" and "%define single_class".
-        (Java Differences): Mention "%code lexer".
-
-        * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
-        Include scanner here, using macros from tests/local.at.
-        (AT_DATA_CALC_Y): Remove final argument.
-        (_AT_CHECK_JAVA_CALC): Likewise.
-        (AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
-        of %locations and %error-verbose.
-        (main): Test with and without %lex-param.
-        * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
-        (AT_BISON_OPTION_POPDEFS): Pop it.
+       * data/java.m4 (b4_single_class_if): Remove.
+       (b4_abstract_if): Look at "%define abstract".
+       (b4_lexer_if): New.
+       (b4_union_name): Rename...
+       (b4_yystype): ... to this.  Map to "%define stype".
+       (b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
+       b4_maybe_throws): Fix quoting.
+       (b4_lex_param_call): Move below to keep b4_*_param_decl close.
+       * data/lalr1.java (Lexer interface): Always define.
+       (Lexer interface within parser class): Remove.
+       (YYLexer class): New, used when "%code lexer" is present.
+       (constructor): When "%code lexer" is used, pass %lex-param
+       to the lexer constructor.
+       (yylex, yyparse): Remove %lex-param from method invocations
+       (YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
+
+       * doc/bison.texinfo (Java Bison Interface): Mention "%define
+       abstract".  Rename "%define union_name" to "%define stype".
+       Rename method names according to previous patch.
+       (Java Scanner Interface): Describe "%code lexer" instead of
+       "%pure-parser" and "%define single_class".
+       (Java Differences): Mention "%code lexer".
+
+       * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
+       Include scanner here, using macros from tests/local.at.
+       (AT_DATA_CALC_Y): Remove final argument.
+       (_AT_CHECK_JAVA_CALC): Likewise.
+       (AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
+       of %locations and %error-verbose.
+       (main): Test with and without %lex-param.
+       * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
+       (AT_BISON_OPTION_POPDEFS): Pop it.
 
 2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 
        -----
 
        Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
-       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
        Free Software Foundation, Inc.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this
        notice are preserved.
-
-$Id$