+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 ` '
+ 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.
+