X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/5d31a2162dc41b71b9de73a3acb7fcba6fb8e7f3..f3a4495d67a3c6692c963c7a7dcd46fd6bdafb7b:/ChangeLog

diff --git a/ChangeLog b/ChangeLog
index ffb7d5c0..d163147c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,870 @@
+2008-02-06  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
+
+	DJGPP specific issues.
+	* djgpp/config.bat: Add filenames that are not 8.3 clean and that must
+	be changed.  Copyright timestamp adjusted.
+	* djgpp/config.sed: Add filenames that are not 8.3 clean and that must
+	be changed.  Copyright timestamp adjusted.
+	* djgpp/config.site: Copyright timestamp adjusted.
+	* djgpp/config_h.sed: Copyright timestamp adjusted.
+	* djgpp/djunpack.bat: Copyright timestamp adjusted.
+	* djgpp/fnchnage.lst: Add filenames that are not 8.3 clean to the
+	filename translation list.
+	* djgpp/subpipe.c (init_subpipe): Check the environment variables
+	TMPDIR, TMP and TEMP, in that order, to determinate where the temp
+	files shall be created.  Before trying to use the temp dir where the
+	environment variable points to check that the dir really exists. If
+	not default to the cwd as temp dir.  Copyright timestamp adjusted.
+	* djgpp/subpipe.h: Copyright timestamp adjusted.
+	* djgpp/testsuite.sed: Copyright timestamp adjusted.
+
+2008-01-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* doc/bison.texinfo: Update Back-Cover text to reflect new GNU wording.
+
+2008-01-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+	* data/yacc.c (yyparse): Correct the comment when locations aren't used.
+	Problem reported by Claudio Saavedra in
+	<http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.
+
+2008-01-05  Wojciech Polak  <polak@gnu.org>
+
+	* data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
+	document's title with the input grammar file name.
+
+2007-12-22  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Automate regression testing of the XML/XSLT implementation.  Discussed
+	starting at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
+	* configure.ac (XSLTPROC): New substitution.
+	* Makefile.am (maintainer-xml-check): New phony target invoking...
+	* tests/Makefile.am (maintainer-xml-check): ... this new phony target
+	invoking make maintainer-check with BISON_TEST_XML=1.
+	* tests/atlocal.in (XSLTPROC): New.
+	* tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
+	not to report reachable memory when Bison is expected to have a
+	non-zero exit status and (2) to compare XML/XSLT output with --graph
+	and --report=all output for every working grammar when
+	BISON_TEST_XML=1.
+	(AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
+	(AT_BISON_CHECK_XML): New.
+	(AT_QUELL_VALGRIND): New.
+	* tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
+	(AT_CHECK): ... don't redefine this since this was the old way to
+	quell Valgrind.
+	* tests/actions.at: Rewrite all AT_CHECK invocations for bison as
+	AT_BISON_CHECK invocations.
+	* tests/c++.at: Likewise.
+	* tests/calc.at: Likewise.
+	* tests/conflicts.at: Likewise.
+	* tests/cxx-type.at: Likewise.
+	* tests/existing.at: Likewise.
+	* tests/glr-regression.at: Likewise.
+	* tests/headers.at: Likewise.
+	* tests/input.at: Likewise.
+	* tests/java.at: Likewise.
+	* tests/output.at: Likewise.
+	* tests/push.at: Likewise.
+	* tests/reduce.at: Likewise.
+	* tests/regression.at: Likewise.
+	* tests/sets.at: Likewise.
+	* tests/skeletons.at: Likewise.
+	* tests/synclines.at: Likewise.
+	* tests/torture.at: Likewise.
+	(Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
+	tends to hang xsltproc.
+	(Big horizontal): Likewise.
+
+2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	In XML output, remove redundant class attribute on symbol element.
+	* data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
+	* data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
+	look up a symbol to determine whether it's a nonterminal or terminal.
+	* src/gram.c (rule_rhs_print_xml): Remove class attribute.
+	* src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.
+
+	Add prec/assoc information to XML output.
+	* src/gram.c (grammar_rules_print_xml): For each rule that has a
+	%prec, add a percent_prec attribute.
+	* src/print-xml.c (print_grammar): For each terminal that has a
+	precedence or associativity, add a prec or assoc attribute.
+	(xml_indent): New.
+	(xml_puts): Use xml_indent.
+	(xml_printf): Use xml_indent.
+	* src/print-xml.h (xml_indent): Prototype.
+
+	* tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
+	<http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.
+
+2007-12-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* data/xslt/bison.xsl (bison:ruleNumber): Rename to...
+	(bison:ruleByNumber): ... this for clarity.
+	* data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
+	* data/xslt/xml2text.xsl (xsl:template match="item"): Update.
+	(xsl:template match="reduction"): Update.
+	(xsl:template match="item"): Update.
+	(xsl:template match="reduction"): Update.
+
+	In the XML output, don't print the list of rules where symbols appear.
+	Compute it in XSLT instead.  Discussed at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
+	* data/xslt/bison.xsl (bison:ruleByLhs): New.
+	(bison:ruleByRhs): New.
+	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
+	bison:ruleByRhs.
+	(xsl:template match="terminal/rule"): Remove.
+	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
+	bison:ruleByRhs.
+	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+	Remove.
+	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
+	bison:ruleByRhs and mode="number-link" for rule template.
+	(xsl:template match="terminal/rule"): Remove.
+	(xsl:template match="nonterminal"): Use bison:ruleByLhs and
+	bison:ruleByRhs and mode="number-link" for rule template.
+	(xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+	Rewrite as...
+	(xsl:template match="rule" mode="number-link"): ... this.
+	* src/print-xml.c (print_grammar): Don't print the list of rules.
+
+2007-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Don't let --report affect XML output; always print all information.
+	Discussed at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
+	* src/conflicts.c (log_resolution): Implement.
+	* src/print-xml.c (print_core): Implement.
+	(print_state): Implement.
+	(print_xml): Implement.
+
+	* NEWS (2.3a+): Fix quotes.
+	* src/parse-gram.y (prologue_declaration): For consistency with -v,
+	don't let %verbose clear the list specified by --report.
+
+2007-11-26  Akim Demaille  <akim@epita.fr>
+
+	* data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.
+
+2007-11-24  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	In the XML output, list useless and unused symbols and rules with the
+	useful ones and add a "usefulness" attribute.  Discussed starting at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
+	* src/gram.c (grammar_rules_partial_print_xml): Remove.
+	(grammar_rules_print_xml): Print all rules instead of just those
+	useful in the grammar, and add a "usefulness" attribute.
+	* src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
+	* src/print-xml.c (print_rules_useless_in_parser): Remove.
+	(print_grammar): Print all nonterminals instead of just useful ones,
+	and add a "usefulness" attribute to nonterminals and terminals.
+	(print_xml): Don't print a separate "reductions" or
+	"rules-useless-in-parser" element.
+	* src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
+	(reduce_xml): Remove.
+	(reduce_token_unused_in_grammar): New.
+	(reduce_nonterminal_useless_in_grammar): New.
+	* src/reduce.h (reduce_xml): Remove prototype.
+	(reduce_token_unused_in_grammar): Add prototype.
+	(reduce_nonterminal_useless_in_grammar): Add prototype.
+	* data/xslt/xml2text.xsl: Update for XML changes.
+	* data/xslt/xml2xhtml.xsl: Update for XML changes.
+	* tests/reduce.at (Useless Terminals): Update output.
+	(Useless Rules): Update output.
+	(Reduced Automaton): Update output.
+
+	Say "Terminals unused in grammar" instead of "Unused terminals".
+	* NEWS (2.3a+): Update.
+	* doc/bison.texinfo (Understanding): Update example output.
+	* src/reduce.c (reduce_output): Implement.
+	* data/xslt/xml2text.xsl: Implement.
+	* data/xslt/xml2xhtml.xsl: Implement.
+
+2007-11-18  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Accept --report-file=FILE to override the default `.output' filename.
+	* NEWS (2.3a+): Mention.
+	* doc/bison.texinfo (Bison Options): Add an entry.
+	* src/files.c (compute_output_file_names): Don't override
+	spec_verbose_file if already set.
+	* src/getargs.c (usage): Document --report-file.
+	(REPORT_FILE_OPTION): New anonymous enum member.
+	(long_options): Add entry for it.
+	(getargs): Add case for it setting spec_verbose_file.
+
+	* build-aux/cross-options.pl: Don't record a short option just because
+	there's an arg.
+	* doc/.cvsignore: Add yacc.1.
+
+2007-11-14  Akim Demaille  <akim@epita.fr>
+
+	* doc/yacc.1.in: New.
+	* configure.ac, doc/Makefile.am: Adjust.
+	* configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
+	config.h symbol.
+	Use AC_SUBST for assignments too.
+	* src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.
+
+2007-11-10  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* src/gram.c: Remove comments that duplicate comments in gram.h.
+
+	When reporting useless rules and nonterminals, say "useless in grammar"
+	instead of "useless", and say "useless in parser" instead of "never
+	reduced".  Discussed starting at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
+	* NEWS (2.3a+): Mention this change.
+	* data/xslt/xml2text.xsl: Update output text and expected input XML
+	element names to match changes below.
+	* data/xslt/xml2xhtml.xsl: Likewise.
+	(xsl:template match="bison-xml-report"): Add missing entry in Table of
+	Contents: "Rules useless in parser due to conflicts".
+	* doc/bison.texinfo (Decl Summary): Reword a little.
+	(Understanding): Update example output for changes below.
+	* src/gram.c: (rule_useful_p): Rename to...
+	(rule_useful_in_grammar_p): ... this.
+	(rule_useless_p): Rename to...
+	(rule_useless_in_grammar_p): ... this.
+	(rule_never_reduced_p): Rename to...
+	(rule_useless_in_parser_p): ... this.
+	(grammar_rules_print): Update for renames.
+	(grammar_rules_print_xml): Update for renames.
+	(grammar_rules_never_reduced_report): Rename to...
+	(grammar_rules_useless_report): ... this since it is used for either
+	kind of useless rule.
+	* src/gram.h: Reword comments and update function names in prototypes.
+	* src/main.c (main): Say "rule useless in parser due to conflicts".
+	* src/print-xml.c (print_rules_never_reduced): Rename to...
+	(print_rules_useless_in_parser): ... this, and rename output XML
+	element "rules-never-reduced" to "rules-useless-in-parser".
+	(print_xml): Update for rename.
+	* src/print.c (print_results): Say "Rules useless in parser due to
+	conflicts".
+	* src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
+	(nonterminals_reduce): Say "nonterminal useless in grammar".
+	(reduce_output): Say "Nonterminals useless in grammar".
+	Say "Rules useless in grammar".
+	(reduce_xml): Rename output XML element "useless" to
+	"useless-in-grammar".
+	(reduce_print): Don't report the count of grammatically useless rules
+	as "rules never reduced" just because %yacc is specified.
+	In the correct report of this count, say nonterminal(s) and rule(s)
+	"useless in grammar".
+	* tests/conflicts.at (S/R in initial): Update expected output.
+	(Defaulted Conflicted Reduction): Likewise.
+	(Unreachable States After Conflict Resolution): Likewise.
+	* tests/existing.at (GNU pic Grammar): Likewise.
+	* tests/reduce.at (Useless Nonterminals): Likewise.
+	(Useless Rules): Likewise.
+	(Reduced Automaton): Likewise.
+	(Underivable Rules): Likewise.
+	(Empty Language): Likewise.
+
+2007-11-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
+	here document and before the EOF so that BSD's implementation of Bourne
+	shell doesn't parse the delimiter as part of the here document.
+	* doc/.cvsignore: Add cross-options.texi.
+	* src/getargs.c (usage): Add a blank line after the warning categories.
+
+2007-11-08  Paolo Bonzini  <bonzini@gnu.org>
+
+	* data/lalr1.java (Lexer): Remove usage of b4_pure_if.
+
+2007-11-05  Akim Demaille  <akim@epita.fr>
+
+	Remove Id: from bison.1.
+	* doc/Makefile.am (remove_time_stamp): Include the sed invocation.
+	(perl -0777 -pi -e 's/\.PP\nId): New.
+	(.x.1): Use it to ignore the version control revision.
+
+2007-11-05  Akim Demaille  <demaille@gostai.com>
+
+	* build-aux/Makefile.am: Ship cross-options.pl.
+	* doc/Makefile.am: Always refer to cross-options.texi with
+	$(srcdir).
+	(MAINTAINERCLEANFILES): Add it.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Generate the long/short option cross-table.
+	* build-aux/cross-options.pl: New.
+	* doc/Makefile.am (cross-options.texi): New.
+	* doc/bison.texinfo: Use it.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Generate bison.1 using help2man.
+	* doc/common.x, doc/bison.x: New.
+	* doc/Makefile.am (bison.1, .x.1): New.
+	The code is taken from autoconf-2.61/man/Makefile.am.
+	* configure.ac: Look for help2man.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Complete --help.
+	* src/getargs.c (usage): Document -W, make it clear that -d,
+	-g and -x have optional arguments.
+
+2007-11-04  Akim Demaille  <demaille@gostai.com>
+
+	Find sha1sum when named gsha1sum.
+	* bootstrap (find_tool): New.
+	($SHA1SUM): New.
+
+2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Deprecate %pure-parser and add `%define api.pure'.  Discussed starting
+	at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
+	* NEWS (2.3a+): Mention.
+	* data/bison.m4 (b4_pure_if): Don't define it here.
+	* data/c.m4 (b4_identification): Depend on individual skeletons to
+	define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
+	values of the %define variables api.pure or api.push_pull.  Define
+	YYPURE, YYPUSH, and YYPULL accordingly.
+	* data/glr.c: Define b4_pure_if based on `%define api.pure' unless
+	glr.cc has already defined b4_pure_flag.
+	* data/push.c: Define b4_pure_if based on `%define api.pure'.
+	Remove YYPUSH and YYPULL since they're back in b4_identification again.
+	* data/yacc.c Define b4_pure_if based on `%define api.pure'.
+	* doc/bison.texinfo (Pure Decl): Update.
+	(Push Decl): Update.
+	(Decl Summary): Add api.pure to %define entry.
+	In %pure-parser entry, say it's deprecated and reference %define.
+	(Pure Calling): Update.
+	(Error Reporting): Update.
+	(C++ Scanner Interface): Update.
+	(How Can I Reset the Parser): Update.
+	(Table of Symbols): In %pure-parser entry, say it's deprecated and
+	reference %define.
+	* src/getargs.c (pure_parser): Remove global variable.
+	* src/getargs.h (pure_parser): Remove extern.
+	* src/output.c (prepare): Don't define pure_flag muscle.
+	* src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
+	wrapper around `%define api.pure'.
+	* tests/calc.at (Simple LALR Calculator): Update.
+	(Simple GLR Calculator): Update.
+	* tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
+	Update.
+	(GLR: Resolve ambiguity, pure, locations): Update.
+	(GLR: Merge conflicting parses, pure, no locations): Update.
+	(GLR: Merge conflicting parses, pure, locations): Update.
+	* tests/glr-regression.at (Uninitialized location when reporting
+	ambiguity): Update
+	* tests/input.at (Unused %define api.pure): New test case.
+	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
+	AT_PURE_IF and AT_PURE_AND_LOC_IF.
+	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+
+2007-10-28  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	%define push_pull -> %define api.push_pull.  Discussed starting at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
+	* data/push.c: Expect the new name.
+	* data/yacc.c: Likewise.
+	* doc/bison.texinfo (Push Decl): Update.
+	(Decl Summary): Update %define entry.
+	(Push Parser Function): Update.
+	(Pull Parser Function): Update.
+	(Parser Create Function): Update.
+	(Parser Delete Function): Update.
+	* tests/calc.at (Simple LALR Calculator): Update.
+	* tests/input.at (%define enum variables): Update.
+	* tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+	(Push Parsing: Multiple impure instances): Update.
+	(Push Parsing: Unsupported Skeletons): Update.
+	* tests/torture.at (Exploding the Stack Size with Alloca): Update.
+	(Exploding the Stack Size with Malloc): Update.
+
+	* NEWS (2.3a+): Add an entry for the push parser, and clean up the
+	other entries some.
+
+2007-10-27  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	For the XML output's terminal element, rename @number to @token-number,
+	and add @symbol-number.  In the nonterminal element, rename @number to
+	@symbol-number.  Discussed starting at
+	<http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
+	* data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for
+	renames.
+	(xsl:template match="nonterminal"): Likewise.
+	* data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise.
+	(xsl:template match="nonterminal"): Likewise.
+	* src/print-xml.c (print_grammar): Implement.
+
+2007-10-21  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
+	2007-10-11 change, the child elements here are items not rules.
+	(xsl:template match="item"): New.
+	(xsl:template match="rule"): Update for new reduced itemset.
+	(xsl:template match="point"): Remove.
+	(xsl:template match="empty"): For consistency with --graph, don't
+	output "/* empty */".
+	* data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
+	line-wrap, don't pass a negative value as first-line-length since this
+	won't work with the following changes.
+	(xsl:template name="line-wrap"): Simplify slightly.
+	(xsl:template name="ws-search"): Eliminate recursion.
+	* src/print_graph.c (print_core): Don't print a reduction's lookahead
+	set next to an item whose dot is not at the end of the RHS even if it
+	happens to be associated with the same rule.
+
+2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Add %define lr.keep_unreachable_states.
+	* NEWS (2.3a+): Mention it in the entry for unreachable state removal.
+	* doc/bison.texinfo (Decl Summary): Mention it in the %define entry.
+	* src/main.c (main): Implement it.
+	* tests/conflicts.at (Unreachable States After Conflict Resolution):
+	Extend to test it, and fix a typo.
+
+2007-10-19  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* NEWS (2.3a+): Add entry for recent .output file lookahead set fix.
+	* doc/bison.texinfo (Understanding): Remove a bogus lookahead set in
+	the example .output text.
+	* tests/regression.at (Extra lookahead sets in report): Improve wording
+	of comments.
+
+2007-10-17  Wojciech Polak  <polak@gnu.org>
+
+	* src/print-xml.c (print_grammar): Renamed
+	<terminal> and <nonterminal> attributes:
+	"type" to "number" and "symbol" to "name".
+	* data/xslt/xml2text.xsl (xsl:template match="terminal"):
+	Use new attribute names.
+	(xsl:template match="nonterminal"): Likewise.
+	* data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-17  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
+	(Option Cross Key): Likewise.
+
+	* src/print-xml.c (print_core): Don't print a reduction's lookahead set
+	next to an item whose dot is not at the end of the RHS even if it
+	happens to be associated with the same rule.
+	* src/print.c (print_core): Likewise.
+	* tests/conflicts.at (Unresolved SR Conflicts): Update output.
+	(Resolved SR Conflicts): Update output.
+	* tests/regression.at (Extra lookahead sets in report): New test case.
+
+2007-10-11  Wojciech Polak  <polak@gnu.org>
+
+	* src/print-xml.c (print_core): Remove item set
+	redundancy.
+	* data/xslt/bison.xsl (bison:ruleNumber): New key.
+	Improve processing time. Suggested by Joel E. Denny.
+	* data/xslt/xml2dot.xsl (xsl:template name="escape"):
+	Write xsl:param "required" attribute as comment.
+	* data/xslt/xml2text.xsl (xsl:template match="item"): New.
+	(xsl:template match="rule"): Support new reduced itemset.
+	(xsl:template match="point"): Remove.
+	* data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	* src/getargs.c (version): Update copyright year.
+
+2007-10-09  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Make xml2dot.xsl and --graph produce the same output.
+	* data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a `&#10;'
+	instead of a `\n'.  That is, don't add escapes yet or they'll be doubly
+	escaped later.
+	(xsl:template name="output-node"): Use the new escape template instead
+	of the string-replace template directly.
+	(xsl:template name="output-edge"): Likewise.
+	(xsl:template name="escape"): New, escapes backslashes and newlines in
+	addition to quotation marks.
+	* src/graphviz.c (start_graph, output_node, output_edge): Add
+	whitespace to output for legibility.
+
+	Make xml2text.xsl and --report produce the same output, and remove the
+	XML "conflicts" element since a conflict summary is easily extracted
+	from the automaton.
+	* data/xslt/bison.xsl: New.
+	(xsl:template match="state" mode="bison:count-conflicts): New.
+	* data/xslt/xml2text.xsl: Import bison.xsl.
+	(xsl:template match="bison-xml-report"): Instead of styling the
+	"conflicts" element, style the "automaton" element with mode
+	"conflicts".  Unlike the former, the latter lists S/R and R/R
+	conflicts for a state on the same line.
+	(xsl:template match="conflicts"): Remove.
+	(xsl:template match="conflict"): Remove.
+	(xsl:template match="terminal"): Line-wrap the list of rules in which
+	the terminal is used.
+	(xsl:template match="nonterminal"): Likewise for nonterminals.
+	(xsl:template match="automaton" mode="conflicts"): New.
+	(xsl:template match="state" mode="conflicts"): New.
+	(xsl:template name="line-wrap"): New.
+	(xsl:template name="ws-search"): New.
+	* data/xslt/xml2xhtml.xsl: Import bison.xsl.
+	(xsl:template match="bison-xml-report"): Instead of styling the
+	"conflicts" element, style the "automaton" element with mode
+	"conflicts."
+	(xsl:template match="conflicts"): Remove.
+	(xsl:template match="conflict"): Remove.
+	(xsl:template match="automaton" mode="conflicts"): New.
+	(xsl:template match="state" mode="conflicts): New.
+	* src/conflicts.c (conflicts_output_xml): Remove.
+	* src/conflicts.h (conflicts_output_xml): Remove prototype.
+	* src/print-xml.c (print_xml): Don't invoke conflicts_output_xml.
+	* src/print.c (print_grammar): Consistently wrap at the 66th column so
+	the corresponding XSLT is easier.  Also, never wrap between a word and
+	the comma that follows it.
+
+2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Improve C++ namespace support.  Discussed starting at
+	<http://lists.gnu.org/archive/html/help-bison/2007-09/msg00016.html>.
+	* data/c++.m4: (b4_namespace_ref, b4_namespace_open,
+	b4_namespace_close): New macros that interpret the %define variable
+	"namespace" so its value can contain "::" to indicate nested
+	namespaces.
+	* data/glr.cc (b4_namespace): Don't define, and replace all uses with
+	the above macros.
+	* data/lalr1.cc (b4_namespace): Likewise.
+	* data/location.cc (b4_namespace): Likewise.
+	* doc/bison.texinfo (Decl Summary): Move `%define push_pull' entry
+	inside a new table in the general %define entry.  Document `%define
+	namespace' there as well.  Point the %name-prefix entry to it since it
+	explains it more completely in the case of C++.
+	(C++ Bison Interface): Mention `%define namespace' instead of
+	%name-prefix.
+	(Table of Symbols): Remove the `%define push_pull' entry.  The %define
+	entry suffices.
+	* tests/c++.at (Relative namespace references): New test case.
+	(Absolute namespace references): New test case.
+	(Syntactically invalid namespace references): New test case.
+	* tests/input.at (C++ namespace reference errors): New test case.
+
+2007-10-08  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+	Add syncline support and location accessor to internal %define
+	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
@@ -261,38 +1128,38 @@
 
 2007-03-07  Paolo Bonzini  <bonzini@gnu.org>
 
-        * data/java.m4 (b4_single_class_if): Remove.
-        (b4_abstract_if): Look at "%define abstract".
-        (b4_lexer_if): New.
-        (b4_union_name): Rename...
-        (b4_yystype): ... to this.  Map to "%define stype".
-        (b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
-        b4_maybe_throws): Fix quoting.
-        (b4_lex_param_call): Move below to keep b4_*_param_decl close.
-        * data/lalr1.java (Lexer interface): Always define.
-        (Lexer interface within parser class): Remove.
-        (YYLexer class): New, used when "%code lexer" is present.
-        (constructor): When "%code lexer" is used, pass %lex-param
-        to the lexer constructor.
-        (yylex, yyparse): Remove %lex-param from method invocations
-        (YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
-
-        * doc/bison.texinfo (Java Bison Interface): Mention "%define
-        abstract".  Rename "%define union_name" to "%define stype".
-        Rename method names according to previous patch.
-        (Java Scanner Interface): Describe "%code lexer" instead of
-        "%pure-parser" and "%define single_class".
-        (Java Differences): Mention "%code lexer".
-
-        * tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
-        Include scanner here, using macros from tests/local.at.
-        (AT_DATA_CALC_Y): Remove final argument.
-        (_AT_CHECK_JAVA_CALC): Likewise.
-        (AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
-        of %locations and %error-verbose.
-        (main): Test with and without %lex-param.
-        * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
-        (AT_BISON_OPTION_POPDEFS): Pop it.
+	* data/java.m4 (b4_single_class_if): Remove.
+	(b4_abstract_if): Look at "%define abstract".
+	(b4_lexer_if): New.
+	(b4_union_name): Rename...
+	(b4_yystype): ... to this.  Map to "%define stype".
+	(b4_rhs_value, b4_parse_param_decl, b4_lex_param_decl,
+	b4_maybe_throws): Fix quoting.
+	(b4_lex_param_call): Move below to keep b4_*_param_decl close.
+	* data/lalr1.java (Lexer interface): Always define.
+	(Lexer interface within parser class): Remove.
+	(YYLexer class): New, used when "%code lexer" is present.
+	(constructor): When "%code lexer" is used, pass %lex-param
+	to the lexer constructor.
+	(yylex, yyparse): Remove %lex-param from method invocations
+	(YYStack, yyaction, yyparse): Rename b4_union_name to b4_yystype.
+
+	* doc/bison.texinfo (Java Bison Interface): Mention "%define
+	abstract".  Rename "%define union_name" to "%define stype".
+	Rename method names according to previous patch.
+	(Java Scanner Interface): Describe "%code lexer" instead of
+	"%pure-parser" and "%define single_class".
+	(Java Differences): Mention "%code lexer".
+
+	* tests/java.at (_AT_DATA_JAVA_CALC_Y): Remove final argument.
+	Include scanner here, using macros from tests/local.at.
+	(AT_DATA_CALC_Y): Remove final argument.
+	(_AT_CHECK_JAVA_CALC): Likewise.
+	(AT_CHECK_JAVA_CALC): Likewise.  Test all four combinations
+	of %locations and %error-verbose.
+	(main): Test with and without %lex-param.
+	* tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Push AT_LEXPARAM_IF.
+	(AT_BISON_OPTION_POPDEFS): Pop it.
 
 2007-03-07  Juan Manuel Guerrero  <juan.guerrero@gmx.de>