]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
2007-10-17 Wojciech Polak <polak@gnu.org>
[bison.git] / ChangeLog
index d622a99ce7e246e9ad97f7b1de84056eed5b4c83..3aae3d6a8df12d92c0f8dd22d03b88de41688d8f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+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
+       interfaces.
+       * data/bison.m4 (b4_percent_define_get_loc): New.
+       (b4_percent_define_get_syncline): New.
+       (b4_percent_define_flag_if): Use b4_percent_define_get_loc.
+       (b4_percent_define_default): Record defining location as line 1 rather
+       than 0 for the sake of synchronizing #line's, and define
+       b4_percent_define_syncline(VARIABLE).
+       (b4_percent_define_check_values): Use b4_percent_define_get_loc.
+       * src/muscle_tab.c (muscle_syncline_grow): New.
+       (muscle_code_grow): Use muscle_syncline_grow.
+       (muscle_percent_define_insert): Use muscle_percent_define_get_loc, and
+       define b4_percent_define_syncline(VARIABLE).
+       (muscle_percent_define_get_loc): New.
+       (muscle_percent_define_get_syncline): New.
+       (muscle_percent_define_flag_if): Use muscle_percent_define_get_loc, and
+       remove some unused variables.
+       (muscle_percent_define_default): Record defining location as line 1
+       rather than 0 for the sake of synchronizing #line's, and define
+       b4_percent_define_syncline(VARIABLE).
+       (muscle_percent_define_check_values): Use
+       muscle_percent_define_get_loc.
+       * src/muscle_tab.h (muscle_percent_define_get_loc): Prototype.
+       (muscle_percent_define_get_syncline): Prototype.
+       * tests/skeletons.at (%define Boolean variables: invalid skeleton
+       defaults): Update output for location change.
+       (Complaining during macro argument expansion): Extend to test
+       b4_percent_define_get_loc and b4_percent_define_get_syncline errors.
+
+2007-10-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix some error-reporting macro bugs.
+       * data/bison.m4 (b4_cat): New.
+       (b4_error, b4_error_at): Use b4_cat to send error directives directly
+       to stdout so they don't become arguments to other macros.  Update
+       comments and add examples.
+       (b4_warn, b4_warn_at, b4_complain, b4_complain_at): Update comments and
+       add examples.
+       (b4_fatal, b4_fatal_at): Likewise, and invoke m4_exit(1) immediately
+       after printing the error directive so that M4 doesn't report subsequent
+       problems that are induced by this problem.
+       * src/scan-skel.l: Recognize @` digraph outside of directive arguments
+       instead of just in them.  Recognize @\n in both places.  Both expand to
+       the empty string.  Needed by b4_cat.
+       * tests/skeletons.at (Complaining during macro argument expansion):
+       New test case.
+       (Fatal errors make M4 exit immediately): New test case.
+
+2007-10-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Implement --print-datadir.
+       * src/getargs.c (usage): Mention.
+       (PRINT_DATADIR_OPTION): New anonymous enum member.
+       (long_options): Add entry for it.
+       (getargs): Add case for it calling compute_pkgdatadir.
+       * src/output.c (output_skeleton): Encapsulate data directory
+       computation from here...
+       (prepare): ... and from here...
+       (compute_pkgdatadir): ... into this new function.
+       * src/output.h (compute_pkgdatadir): Prototype.
+
+2007-09-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/print-xml.c (escape_bufs): New static global variable
+       replacing...
+       (xml_escape_n): ... the static local variable buf here.
+       (print_xml): Free memory for escape_bufs.
+       * src/reduce.c (reduce_xml): XML-escape terminal symbol tags.
+
+2007-09-25  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Replace `%push-parser' and `%push-pull-parser' with
+       `%define push_pull "push"' and `%define push_pull "both"'.
+       `%define push_pull "pull"' is the default.
+       * doc/bison.texinfo (Push Decl, Push Parser Function,
+       Pull Parser Function, Parser Create Function, Parser Delete Function):
+       Update declarations.
+       (Decl Summary, Table of Symbols): Replace %push-parser and
+       %push-pull-parser entries with a %define push_pull entry.
+       * data/bison.m4 (b4_percent_define_check_values): New macro.
+       (b4_pull_if, b4_push_if, b4_use_push_for_pull_if): Move these
+       definitions...
+       * data/c.m4 (b4_identification): ... and the YYPUSH and YYPULL cpp
+       definitions...
+       * data/push.c: ... to here and compute them from the value of the
+       %define variable push_pull.
+       * data/c-skel.m4: Instead of choosing the push.c skeleton for push
+       parsing requests here...
+       * data/yacc.c: ... hack this to switch to push.c any time
+       b4_use_push_pull_flag or the %define variable push_pull is set.  This
+       will go away when we mv push.c yacc.c.
+       * data/c++-skel.m4, data/glr.c, data/java-skel.m4: Don't report that
+       push parsing is not supported since unused %define variables are
+       reported anyway.
+       * src/getargs.c, src/getargs.h (pull_parser, push_parser): Remove.
+       * src/muscle_tab.h (muscle_percent_define_check_values): Update
+       comments for consistency with b4_percent_define_check_values.
+       * src/output.c (prepare): Don't insert b4_pull_flag and b4_push_flag
+       muscles.
+       * src/parse-gram.y (PERCENT_PUSH_PARSER, PERCENT_PUSH_PULL_PARSER):
+       Remove.
+       (prologue_declaration): Remove %push-parser and %push-pull-parser
+       rules.
+       * src/scan-gram.l (%push-parser, %push-pull-parser): Remove rules.
+       * tests/calc.at: Update declarations.
+       * tests/input.at (%define enum variables): New test case.
+       * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update
+       declaration.
+       (Push Parsing: Multiple impure instances): Update declaration.
+       (Push Parsing: Unsupported Skeletons): New test case.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Update
+       declaration.
+       (Exploding the Stack Size with Malloc): Update declaration.
+
+2007-09-24  Wojciech Polak  <polak@gnu.org>
+
+       Add XSLT transformations.
+
+       * data/xslt/xml2dot.xsl: Transform XML into DOT.
+       * data/xslt/xml2text.xsl: Transform XML into plain text.
+       * data/xslt/xml2xhtml.xsl: Transform XML into XHTML.
+       * data/Makefile.am (xsltdir): New variable.
+       (dist_xslt_DATA): Add xslt/*.xsl files.
+
+2007-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/conflicts.c (log_resolution): Fix indenting bugs I introduced.
+       Problem reported by Wojciech Polak.
+       * src/print-xml.c (xml_puts): Work even if LEVEL exceeds INT_MAX/2.
+       (xml_printf): Undo change I made on 21 September; that is,
+       indent 2 spaces, not 1.
+
+2007-09-23  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Pacify ./configure --enable-gcc-warnings.
+       * src/print-xml.c, src/print-xml.h (xml_puts): Make third argument
+       `char const *' instead of `char *'.
+       * src/state.c (state_rule_lookahead_tokens_print_xml): Remove unused
+       local variable `sep'.
+
+2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/gram.c (rule_rhs_print_xml): Now static, since it isn't used
+       elsewhere.
+       * src/print-xml.c: Prefer "const" after types; that's more consistent.
+       (xml_printf): Indent just 1 space for level.
+       (e_char, xlate_char): Remove.
+       (xml_escape_string): Rewrite to avoid undefined behavior (used
+       storage that was freed from the stack).
+       (xml_escape_n): Don't bother checking for subscript error.
+
+2007-09-21  Wojciech Polak  <polak@gnu.org>
+
+       Add Bison XML Automaton Report.
+
+       Add support for an -x option to generate an XML report.
+       It is not documented yet.
+       * src/print-xml.c: New file.
+       * src/print-xml.h: Likewise.
+       * lib/timevar.def (TV_XML): New var.
+       * src/Makefile.am (bison_SOURCES): Add print-xml.c, print-xml.h.
+       * src/conflicts.c: Include print-xml.h.
+       (solved_conflicts_xml_obstack): New var.
+       (log_resolution, conflicts_solve, conflicts_free):
+       Add support for XML report.
+       (conflicts_output_val): New function.
+       * src/conflicts.h (conflicts_output_val): New decl.
+       * src/files.c (spec_xml_file): New var.
+       (compute_output_file_names, output_file_names_free): Add XML support.
+       * src/files.h (spec_xml_file): New decl.
+       * src/getargs.c (xml_flag): New var.
+       (usage, short_options, long_options, getargs): Add XML support.
+       * src/getargs.h (xml_flag): New decl.
+       * src/gram.c: Include print-xml.h.
+       (rule_lhs_print_xml, rule_rhs_print_xml):
+       (grammar_rules_partial_print_xml, grammar_rules_print_xml):
+       New functions.
+       * src/gram.h: Declare external ones.
+       * src/main.c: Include print-xml.h.
+       (main): Add XML support.
+       * src/reduce.c: Include print-xml.h.
+       (reduce_xml): New function.
+       * src/reduce.h: Declare it.
+       * src/state.c: Include print-xml.h.
+       (state_new): Add XML support.
+       (state_rule_lookahead_tokens_print_xml): New function.
+       * src/state.h: Declare it.
+       (struct state): New member solved_conflicts_xml.
+       * src/symtab.c (symbol_class_get_string): New function.
+       * src/symtab.h: Declare it.
+
+2007-09-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * GNUmakefile: Switch to coreutils's version.
+       * bootstrap: Likewise.
+       * Makefile.cfg: Adjust to new GNUmakefile.
+       * README-hacking: Likewise.
+
+       Import from gnulib:
+
+       2006-08-18  Paul Eggert  <eggert@cs.ucla.edu>
+                   Bruno Haible  <bruno@clisp.org>
+
+       * m4/bison-i18n.m4 (BISON_I18N): Also handle the case where yacc exists
+       and is a script that invokes bison. Tighten the code. Add comments.
+
+2007-08-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Spell "boolean" as "Boolean".  Reported by Akim Demaille.
+       * data/bison.m4 (b4_percent_define_flag_if): Fix complaint.
+       * doc/bison.texinfo (Decl Summary): Fix.
+       * src/muscle_tab.c (muscle_percent_define_flag_if): Fix complaint.
+       * tests/input.at (Boolean %define variables): Update output.
+       * tests/skeletons.at (%define boolean variables: invalid skeleton
+       defaults): Rename to...
+       (%define Boolean variables: invalid skeleton defaults): ... this and
+       update output.
+
+2007-08-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       In impure push mode, don't allow more than one yypstate to be allocated
+       since multiple impure parsers would corrupt yynerrs.
+       * data/push.c (yypstate_allocated): New static global variable
+       initialized to 0.
+       (yypull_parse): If yypstate_new returns 0, don't report it as memory
+       exhaustion if yypstate_allocated is 1, but still return 2.
+       (yypstate_new): Invoke yyerror and return 0 if yypstate_allocated is
+       already 1.  Otherwise, set it to 1.
+       (yypstate_delete): Set it to 0.
+       * tests/push.at (Push Parsing: Multiple impure instances): New test
+       case.
+
+2007-08-17  Bob Rossi  <bob@brasko.net>
+
+       * doc/bison.texinfo (Push Decl): Document the push parser.
+       (Table of Symbols): Ditto.
+       (Pure Decl): Ditto.
+       (Decl Summary): Ditto.
+       (Multiple Parsers, Push Parser Function, Pull Parser Function,
+       Parser Create Function, Parser Delete Function):
+       Add new push parser symbols.
+       (Table of Symbols): Document push-parser, push-pull-parser,
+       yypush_parse, yypull_parse, yypstate_new and yypstate_delete.
+
+2007-08-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Update to GPLv3.
+       * doc/gpl-3.0.texi: New file.
+       * doc/gpl.texi: Remove.
+       * COPYING, GNUmakefile, HACKING, Makefile.am, Makefile.cfg:
+       * Makefile.maint, NEWS, PACKAGING, README, README-alpha:
+       * README-hacking, TODO, bootstrap, bootstrap.conf:
+       * configure.ac, data/Makefile.am, data/README, data/bison.m4:
+       * data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4:
+       * data/glr.c, data/glr.cc, data/java-skel.m4, data/java.m4:
+       * data/lalr1.cc, data/lalr1.java, data/location.cc:
+       * data/push.c, data/yacc.c, data/m4sugar/m4sugar.m4:
+       * djgpp/Makefile.maint, djgpp/README.in, djgpp/config.bat:
+       * djgpp/config.sed, djgpp/config.site, djgpp/config_h.sed:
+       * djgpp/djunpack.bat, djgpp/subpipe.c, djgpp/subpipe.h:
+       * djgpp/testsuite.sed, doc/Makefile.am, doc/bison.texinfo:
+       * doc/fdl.texi, doc/refcard.tex, etc/Makefile.am, etc/README:
+       * etc/bench.pl.in, examples/Makefile.am, examples/extexi:
+       * examples/calc++/Makefile.am, lib/Makefile.am, lib/abitset.c:
+       * lib/abitset.h, lib/bbitset.h, lib/bitset.c, lib/bitset.h:
+       * lib/bitset_stats.c, lib/bitset_stats.h, lib/bitsetv-print.c:
+       * lib/bitsetv-print.h, lib/bitsetv.c, lib/bitsetv.h:
+       * lib/ebitset.c, lib/ebitset.h, lib/get-errno.c:
+       * lib/get-errno.h, lib/lbitset.c, lib/lbitset.h:
+       * lib/libiberty.h, lib/main.c, lib/subpipe.c, lib/subpipe.h:
+       * lib/timevar.c, lib/timevar.def, lib/timevar.h:
+       * lib/vbitset.c, lib/vbitset.h, lib/yyerror.c:
+       * m4/c-working.m4, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4:
+       * m4/timevar.m4, src/LR0.c, src/LR0.h, src/Makefile.am:
+       * src/assoc.c, src/assoc.h, src/closure.c, src/closure.h:
+       * src/complain.c, src/complain.h, src/conflicts.c:
+       * src/conflicts.h, src/derives.c, src/derives.h, src/files.c:
+       * src/files.h, src/flex-scanner.h, src/getargs.c:
+       * src/getargs.h, src/gram.c, src/gram.h, src/graphviz.c:
+       * src/lalr.c, src/lalr.h, src/location.c, src/location.h:
+       * src/main.c, src/muscle_tab.c, src/muscle_tab.h:
+       * src/nullable.c, src/nullable.h, src/output.c, src/output.h:
+       * src/parse-gram.c, src/parse-gram.h, src/parse-gram.y:
+       * src/print.c, src/print.h, src/print_graph.c:
+       * src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c:
+       * src/reduce.h, src/relation.c, src/relation.h:
+       * src/revision.h, src/scan-code.h, src/scan-code.l:
+       * src/scan-gram.h, src/scan-gram.l, src/scan-skel.h:
+       * src/scan-skel.l, src/state.c, src/state.h, src/symlist.c:
+       * src/symlist.h, src/symtab.c, src/symtab.h, src/system.h:
+       * src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h:
+       * tests/Makefile.am, tests/actions.at, tests/c++.at:
+       * tests/calc.at, tests/conflicts.at, tests/cxx-type.at:
+       * tests/existing.at, tests/glr-regression.at:
+       * tests/headers.at, tests/input.at, tests/java.at:
+       * tests/local.at, tests/output.at, tests/push.at:
+       * tests/reduce.at, tests/regression.at, tests/sets.at:
+       * tests/skeletons.at, tests/synclines.at, tests/testsuite.at:
+       * tests/torture.at:
+       Update to GPLv3.
+
+2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Get rid of broken %no-parser, -n, and --no-parser implementation and
+       documentation.
+       * TODO: Don't mention them.
+       * doc/bison.1: Likewise.
+       * doc/bison.texinfo (Decl Summary): Likewise.
+       (Bison Options): Likewise.
+       (Option Cross Key): Likewise.
+       * src/getargs.c (no_parser_flag): Remove global variable.
+       (usage): Don't print description of -n and --no-parser.
+       (long_options): Remove --no-parser entry here.
+       (getargs): Remove -n case in the switch here.
+       * src/getargs.h (no_parser_flag): Remove extern.
+       * tests/regression.at (Web2c Actions): Remove comment that mentions
+       --no-parser.
+
+2007-08-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Do not
+       name user variables starting with `yy'.  Just pass NULL instead of a
+       dummy local &yylval to yypush_parse.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): Do not name user variables
+       starting with `yy'.
+
+2007-08-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/yacc.c (yyexhaustedlab): Define it when YYERROR_VERBOSE is
+       true since it's then always used regardless of whether yyoverflow is
+       defined.  Reported by Christian Burger at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00031.html>.
+       * THANKS: Add Christian Burger.
+
+       * ChangeLog: For changes in doc/bison.texinfo, consistently reference
+       node names: say "Decl Summary" not "Bison Declaration Summary".
+
+2007-07-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/muscle_tab.c (muscle_percent_define_flag_if): In order to
+       determine whether this function has already complained about an invalid
+       value for a %define boolean variable, don't check whether Bison has
+       ever examined the value.  As written, the check was a tautology.
+       Instead, record and check for this complaint using a separate muscle.
+
+2007-07-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix push parsing memory leak reported by Brandon Lucia at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00032.html>.
+       * THANKS: Add Brandon Lucia.
+       * data/push.c (yypstate_delete): Free the stack if it was reallocated
+       but the parse never completed and thus freed it.
+       * tests/Makefile.am (TESTSUITE_AT): Add push.at.
+       * tests/testsuite.at: Include push.at.
+       * test/push.at: New.
+       (Push Parsing: Memory Leak for Early Deletion): New test case.
+
+2007-07-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Improve handling of multiple S/R conflicts in the same state and of S/R
+       conflicts involving multiple reductions.
+       * src/conflicts.c (resolve_sr_conflict): Don't assign the error action
+       set for a state here or Bison will abort if it is reassigned on a
+       later conflicted reduction in the same state.
+       Similarly, don't finalize and assign the solved conflicts report here
+       or it will be lost if it is reassigned on a later conflicted reduction
+       in the same state.
+       (set_conflicts): Instead, assign them both here after all S/R conflicts
+       in the state have been fully examined.
+       * src/print.c (shift_set): Rename to...
+       (no_reduce_set): ... this.
+       (print_reductions): Update for rename, and add %nonassoc error action
+       tokens to no_reduce_set so that, when printing the first remaining
+       reduction on an error action token, the reduction is enclosed in
+       brackets.
+       (print_results): Update for rename.
+       * tests/conflicts.at (Solved conflicts report for multiple reductions
+       in a state): New test case.
+       (%nonassoc error actions for multiple reductions in a state): New test
+       case.
+
+       * src/main.c (main): Don't depend on C99 features.
+
+2007-07-16  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * build-aux/.cvsignore: Add compile.
+       * lib/.cvsignore: Add charset.alias, ref-add.sed, ref-del.sed, and
+       uniwidth.
+
+2007-07-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * bootstrap (slurp): Create target directories that don't exist.
+       Specifically, we need lib/uniwidth/ because of recent Gnulib changes.
+
+2007-07-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * LR0.c (new_itemsets): Fix wording in comments: say item index rather
+       than item number.
+       * closure.c (closure): Likewise.
+       * state.h (reductions): Comment sorting of rules.
+       (state): Comment sorting of items.
+
+2007-07-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Fix C++ test cases after recent Gnulib changes.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-07/msg00000.html>.
+       * examples/calc++/Makefile.am (DEFAULT_INCLUDES): Override Automake's
+       definition in order to avoid Gnulib headers since we don't use config.h
+       here.
+       * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use AT_DATA_GRAMMAR
+       rather than AT_DATA so that config.h is included.
+
+2007-07-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/glr.c (yy_yypstack, yypstates, yypdumpstack): Use YYFPRINTF
+       instead of fprintf.  Guard these functions with #if YYDEBUG instead of
+       #ifdef YYDEBUG for consistency with all other uses of YYDEBUG in Bison
+       and so that YYFPRINTF is guaranteed to be defined here.
+
+2007-05-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/muscle_tab.c (muscle_percent_define_invalid_value): Replace
+       with...
+       (muscle_percent_define_check_values): ... this more helpful function.
+       Again, it's not used yet, but it will be.
+       * src/muscle_tab.h: Likewise.
+
+       Improve some comments in parser table construction.
+       * src/LR0.c (new_itemsets): Explain sorting of itemset and kernel_base.
+       (generate_states): Don't mention ruleset, which is internal to closure.
+       * src/closure.c (closure): Explain sorting of core and itemset, which
+       is required for this function to behave correctly.
+       * src/closure.h (closure): Mention sorting.
+
+2007-05-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/lalr.c (state_lookahead_tokens_count): For code readability,
+       move the check for disabled transitions to an aver since conflict
+       resolution hasn't happened yet.
+
+       * src/lalr.c (state_lookahead_tokens_count): Remove the check that
+       labels a state as inconsistent just because it has error transitions.
+       The original form of this check appeared in revision 1.1 of lalr.c,
+       which was committed on 1991-12-21.  Now (at least), changing the
+       consistency label on such a state appears to have no useful effect in
+       any of the places it is examined, which I enumerate below.  The key
+       point to understanding each item in this enumeration is that a state
+       with an error transition is labelled consistent in the first place only
+       if it has no rules, so the check cannot matter for states that have
+       rules.  (1) Labelling a state as inconsistent will cause set_conflicts
+       to try to identify its conflicts, and a state must have *rules* to have
+       conflicts.  (2) Labelling a state as inconsistent will affect how
+       action_row sets the default *rule* for the state.  (3) Labelling a
+       state as inconsistent will cause build_relations to add lookback edges
+       to *rules* in that state.
+       * src/state.h (struct state): Word the comment for member consistent
+       more carefully.
+
+2007-05-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't depend on C99 features.
+       * src/conflicts.c (conflicts_update_state_numbers): Fix for-loop.
+       * src/lalr.c (lalr_update_state_numbers): Fix for-loop.
+       * src/reader.c (check_and_convert_grammar): Fix for-loop.
+       * src/state.c (state_mark_reachable_states): Fix for-loop.
+       (state_remove_unreachable_states): Fix for-loop.
+
+       Don't widen struct state with member reachable just to temporarily
+       record reachability.  Instead, use a local bitset.
+       * src/state.h (struct state): Remove member.
+       * src/state.c (state_new): Don't initialize it.
+       (state_mark_reachable_states): Rename to...
+       (state_record_reachable_states): ... this, and use bitset.
+       (state_remove_unreachable_states): Use bitset.
+
+2007-05-26  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/Makefile.am (yacc): Quote target action commands properly so
+       that the yacc script isn't corrupt.  Reported by Hans Aberg at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-05/msg00003.html>.
+
+       * data/glr.c (yylval): As in yacc.c, don't extern in the header for
+       the case of pure parsers.  Reported by Frans Englich at
+       <http://lists.gnu.org/archive/html/help-bison/2007-05/msg00018.html>.
+       * THANKS: Add Frans Englich.
+
+       * NEWS (2.3a+): In the %code entry, reference section `Bison
+       Declaration Summary' from the manual now since the %code summary has
+       moved there.
+       * doc/bison.texinfo (Prologue Alternatives): Mention that directives
+       in the rules section must be terminated by semicolons.
+
+2007-05-20  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Extend the front-end API for %define variables to more completely
+       mirror the back-end.  This will be useful in the future.
+       * data/bison.m4 (b4_percent_define_get, b4_percent_define_ifdef):
+       Update comments to mention the new front-end counterparts of these
+       macros.
+       * src/muscle_tab.c (MUSCLE_COMMON_DECODE): New macro with common code
+       for muscle_string_decode and muscle_location_decode.
+       (muscle_string_decode): New static function.
+       (muscle_location_decode): Use MUSCLE_COMMON_DECODE.
+       (muscle_percent_define_get, muscle_percent_define_ifdef): New
+       functions.
+       (muscle_percent_define_flag_if): Use muscle_percent_define_ifdef and
+       muscle_percent_define_get to mimic the b4_percent_define_flag_if
+       implementation more closely.
+       (muscle_percent_define_invalid_value): New function.
+       * src/muscle_tab.h (muscle_percent_define_get,
+       muscle_percent_define_ifdef, muscle_percent_define_invalid_value):
+       Prototype.
+
+2007-05-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS (2.3a+): Mention yesterday's state-removal change.
+       (2.3a): Remove the %language entry, which was added after 2.3a.
+       * src/LR0.c, src/closure.c, src/closure.h, src/conflicts.c,
+       src/conflicts.h, src/lalr.c, src/lalr.h, src/print.c,
+       src/print_graph.c, src/state.c, src/state.h, tests/conflicts.at,
+       tests/existing.at: Update copyright date.
+
+2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       If conflict resolution makes states unreachable, remove those states,
+       report rules that are then unused, and don't report conflicts in those
+       states.
+       * src/conflicts.c, src/conflicts.h (conflicts_update_state_numbers):
+       New global function.
+       * src/lalr.c, src/lalr.h (lalr_update_state_numbers): New global
+       function.
+       * src/main.c (main): After conflict resolution, remove the unreachable
+       states and update all data structures that reference states by number.
+       * src/state.c (state_new): Initialize each state's reachable member to
+       false.
+       (state_mark_reachable_states): New static function.
+       (state_remove_unreachable_states): New global function.
+       * src/state.h (struct state): Add member bool reachable.
+       (state_remove_unreachable_states): Prototype.
+       * tests/conflicts.at (Unreachable States After Conflict Resolution):
+       New test case.
+       * tests/existing.at (GNU pic Grammar): Update test case output now that
+       an unused rule is discovered.
+
+2007-05-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Minor code cleanup in parser table construction.
+       * src/LR0.c (new_itemsets): Use item_number_is_symbol_number.
+       (new_itemsets, save_reductions): Update for rename to nitemset.
+       * src/closure.c (nritemset): Rename to...
+       (nitemset): ... this since the "r" appears to meaningless and isn't
+       used in the comments.
+       (closure): Update for rename.
+       * src/closure.h (nritemset): Update extern to...
+       (nitemset): ... this.
+       * src/lalr.c (LA): Fix a typo in comments.
+       * src/print.c (print_core): Update for rename to nitemset.
+       * src/print_graph.c (print_graph): Likewise.
+       * src/state.h: Fix some typos in header comments.
+
+2007-04-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * THANKS: Use ASCII for Sebastien Fricker's name.  Bison source
+       still sticks to ASCII.  Sorry!
+
+       * README-hacking: New file, taken mostly from coreutils, with changes
+       for Bison.  Contains much of the contents of:
+       * README-cvs: Remove.
+       * bootstrap: Sync from gnulib.
+       * build-aux/.cvsignore: Remove *.t, mkinstalldirs.
+       * lib/.cvsignore: Add wchar.h, wctype.h.  Remove exit.h.
+
+2007-03-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Destructor Decl): Fix typo reported by Sebastian
+       Setzer.
+       (Java Differences): Fix some typos.
+       * THANKS: Add Sebastian Setzer.
+
+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.
+
+2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP spefic issue.  Inhibit the use of disallowed characters for
+       file name genertion on Win98, WinXP, etc.  These are |<>":?*\
+       and concern testsuite case 46.
+       * Makefile.am: djgpp/testsuite.sed added to EXTRA_DIST
+       * djgpp/testsuite.sed: Inhibit the use of disallowed characters.
+       * djgpp/config.bat: Inhibit the use of disallowed characters.
+
+2007-03-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Miscellaneous %define and %code cleanup.
+       * data/bison.m4 (b4_percent_define_flag_if): Correct comments on how
+       values are interpreted.
+       * doc/bison.texinfo (Decl Summary): Clean up and extend %define
+       documentation a little more.
+       * src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT,
+       muscle_percent_define_insert, muscle_percent_code_grow): New
+       functions/macros.
+       * src/muscle_tab.h (muscle_percent_define_insert,
+       muscle_percent_code_grow): Prototype.
+       * src/parse-gram.y (prologue_declaration): Use
+       muscle_percent_define_insert and muscle_percent_code_grow when parsing
+       %define and %code directives.
+
+       Make it easy to share %define boolean variables between the front-end
+       and back-end.  Though not used yet, this will be useful in the future.
+       * data/bison.m4 (b4_check_user_names): Rewrite comments to talk about
+       Bison uses of names rather than just skeleton uses of names.
+       (b4_percent_define_get, b4_percent_define_ifdef): Rename
+       b4_percent_define_skeleton_variables(VARIABLE) to
+       b4_percent_define_bison_variables(VARIABLE).
+       (b4_percent_code_get, b4_percent_code_ifdef): Rename
+       b4_percent_code_skeleton_qualifiers(QUALIFIER) to
+       b4_percent_code_bison_qualifiers(QUALIFIER).
+       (b4_check_user_names_wrap): Update for renames.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if,
+       muscle_percent_define_default): New functions mimicking
+       b4_percent_define_flag_if and b4_percent_define_default.
+
+       For %define variables, report locations for invalid values and
+       redefinitions.
+       * data/bison.m4 (b4_percent_define_flag_if): Read
+       b4_percent_define_loc(VARIABLE) to report the location of an invalid
+       value for VARIABLE.
+       (b4_percent_define_default): Save a special location in
+       b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE
+       must later be reported as invalid.
+       * src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New
+       functions.
+       (muscle_percent_define_insert): Record the location of VARIABLE in
+       muscle percent_define_loc(VARIABLE), and use it to report the previous
+       location for a redefinition.
+       (muscle_percent_define_flag_if): Update like b4_percent_define_flag_if.
+       (muscle_percent_define_default): Update like b4_percent_define_default.
+       (muscle_grow_user_name_list): Rename to...
+       (muscle_user_name_list_grow): ... this for consistency and use
+       muscle_location_grow.
+       * src/muscle_tab.h (muscle_location_grow): Prototype.
+       * tests/input.at (%define errors): Update expected output.
+       * tests/skeletons.at (%define boolean variables: invalid skeleton
+       defaults): New test case.
+
+2007-02-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/print.c (lookahead_set, state_default_rule): Remove.
+       (print_reductions): Replace state_default_rule invocation with
+       equivalent use of yydefact, which was computed in token_actions in
+       tables.c.
+       (print_results): Don't allocate lookahead_set.
+
+2007-02-27  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/lalr1.java: Prefix all private members with yy.
+
+2007-02-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use YYFPRINTF instead of fprintf where appropriate.  Reported by
+       Sebastien Fricker at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00035.html>.
+       * THANKS: Add Sebastien Fricker.
+       * data/glr.c, data/push.c, data/yacc.c (yy_reduce_print): Implement.
+       * doc/bison.texinfo (Tracing): Make it clearer that YYFPRINTF must
+       accept a variable number of arguments.
+
+2007-02-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * bootstrap: Remove occurrences of .#bootmp from lib/Makefile.
+
+2007-02-13  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       * djgpp/config.bat: Adjustments concerning the use of autoconf 2.61.
+       * djgpp/config.sed: Adjustments concerning the use of autoconf 2.61.
+       * djgpp/config.site: Adjustments concerning the use of autoconf 2.61.
+
+2007-02-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Undo my 2007-02-07 change, switching back to the c-strcase module
+       introduced in the 2007-02-03 change.  Bruno Haible reported that
+       the 2007-02-07 change would be dangerous in Turkish if we add a
+       language whose name contains "i", since "i" is not lowercase "I"
+       in Turkish.
+       * bootstrap.conf (gnulib_modules): Add c-strcase.  Remove strcase.
+       * lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h,
+       c-strcasecomp.c, c-strncasecmp.c.  Remove strcasecmp.c, strncasecmp.c.
+       * m4/.cvsignore: Remove strcase.m4.
+       * src/getargs.c: Revert 2007-02-07 change, as follows.
+       Include c-strcase.h.
+       (language_argmatch): Use c_strcasecmp rather than strcasecmp.
+
+2007-02-11  Bruno Haible  <bruno@clisp.org>
+
+       Enable the Java related testsuite tests when the only Java compiler
+       found is a gcj < 4.3.  Discussed at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-02/msg00016.html>.
+       * configure.ac (gt_JAVACOMP): Don't specify a target_version.
+
+2007-02-11  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/Makefile.am: Update copyright date.
+       * data/push.c (yypull_parse): Report memory exhaustion and return 2 if
+       yypstate_new returns NULL.
+       (yypstate_new): Return NULL if malloc does.
+       * src/reader.c (packgram): Move translation of rule actions from the
+       beginning of packgram to...
+       (check_and_convert_grammar): ... here right before packgram is invoked
+       so it's easier to write more complete comments, and remove redundant
+       code.
+
+2007-02-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       As in semantic actions, make @$ in %initial-action, %destructor, and
+       %printer imply %locations.
+       * src/scan-code.l (SC_SYMBOL_ACTION): Set locations_flag = true when
+       scanning @$.
+       * tests/actions.at (AT_CHECK_ACTION_LOCATIONS): New macro supporting...
+       (@$ in %initial-action implies %locations,
+       @$ in %destructor implies %locations,
+       @$ in %printer implies %locations): ... these new test cases.
+
+2007-02-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Undo most of the 2007-02-03 change, switching to the strcase module
+       now that gnulib strcase has been fixed.
+       * bootstrap.conf (gnulib_modules): Remove c-strcase.  Add strcase.
+       * lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h,
+       c-strcasecomp.c, c-strncasecmp.c.  Add strcasecmp.c, strncasecmp.c
+       * m4/.cvsignore: Add strcase.m4.
+       * src/getargs.c: Revert 2007-02-03 change, as follows.
+       Don't include c-strcase.h.
+       (language_argmatch): Use strcasecmp rather than c_strcasecmp.
+       strcasecmp has "unspecified behavior" outside the POSIX locale,
+       but it works fine in practice if at least one argument is ASCII,
+       as is the case in Bison.
+
+2007-02-07  Paolo Bonzini  <bonzini@gnu.org>
+
+       * tests/java.at: Skip tests if only one of javac/java is present.
+       Reported by Joel E. Denny.
+       * tests/atlocal.in: Adjust copyright years.
+
+2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/lalr1.java (Stack): Work around old verifiers that disallow
+       access to the private fields of an inner class, from the outer class.
+       We can make Stack's fields public because user code doesn't have access
+       to the instance of Stack used by parse().  Reported by Paul Eggert.
+
+2007-02-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * .cvsignore: Add javacomp.sh, javaexec.sh.  Is this really
+       the right spot for these files?
+       * bootstrap.conf (gnulib_modules): Add c-strcase.
+       * lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c,
+       c-strncasecmp.c.
+       * src/getargs.c: Include c-strcase.h.
+       (language_argmatch): Use c_strcasecmp rather than strcasecmp,
+       to avoid unspecified behavior.
+
+2007-02-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * doc/bison.texinfo (Decl Summary): Correct typo.
+
+2007-01-30  Paolo Bonzini  <bonzini@gnu.org>
+
+       * data/bison.m4 (b4_percent_define_flag_if): Don't treat 0 as false.
+       Complain if the value does not match empty, "true" or "false".
+       * data/c++.m4: Adjust default definitions of %define variables.
+       * data/java.m4: Adjust default definitions of %define variables.
+       * doc/bison.texinfo (Decl Summary): Adjust the %define entry according
+       to above behavior.
+       * tests/input.at (Boolean %define variables): Test new behavior.
+
+2007-01-29  Paolo Bonzini  <bonzini@gnu.org>
+
+       * NEWS: Mention java.
+       * TODO: Remove things that are done.
+       * bootstrap.conf: Add javacomp-script and javaexec-script.
+       * configure.ac: Invoke gt_JAVACOMP and gt_JAVAEXEC.
+
+       * data/Makefile.am: Add new files.
+       * data/java-skel.m4: New.
+       * data/java.m4: New.
+       * data/lalr1.java: New.
+
+       * doc/bison.texinfo: Put "A Complete C++ Example" under
+       C++ Parsers.  Add Java Parsers.  Put C++ Parsers and Java Parsers
+       under Other Languages.
+
+       * src/getargs.c (valid_languages): Add Java.
+       * src/getargs.h (struct bison_language): Update size of string fields.
+
+       * tests/Makefile.am: Add java.at.
+       * tests/atlocal.in: Add CONF_JAVA and CONF_JAVAC.
+       * tests/java.at: New.
+       * tests/testsuite.at: Include it.
+
+2007-01-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up.
+       * src/scan-skel.l (at_directive_perform): Add at_directive_argc and
+       at_directive_argv arguments so these no longer have to be global
+       variables.  Also, update the implementation for the following changes.
+       (fail_for_at_directive_too_many_args,
+       fail_for_at_directive_too_few_args): Add at_directive_name argument.
+       (at_directive_name): Remove as at_directive_argv[0] will be used for
+       this now.
+       (AT_DIRECTIVE_ARGC_MAX): Increment to make space in at_directive_argv
+       for the directive name.
+       (at_directive_argc, at_directive_argv): Make these local within
+       skel_lex instead of global.
+       (INITIAL): Update directive start action for above changes.
+       (SC_AT_DIRECTIVE_ARG): Rename to...
+       (SC_AT_DIRECTIVE_ARGS): ... this, and update for above changes.
+       (SC_AT_DIRECTIVE_SKIP_WS): Update.
+       (scan_skel): Move yylex_destroy to...
+       (skel_scanner_free): ... here.
+       * tests/skeletons.at (installed skeleton file name): Rename to...
+       (installed skeleton file names): ... this.
+
+2007-01-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * ChangeLog: For changes in doc/bison.texinfo, consistently reference
+       node names: say "Table of Symbols" not "Bison Symbols", and say "Decl
+       Summary" not "Directives".
+       * doc/bison.texinfo (Decl Summary, Calc++ Parser): Cross-reference the
+       %code entry in "Decl Summary" rather than the one in "Table of Symbols"
+       since the former is now the more complete one.
+       (Prologue Alternatives): Likewise and do the same for %defines.
+       (Table of Symbols): Add summary of %code, add summary of %define, and
+       move full %code documentation to...
+       (Decl Summary): ... here for consistency with other entries in these
+       sections.
+       Move %define entry in order to keep this list alphabetized.
+       Reword %define entry a little to put less emphasis on the skeleton
+       concept, which most users shouldn't have to think about.
+
+2007-01-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Adjust to recent gnulib changes.
+       * lib/.cvsignore: Remove stpcpy.h, strndup.h, strnlen.h.
+       Add string.h, string_.h, unistd_.h, wchar_.h.
+       * m4/.cvsignore: Add gnulib-common.m4, string_h.m4, wchar.m4.
+       * src/system.h: Don't include <stpcpy.h>; this is now done by
+       <string.h>.
+
+2007-01-23  Paolo Bonzini  <bonzini@gnu.org>
+
+       Simplify implementation of unqualified %code, implement macros for
+       uniform treatment of boolean %define flags.  Document %define.
+       * data/bison.m4 (b4_percent_define_ifdef, b4_percent_define_flag_if,
+       b4_percent_code_ifdef): New.
+       (b4_percent_code_get): Map unqualified %code to b4_percent_code().
+       * data/c++.m4: Define default value for global_tokens_and_yystype.
+       * data/glr.cc: Likewise.
+       * data/location.cc: Use b4_percent_define_flag_if.
+
+       * doc/bison.texinfo (Decl Summary): Document %define.
+
+       * src/parse-gram.y (Unqualified %code): Change muscle name to
+       b4_percent_code().
+       (content.opt): Default to empty.
+
+2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Implement support for relative and absolute skeleton file names.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00071.html>.
+       * doc/bison.texinfo (Decl Summary): Document in %skeleton entry.
+       (Bison Options): Document in --skeleton entry.
+       * src/output.c (output_skeleton): Use strncpy rather than strcpy since
+       full_skeleton can't necessarily hold all of pkgdatadir.
+       If the specified skeleton file name contains a `/', don't prepend
+       pkgdatadir.
+       * src/parse-gram.y (prologue_declaration): If the specified skeleton
+       file name contains a `/', prepend the grammar file directory.
+       * tests/Makefile.am (TESTSUITE_AT): Add skeletons.at.
+       * skeletons.at: New file.
+       (relative skeleton file names): New test case.
+       (installed skeleton file names): New test case.
+       * tests/testsuite.at: Include skeletons.at.
+
+       * bootstrap: Update copyright to 2007.
+
+2007-01-17  Paolo Bonzini  <bonzini@gnu.org>
+
+       * bootstrap: Remove occurrences of .#bootmp from the files.
+
+2007-01-17  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo (Calc++ Parser): Don't try to alias
+       nonterminals.
+       Use per-type %printer.
+
+2007-01-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * NEWS, data/c++-skel.m4, data/c++.m4, data/c-skel.m4, data/c.m4,
+       data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       djgpp/config.site, src/files.c, src/files.h, src/main.c,
+       src/muscle_tab.c, src/muscle_tab.h, src/parse-gram.y, src/reader.h,
+       src/scan-skel.h, src/scan-skel.l, tests/actions.at, tests/calc.at,
+       tests/glr-regression.at, tests/input.at, tests/local.at,
+       tests/output.at, tests/torture.at: Update copyright to 2007.
+
+2007-01-16  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo (Calc++ Parsing Driver): Let "parse" return an
+       error code.
+       (Calc++ Scanner): Exit with failure if we can't open the input
+       file.
+       Accept "-" standing for stdin.
+       (Calc++ Top Level): Print the result only if the parsing was
+       successful.
+
+2007-01-16  Akim Demaille  <akim@epita.fr>
+
+       * data/lalr1.cc (yy_reduce_print_): Add a missing end-of-line.
+
+2007-01-15  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up %define and %code implementation in M4 some.  Most
+       importantly, rename all related macros to be in the b4_percent_define
+       and b4_percent_code namespaces.  Also, complete support for `.' in
+       %define variable names and %code qualifiers.
+       * data/bison.m4 (b4_check_user_names): Check for special
+       "SKELETON-NAMESPACE(name)" macros instead of using two nested
+       m4_foreach loops.
+       (b4_get_percent_define, b4_get_percent_code): Rename to...
+       (b4_percent_define_get, b4_percent_code_get): ... these.
+       Extend documentation with examples.
+       For SKELETON-NAMESPACE (as documented for b4_check_user_names), use
+       b4_percent_define_skeleton_variables and
+       b4_percent_code_skeleton_qualifiers.
+       Expect any value for the %define variable `foo' to be stored in the
+       macro named `b4_percent_define(foo)'; expect any %code blocks for the
+       qualifier `foo' to be stored in a macro named `b4_percent_code(foo)';
+       expect any unqualified %code blocks to be stored in a macro named
+       `b4_percent_code_unqualified'.
+       Use m4_indir so that %define variable names and %code qualifiers can
+       contain `.', which is allowed by the grammar parser.
+       (b4_percent_define_default): New macro to set a default value for a
+       %define variable.
+       (m4_wrap): Update wrapped code, and fix some underquoting.
+       (b4_check_user_names_wrap): Update and define outside the m4_wrap.
+       Expect grammar uses of %define variables and %code qualifiers to be
+       defined in b4_percent_define_user_variables and
+       b4_percent_code_user_qualifiers.
+       * data/c++.m4: Use b4_percent_define_default rather than
+       m4_define_default.  Fix some underquoting.  Skeleton usage of %define
+       variable define_location_comparison now implies skeleton usage of
+       %define variable filename_type.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       data/push.c, data/yacc.c: Update macro names.
+       * src/parse-gram.y (prologue_declaration, grammar_declaration): Update
+       muscle names.
+
+2007-01-14  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+       DJGPP specific issues.
+
+       * djgpp/config.site: Set ac_cv_path_mkdir to a sane DJGPP specific
+       default.  Set gl_cv_absolute_wctype_h to a sane DJGPP specific default.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/glr-regression.at: Use AT_PARSER_CHECK rather than AT_CHECK to
+       run parsers in all tests so that Valgrind is invoked during
+       maintainer-check-valgrind.
+       (Duplicate representation of merged trees): Free all semantic values.
+       (Duplicated user destructor for lookahead): Likewise.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * tests/local.at (AT_PARSER_CHECK): Add a PRE argument to specify a
+       command-line prefix.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Stderr is
+       ignored, so use that PRE to set --log-fd=1 in VALGRIND_OPTS so we don't
+       miss Valgrind messages.
+       (Exploding the Stack Size with Malloc): Likewise.
+
+2007-01-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Ignore YYSTACK_USE_ALLOCA for push parsers since the stacks can't be
+       locals.  Reported by Juan Manuel Guerrero at
+       <http://lists.gnu.org/archive/html/bug-bison/2007-01/msg00000.html>.
+       * data/push.c: Enclose the #ifdef YYSTACK_USE_ALLOCA in b4_push_if.
+       Fix some indentation also.
+       * tests/torture.at (Exploding the Stack Size with Alloca): Add comment
+       explaining this issue.
+
+2007-01-09  Paolo Bonzini  <bonzini@gnu.org>
+       and Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Simplify union and prologue handling, and escape union and lex/parse
+       params with digraphs.
+       * data/bison.m4 (b4_pre_prologue, b4_post_prologue): Set their default
+       values to the empty string since these are no longer guaranteed
+       initialized by the front-end.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/push.c, data/yacc.c: Add
+       braces around b4_user_stype since this is no longer done by the
+       front-end.
+       * src/files.c, src/files.h (pre_prologue_obstack,
+       post_prologue_obstack): Remove.
+       * src/muscle_tab.c (muscle_pair_list_grow): Don't duplicate header
+       comments here.  Use MUSCLE_OBSTACK_SGROW so that values are escaped
+       with digraphs.  This fixes lex params and parse params.
+       * src/muscle_tab.h (muscle_pair_list_grow): Update comments.
+       * src/output.c (prepare): Remove muscle insertion of the prologues.
+       (output): Remove freeing of pre_prologue_obstack and
+       post_prologue_obstack.
+       * src/parse-gram.y (prologue_declaration): Use muscle_code_grow rather
+       than prologue_augment for prologue parsing so you don't need prologue
+       obstacks.
+       (grammar_declaration): For %union RHS, use `braceless' instead of
+       "{...}" so that braces are already stripped and code is escaped with
+       digraphs.
+       * src/reader.c (prologue_augment): Remove.
+       (reader): Remove initialization of pre_prologue_obstack and
+       post_prologue_obstack.
+       * src/reader.h (prologue_augment): Remove.
+
+       * data/c.m4: Remove stray parenthesis.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Remove quotes from variables names in %define directives and from
+       qualifiers in %code directives, and restrict the characters that are
+       allowed in them to M4-friendly ones.  For %define, continue to support
+       the quoted form as a deprecated feature.  Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00023.html>.
+       * NEWS (2.3a+): Add entry for the change to %define.  Update entry for
+       %code.
+       * doc/bison.texinfo (Prologue Alternatives): Update.
+       (Decl Summary): In %defines entry, update mention of `%code requires'
+       and `%code provides'.
+       (C++ Location Values): Update %define uses.
+       (Calc++ Parser Interface): Likewise.
+       (Calc++ Parser): Likewise, and update `%code requires' uses.
+       (Table of Symbols): Update %code documentation.
+       * src/parse-gram.y (prologue_declaration): For %define variables, use
+       `variable' instead of `STRING'.
+       (grammar_declaration): For %code qualifiers, use `ID' instead of
+       `STRING'.
+       (variable): New nonterminal that takes an `ID' or a `STRING'.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update %code
+       and %define uses.
+       * tests/calc.at (_AT_DATA_CALC_Y): Update %define use.
+       * tests/input.at (Reject unused %code qualifiers): Update %code uses.
+       (%define errors): Update %define uses.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/parse-gram.y (prologue_declaration): Use MUSCLE_INSERT_STRING
+       instead of muscle_insert for %define values so that M4-special
+       characters are replaced with digraphs.
+       * tests/input.at (%define errors): Extend to check weird values.
+
+2007-01-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Instead of having skeletons declare all valid %define variables and
+       %code qualifiers, provide macros that retrieve the associated values
+       and build these lists automatically.  Thus Bison will now warn when a
+       variable or qualifier is not used by the skeleton in the current
+       invocation regardless of whether it might sometimes be used by that
+       skeleton in other invocations.  Also, move all %define value macros to
+       the b4_percent_define_ namespace, and remove the %define "NAME" {CODE}
+       form, which is replaced by %code.
+       * data/bison.m4 (b4_check_for_unrecognized_names): Rename to...
+       (b4_check_user_names): ... this, and change the series of valid name
+       arguments to a single list argument for names used in the skeleton
+       similar to the existing list argument for names used in the grammar.
+       Warn instead of complaining.
+       (b4_get_percent_define, b4_get_percent_code): New to retrieve %define
+       values and %code code, to format %code code properly, and to build
+       lists of all %define variables and %code qualifiers used in the
+       skeleton: b4_skeleton_percent_define_variables and
+       b4_skeleton_percent_code_qualifiers.
+       (b4_check_percent_define_variables, b4_check_percent_code_qualifiers):
+       Remove, and...
+       (m4_wrap): ... m4_wrap b4_check_user_names invocations instead so that
+       the skeleton names lists can finish building first.  In place of
+       b4_used_percent_define_variables and b4_used_percent_code_qualifiers,
+       expect the lists b4_user_percent_define_variables and
+       b4_user_percent_code_qualifiers.
+       * data/c++.m4: Where setting default values for b4_parser_class_name,
+       b4_location_type, b4_filename_type, b4_namespace, and
+       b4_define_location_comparison, update their names to the
+       b4_percent_define_ namespace.
+       * data/glr.c: Don't use b4_check_percent_define_variables and
+       b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
+       * data/glr.cc, data/lalr1.cc: Likewise, and use b4_get_percent_define.
+       (b4_parser_class_name, b4_namespace): Define these using
+       b4_get_percent_define for parser_class_name and namespace.
+       * data/location.cc: Use b4_get_percent_define.
+       * data/push.c: Don't use b4_check_percent_define_variables and
+       b4_check_percent_code_qualifiers.  Use b4_get_percent_code.
+       * data/yacc.c: Likewise, and don't call m4_exit in
+       b4_use_push_for_pull_if or m4_wrap code will never execute.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_grow_used_name_list):
+       Rename to...
+       (muscle_grow_user_name_list): ... this for consistency with the
+       terminology used in bison.m4.
+       * src/parse-gram.y (prologue_declaration): Prepend "percent_define_" to
+       %define variable names, and rename muscle used_percent_define_variables
+       to user_percent_define_variables.
+       (grammar_declaration): Rename muscle used_percent_code_qualifiers to
+       user_percent_code_qualifiers.
+       (content): Remove.
+       (content.opt): Replace content RHS with STRING RHS so %define "NAME"
+       {CODE} form is no longer accepted.
+       * tests/input.at (Reject bad %code qualifiers): Rename to...
+       (Reject unused %code qualifiers): ... this, and update test output.
+       (%define error): Update test output.
+
+2007-01-07  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Check for unrecognized %define variables similar to checking for
+       unrecognized %code qualifiers.  Check for redefined %define variables.
+       * data/bison.m4 (b4_check_for_unrecognized_names): New macro that
+       generalizes...
+       (b4_check_percent_code_qualifiers): ... this, which now wraps it.
+       (b4_check_percent_define_variables): New, also wraps it.
+       * data/glr.c: Unless glr.cc is wrapping glr.c, declare no valid %define
+       variables using b4_check_percent_define_variables.
+       * data/glr.cc, data/lalr1.cc: Declare the valid %define variables as
+       all those exercised in the test suite and all those listed in the
+       `Default values' section of c++.m4.  Are there others?
+       * data/push.c, data/yacc.c: Declare no valid %define variables.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_find_const): New function,
+       similar to muscle_find, but it works even when the muscle stores a
+       const value.
+       (muscle_grow_used_name_list): New function for constructing the used
+       name list muscles that b4_check_for_unrecognized_names requires.
+       * src/parse-gram.y (prologue_declaration): Warn if a variable is
+       %define'd more than once.  Define the b4_used_percent_define_variables
+       muscle with muscle_grow_used_name_list.
+       (grammar_declaration): Abbreviate %code code with
+       muscle_grow_used_name_list.
+       * tests/input.at (%define errors): New.
+
+2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Provide warn_at, complain_at, and fatal_at function callbacks to the
+       skeletons, and use this for %code qualifier complaints.
+       * data/bison.m4 (b4_error_at): New, invoked by...
+       (b4_warn_at, b4_complain_at, b4_fatal_at): ... these new macros to wrap
+       the skeleton scanner's new @warn_at(...@), @complain_at(...@), and
+       @fatal_at(...@) directives.
+       (b4_check_percent_code_qualifiers): Rewrite to expect locations for
+       qualifiers in b4_used_percent_code_qualifiers and to use
+       b4_complain_at.
+       * src/location.c, src/location.h (boundary_set_from_string): New global
+       function.
+       * src/muscle_tab.c, src/muscle_tab.h (muscle_boundary_grow): New global
+       function.
+       * src/parse-gram.y (grammar_declaration): Add locations for qualifiers
+       to b4_used_percent_code_qualifiers.
+       * src/scan-skel.l (fail_for_at_directive_too_few_args): New static
+       function.
+       (AT_DIRECTIVE_ARGC_MAX): Increase for boundary arguments.
+       (lineno): Rename to...
+       (out_lineno): ... this so I don't misunderstand it again.
+       (SC_AT_DIRECTIVE_SKIP_WS): Don't increment out_lineno for newlines
+       here; these newlines are in the input but not the output file.
+       (SC_AT_DIRECTIVE_ARG): Likewise.  Extract directive execution to...
+       (at_directive_perform): ... this new static function, and add handling
+       of new @warn_at(...@), @complain_at(...@), and @fatal_at(...@)
+       directives.
+       * tests/input.at (Reject bad %code qualifiers): Update test output with
+       locations and extend.
+
+       * tests/output.at (Output file name: [, Output file name: ]): Remove
+       bogus comment about these tests failing.
+
+2007-01-06  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Clean up b4_check_percent_code_qualifiers a little.
+       * data/bison.m4 (b4_check_percent_code_qualifiers): Expect qualifiers
+       in b4_used_percent_code_qualifiers to be double-M4-quoted.  Rewrite
+       documentation and add examples.
+       * src/parse-gram.y (grammar_declaration): Double-M4-quote those
+       qualifiers here.
+
+2007-01-05  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Don't use m4_divert since it makes m4_divert_push and m4_divert_pop
+       unreliable -- especially when they're hidden inside another macro.
+       * data/bison.m4, data/c++-skel.m4, data/c++.m4, data/c-skel.m4,
+       data/c.m4: Remove m4_divert(-1).
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/location.cc,
+       data/push.c, data/yacc.c: Likewise, and replace m4_divert(0) with
+       m4_divert_push(0) and m4_divert_pop(0).
+       * src/output.c (output_skeleton): Don't add an m4_divert_push(0) and
+       an m4_wrap([m4_divert_pop(0)]) to the M4.  Diversion -1, which is
+       pushed and popped by m4sugar, should be first on the stack.
+
+       Provide warn, complain, and fatal function callbacks to the skeletons.
+       This provides more flexibility than m4_fatal, improves the error
+       message format, and captures messages for translation.  Discussed
+       starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00063.html>.
+       * data/bison.m4 (b4_error): New, invoked by...
+       (b4_warn, b4_complain, b4_fatal): ... these new macros to wrap the
+       skeleton scanner's new @warn(...@), @complain(...@), and @fatal(...@)
+       directives.  Because these M4 macros might be called when the current
+       diversion is -1 or 0, m4_divert_push and m4_divert_pop is used; thus
+       the previous removal of uses of m4_divert, which caused trouble.
+       (b4_check_percent_code_qualifiers): Use b4_complain instead of
+       m4_fatal to report unrecognized %code qualifiers.
+       * data/c++-skel.m4: Use b4_complain instead of m4_fatal to report C++
+       push parser requests.
+       * data/glr.c: Use b4_complain instead of m4_fatal to report
+       non-deterministic push parser requests.
+       Update @output usage to @output(...@) form.
+       * data/glr.cc, data/lalr1.cc: Use b4_fatal instead of m4_fatal to
+       report missing %defines.  Update @output usage to @output(...@) form.
+       * data/location.cc, data/push.c, data/yacc.c: Update @output usage to
+       @output(...@) form.
+       * src/main.c (main): Invoke skel_scanner_free.
+       * src/scan-skel.h (skel_scanner_free): Prototype new function.
+       * src/scan-skel.l (FLEX_NO_OBSTACK): Don't define; we now need the
+       obstack_for_string from flex-scanner.h.
+       (YY_DECL): Use to declare skel_lex static.
+       (decode_at_digraphs): Remove; now handled in the new
+       SC_AT_DIRECTIVE_ARG start condition.
+       (fail_for_at_directive_too_many_args, fail_for_invalid_at): New static
+       functions.
+       (at_directive_name, AT_DIRECTIVE_ARGC_MAX, at_directive_argc,
+       at_directive_argv): New static globals.
+       (INITIAL): Use fail_for_invalid_at.
+       Don't parse `@output file_name\n' or `@basename(...@)'.  Instead,
+       recognize the start of a generalized `@directive(...@)' form and
+       start...
+       (SC_AT_DIRECTIVE_ARG): ... this new start condition to parse the
+       directive args (using the new obstack_for_string), to decode the
+       contained @ diagraphs, and to perform the directive.  It recognizes
+       @basename(...@), @warn(...@), @complain(...@), @fatal(...@), and
+       @output(...@).
+       (SC_AT_DIRECTIVE_SKIP_WS): New start condition started by
+       SC_AT_DIRECTIVE_ARG to skip whitespace after the argument delimiter,
+       `@,'.
+       (scan_skel): Initialize obstack_for_string on the first call.
+       (skel_scanner_free): New function to free obstack_for_string.
+       * tests/input.at (Reject bad %code qualifiers): Update test output.
+
+2007-01-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Consolidate the 4 prologue alternative directives (%code, %requires,
+       %provides, and %code-top) into a single %code directive with an
+       optional qualifier field.  Discussed at
+       <http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>.
+       * NEWS (2.3a+): Rewrite the existing entry for the prologue
+       alternatives.
+       * doc/bison.texinfo (Prologue Alternatives): Update.
+       (Decl Summary): Update to %code "requires" and %code "provides".
+       (Calc++ Parser): Update to %code "requires".
+       (Table of Symbols): Remove entries for %requires, %provides, and
+       %code-top.  Rewrite %code entry, and add a %code "QUALIFIER" entry.
+       * data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these
+       are replaced by b4_percent_code_provides and b4_percent_code_requires,
+       which are skeleton-specific.
+       (b4_check_percent_code_qualifiers): New.  A skeleton can use this to
+       declare what %code qualifiers it supports and to complain if any other
+       qualifiers were used in the grammar.
+       * data/glr.cc: Update to use b4_user_code([b4_percent_code_requires])
+       and b4_user_code([b4_percent_code_provides]) in place of
+       b4_user_requires and b4_user_provides.
+       * data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise.
+       Add b4_user_code([b4_percent_code_top]) and
+       b4_user_code([b4_percent_code]).
+       Invoke b4_check_percent_code_qualifiers.
+       * src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES,
+       PERCENT_REQUIRES): Remove.
+       (grammar_declaration): Remove RHS's for %code-top, %provides, and
+       %requires.  Rewrite the %code RHS as the unqualified form defining the
+       muscle b4_percent_code.  Add another RHS for the qualified %code form,
+       which defines muscles of the form b4_percent_code_QUALIFIER and the
+       b4_used_percent_code_qualifiers muscle.
+       * src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES,
+       PERCENT_REQUIRES): Remove.
+       * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use
+       %code "requires" and %code "provides".
+       * tests/input.at (Reject bad %code qualifiers): New.
+
+2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface for destructors and printers.
+       * src/symtab.h (symbol, semantic_type): Remove destructor_location and
+       printer_location members, and change the type of the destructor and
+       printer members to code_props.
+       (symbol_destructor_set, symbol_destructor_get, symbol_printer_set,
+       symbol_printer_get, semantic_type_destructor_set,
+       semantic_type_printer_set, default_tagged_destructor_set,
+       default_tagless_destructor_set, default_tagged_printer_set,
+       default_tagless_printer_set): Use code_props in arguments and return
+       types in place of char const * and location.
+       (symbol_destructor_location_get, symbol_printer_location_get): Remove
+       since the locations are now contained in the return of
+       symbol_destructor_get and symbol_printer_get.
+       * src/output.c (symbol_destructors_output, symbol_printers_output):
+       Replace with...
+       (symbol_code_props_output): ... this to eliminate duplicate code.
+       (output_skeleton): Update to use symbol_code_props_output.
+       * src/reader.c (symbol_should_be_used): Update use of
+       symbol_destructor_get.
+       * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
+       Update uses of the various _destructor_set and _printer_set functions.
+       * src/symtab.c: (default_tagged_destructor_location,
+       default_tagless_destructor_location, default_tagged_printer_location,
+       default_tagless_printer_location): Remove since we...
+       (default_tagged_destructor, default_tagless_destructor,
+       default_tagged_printer, default_tagless_printer): ... change the type
+       of these to code_props.
+       (symbol_new, semantic_type_new, symbol_destructor_set,
+       semantic_type_destructor_set, symbol_destructor_get,
+       symbol_printer_set, semantic_type_printer_set, symbol_printer_get,
+       symbol_check_alias_consistency, default_tagged_destructor_set,
+       default_tagless_destructor_set, default_tagged_printer_set,
+       default_tagless_printer_set): Update.
+       (symbol_destructor_location_get, symbol_printer_location_get): Remove.
+       (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for
+       code_props members.
+       (symbol_print): Use SYMBOL_CODE_PRINT.
+
+2007-01-03  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface for rule actions.
+       * src/symlist.h (symbol_list): Replace action, action_location, and
+       used members with a code_props action_props member.
+       * src/reader.c (symbol_should_be_used, grammar_rule_check,
+       grammar_midrule_action, grammar_current_rule_merge_set,
+       grammar_current_rule_symbol_append, packgram): Update.
+       * src/scan-code.h (translate_rule_action): Remove, no longer used.
+       * src/scan-code.l (handle_action_dollar): Update.
+       (translate_rule_action): Remove, no longer used.
+       * src/symlist.c (symbol_list_sym_new, symbol_list_syms_print): Update.
+
+2007-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Use the new code_props interface in parse-gram.y.
+       * src/parse-gram.y (prologue_declaration, braceless, epilogue.opt):
+       Update all uses of translate_* functions to use the new code_props
+       interface and to use gram_scanner_last_string_free and
+       code_scanner_last_string_free where possible.
+       (grammar_declaration): symbol_list_destructor_set and
+       symbol_list_printer_set now perform the translation, so don't do it
+       here.  Use gram_scanner_last_string_free where possible.
+       * src/scan-code.h, src/scan-code.l (translate_symbol_action,
+       translate_code): Remove, no longer used.
+       * src/symlist.h, src/symlist.c (symbol_list_destructor_set,
+       symbol_list_printer_set): Perform code translation here rather than
+       depending on the caller to do so.
+
+       * src/symlist.h (struct symbol_list): Correct some documentation typos.
+       * src/scan-gram.h (gram_last_string): Remove declaration.
+       * src/scan-gram.l (last_string): Declare it static.
+
+2007-01-02  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Encapsulate code properties and related functionality for the various
+       destructors, printers, and actions into a code_props structure and
+       interface.  This patch merely implements code_props in scan-code.h and
+       scan-code.l.  Future patches will rewrite other modules to use it.
+       Discussed starting at
+       <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00020.html>.
+       * src/location.h (EMPTY_LOCATION_INIT): Define so that it's easier to
+       consistently initialize const structs that have an empty location
+       field.
+       * src/location.c (empty_location): Initialize with EMPTY_LOCATION_INIT
+       to ensure consistency.
+       * src/scan-code.h (code_props): New structure.
+       (code_props_none_init, CODE_PROPS_NONE_INIT, code_props_none): New
+       function, macro, and const global variable for initializing a
+       code_props with no code.
+       (code_props_plain_init, code_props_symbol_action_init,
+       code_props_rule_action_init, code_props_translate_code): The rest of
+       the new code_props functional interface.  Among other things, the init
+       functions set the code_props kind field so that
+       code_props_translate_code will know whether to behave like
+       translate_symbol_action, translate_rule_action, or translate_code.
+       These old translate functions must remain until all other modules are
+       updated to use the new code_props interface.
+       (code_scanner_last_string_free): New function similar to
+       gram_scanner_last_string_free.
+       (code_scanner_free): Add documentation.
+       * src/scan-code.l: Implement the new interface.
+       (code_lex): Make it static, add a code_props* argument, and remove the
+       rule argument.
+       (last_string): New static global similar to the one in scan-gram.l.
+       (SC_RULE_ACTION): Update to use the code_props* argument to code_lex
+       instead of rule.
+       (SC_SYMBOL_ACTION): For $$, set the is_value_used member of the
+       code_props since Bison may one day use this information for destructors
+       and printers.
+       (<*><<EOF>>): Use STRING_FINISH so that last_string is set.
+       (handle_action_dollar): Use symbol_list_n_get and set used flag
+       directly since symbol_list_n_used_set is removed.
+       (translate_action): Add a code_props* argument and remove the rule,
+       action, and location arguments.  Pass the code_props* on to code_lex.
+       (translate_rule_action, translate_symbol_action, translate_code):
+       Rewrite as wrappers around the new code_props interface.
+       * src/symlist.h, src/symlist.c (symbol_list_n_used_set): Remove since
+       it would eventually need to break the encapsulation of code_props.
+
+2007-01-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * etc/.cvsignore: New.
+
+2007-01-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Add maintainer-push-check to run maintainer-check using push parsing in
+       place of pull parsing where available.
+       * Makefile.am (maintainer-push-check): New.
+       * data/bison.m4 (b4_use_push_for_pull_if): New.
+       * data/push.c: Redefine b4_push_if and b4_use_push_for_pull_if
+       appropriately based on their existing values.
+       (yypush_parse): Don't print push-parser-specific diagnostics if push
+       parsing is being used in place of pull parsing.
+       * data/yacc.c: If push parsing should replace pull parsing, redirect to
+       push.c.
+       * src/output.c (prepare): Check BISON_USE_PUSH_FOR_PULL environment
+       variable, and insert b4_use_push_for_pull_flag into muscles.
+       * tests/Makefile.am (maintainer-push-check): New.
+
+2006-12-31  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * data/push.c (yypush_parse): Set yynew = 1 at the end of a parse
+       (whether successful or failed) so that yypush_parse can be invoked
+       again to start a new parse using the same yypstate.
+       * tests/torture.at (AT_DATA_STACK_TORTURE): For push mode, extend to
+       check multiple yypull_parse invocations on the same yypstate.  For pull
+       mode, extend to check multiple yyparse invocations.
+       (Exploding the Stack Size with Alloca): Extend to try with
+       %push-pull-parser.
+       (Exploding the Stack Size with Malloc): Likewise.
+
+       * tests/calc.at (Simple LALR Calculator): Don't specify
+       %skeleton "push.c" since %push-pull-parser implies that now.
+       * tests/headers.at (export YYLTYPE): Don't check for the push
+       declarations.  Otherwise, this test case can't be used to see if push
+       mode can truly emulate pull mode.
+       * tests/input.at (Torturing the Scanner): Likewise.
+       * tests/local.at (AT_YACC_OR_PUSH_IF, AT_PUSH_IF): Remove.
+       (AT_YYERROR_SEES_LOC_IF): Rather than AT_YACC_OR_PUSH_IF, use
+       AT_YACC_IF, which now includes the case of push mode since %skeleton
+       need not be used for push mode.  This will be more intuitive once
+       push.c is renamed to yacc.c.
+
 2006-12-31  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        For push mode, convert yyparse from a macro to a function, invoke yylex
        documentation instead.
        (Calc++ Parser): Use `%require "@value{VERSION}"' rather than
        `%require "2.3b"' so that the example is always up-to-date.
-       (Bison Symbols): Add entries for %language and %skeleton.
+       (Table of Symbols): Add entries for %language and %skeleton.
        * examples/extexi (normalize): Instead of replacing every %require
        argument with the current Bison version, just substitute for
        `@value{VERSION}'.  This guarantees that we're testing what actually
 
        * doc/bison.texinfo (C++ Parser Interface): Prefer %language
        over %skeleton.
-       (Directives): Document %language and %skeleton.
+       (Decl Summary): Document %language and %skeleton.
        (Command line): Document -L.
 
        * examples/extexi: Rewrite %require directive.
        (2.3a): Annotate this entry to say the old forms of these features were
        also experimental.
        * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
-       Bison Symbols): Say they're experimental.  Comment out any mention
+       Table of Symbols): Say they're experimental.  Comment out any mention
        of Java (we'll want this back eventually).
 
 2006-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
        %file-prefix, %name-prefix, and %output.  Discussed at
        <http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
        * NEWS (2.3a+): Mention.
-       * doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new
+       * doc/bison.texinfo (Decl Summary, Table of Symbols): Add entry for new
        form of %defines, and remove `=' from entries for %file-prefix,
        %name-prefix, and %output.
        * src/parse-gram.y (prologue_declaration): Implement.
        Rename <!> to <>.  Discussed starting at
        <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
        * NEWS (2.3a+): Update.
-       * doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols):
+       * doc/bison.texinfo (Freeing Discarded Symbols, Table of Symbols):
        Update.
        * src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
        * src/scan-gram.l (INITIAL): Implement.
        * NEWS (2.3a+): Mention.
        * doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
        previous change today related to mid-rules.
-       (Bison Symbols): Remove %symbol-default and add <*> and <!>.
+       (Table of Symbols): Remove %symbol-default and add <*> and <!>.
        * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
        (TYPE_TAG_ANY): Add as <*>.
        (TYPE_TAG_NONE): Add as <!>.
        alternatives to...
        (Prologue Alternatives): ... this new section, and extend it to discuss
        all 4 directives in detail.
-       (Bison Symbols): Clean up discussion of prologue alternatives and add
-       %code-top.
+       (Table of Symbols): Clean up discussion of prologue alternatives and
+       add %code-top.
 
 2006-10-16  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 
        <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
        * NEWS (2.3+): Add %symbol-default to example.
        * bison.texinfo (Freeing Discarded Symbols): Likewise.
-       (Bison Symbols): Add entry for %symbol-default.
+       (Table of Symbols): Add entry for %symbol-default.
        * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
        (generic_symlist, generic_symlist_item): New nonterminals for creating
        a list in which each item is a symbol, semantic type, or
        * doc/bison.texinfo (The prologue): Update names, and replace remaining
        prologue blocks with %*-header declarations.
        (Calc++ Parser): Likewise.
-       (Bison Declaration Summary): Update names.
-       (Bison Symbols): Update description.
+       (Decl Summary): Update names.
+       (Table of Symbols): Update description.
        * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
        (PERCENT_END_HEADER): ... this.
        (PERCENT_BEFORE_DEFINITIONS): Update to...
        header and code file.
        * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
        of prologues for %union dependencies.
-       (Bison Declaration Summary): In %defines description, mention the
-       effect of %before-definitions and %after-definitions on the header
-       file.
+       (Decl Summary): In %defines description, mention the effect of
+       %before-definitions and %after-definitions on the header file.
        (Calc++ Parser): Forward declare driver in a %before-definitions rather
        than in the pre-prologue so that make check succeeds.
-       (Bison Symbols): Add entries for %before-definitions and
+       (Table of Symbols): Add entries for %before-definitions and
        %after-definitions.
        * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
        %before-definitions.
        in the yychar entry.
        In the yychar entry, remove mention of the local yychar case (pure
        parser) since this is irrelevant information when writing semantic
-       actions and since it's already discussed in `Bison Symbols' where
+       actions and since it's already discussed in `Table of Symbols' where
        yychar is otherwise described as an external variable.
        In the yychar entry, don't call it the `current' look-ahead since it
        isn't when semantic actions are deferred.
        `current' look-ahead, and do mention yylval and yylloc.
        (Error Recovery): Cross-reference `Action Features' when mentioning
        yyclearin.
-       (Bison Symbols): In the yychar entry, don't call it the `current'
+       (Table of Symbols): In the yychar entry, don't call it the `current'
        look-ahead.
        In the yylloc and yylval entries, mention look-ahead usage.
 
        -----
 
        Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
-       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
-       Software Foundation, Inc.
+       1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+       Free Software Foundation, Inc.
 
        Copying and distribution of this file, with or without
        modification, are permitted provided the copyright notice and this