+2008-05-27 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.3b+): New section, empty for now.
+ * configure.ac (AC_INIT): 2.3b -> 2.3b+.
+
+2008-05-27 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.3b): Update release date since there has been a delay in
+ getting the announcements and tarballs out.
+
+2008-05-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS: Version 2.3b.
+ * configure.ac (AC_INIT): Likewise.
+ (PACKAGE_COPYRIGHT_YEAR): Update to 2008.
+
+2008-05-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * HACKING: Don't say don't mention HACKING in the ChangeLog. We've
+ been doing it for years.
+ (Test suite): Mention maintainer-push-check and maintainer-xml-check.
+ (Release Procedure): Add FIXME about make alpha being unmaintained.
+
+2008-05-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/yacc.c: Reformat m4 a little for readability.
+ * src/lalr.c (build_relations): Correct comment.
+
+2008-05-12 Juan Manuel Guerrero <juan.guerrero@gmx.de>
+
+ DJGPP specific issue.
+ * djgpp/config.sed: Fixes required to run configure scripts generated
+ by autoconf 2.62.
+
+2008-05-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * HACKING (Release Procedure): translation@iro.umontreal.ca is now
+ coordinator@translationproject.org.
+
+2008-05-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * THANKS: Add Eric Blake.
+
+2008-04-23 Eric Blake <ebb9@byu.net>
+
+ Revert prior patch, by working around autoconf regression.
+ * tests/output.at (m4_expand): Add workaround for autoconf 2.62.
+ ("Output file name: ("): Uncomment test.
+ ("Output file name: )"): Likewise.
+ Based on an idea from Noah Misch.
+
+2008-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Work-around an Autoconf 2.62 AT_SETUP bug that was not present in
+ 2.61. Reported by Juan Manuel Guerrero at
+ <http://lists.gnu.org/archive/html/bug-bison/2008-04/msg00011.html>.
+ * tests/output.at ("Output file name: ("): Comment out test case for
+ now.
+ ("Output file name: )"): Likewise.
+
+2008-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * GNUmakefile: Update git-version-gen invocation so make dist
+ succeeds.
+
+2008-04-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Update to the current gnulib CVS repository, and fix trigraph handling
+ in Bison.
+ * bootstrap: Update gnulib CVS repository URL.
+ (symlink_to_dir): Encapsulate the code that guarantees the destination
+ directory exists into...
+ (check_dst_dir): ... this new function, and...
+ (cp_mark_as_generated): ... reuse it here so that bootstrap doesn't
+ fail when copying files into lib/uniwidth/.
+ * src/output.c (prepare_symbols): When writing yytname muscles, where
+ symbol names will be encoded in C-string literals, tell quotearg to
+ escape trigraphs. This used to be the default in gnulib.
+ * tests/regression.at (Token definitions): Because of the change in
+ gnulib's quotearg behavior, string_as_id in parse-gram.y no longer
+ escapes trigraphs in symbol names. Thus, yytname no longer has
+ trigraphs unnecessarily doubly escaped. Update test case output.
+ Extend test case to be sure Bison's own error messages will no longer
+ have trigraphs in symbol names unnecessarily escaped once.
+
+2008-04-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix make dist infinite loop reported by Juan Manuel Guerrero at
+ <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00009.html>.
+ * .cvsignore: Add .version.
+ * .version.in: New.
+ * bootstrap.conf (gnulib_modules): Add git-version-gen.
+ * configure.ac (AC_CONFIG_FILES): Add .version.
+ * build-aux/.cvsignore: Add git-version-gen.
+
+2008-03-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.3a+): Mention that -g now takes an argument.
+ * doc/bison.texinfo (Bison Options): Reword -W entry a little for
+ consistency. Update the -g and -x entries now that they take
+ arguments. Use brackets to indicate optional arguments.
+ * src/getargs.c (usage): Explain the relationship between arguments of
+ long and short options more completely. Document --defines and -d
+ separately since the former takes an argument but, for POSIX Yacc, the
+ latter does not.
+ (short_options): Let -W take an optional argument like --warnings.
+ (getargs): Sort cases.
+
+2008-02-28 Akim Demaille <demaille@gostai.com>
+
+ * doc/bison.texinfo: Fix a few typos.
+
+2008-02-28 Akim Demaille <akim@epita.fr>
+
+ * doc/bison.texinfo (Bison Options): Document -W.
+ Based on Joel E. Denny's NEWS entry, and Automake's documentation.
+
+2008-02-28 Akim Demaille <akim@epita.fr>
+
+ * src/getargs.c (short_options): Split and sort for readability.
+ -g and -x take optional arguments, just like their long options.
+ * build-aux/cross-options.pl: Use /x to make the regexp easier to
+ understand.
+ Fix the handling of $opt which resulted in all the argument to be
+ considered as optional.
+
+2008-02-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.3a+): Don't say %language is experimental. Mention Java and
+ say its interface is experimental.
+ * doc/bison.texinfo (Decl Summary): In the %language entry, mention
+ Java.
+ (Bison Options): In the -L and --language entry, mention Java.
+ (Java Bison Interface): Say the interface is experimental.
+ * src/getargs.c (usage): Mention -L and --language.
+
+ * NEWS (2.3a+): Say the push parsing interface is experimental.
+ * doc/bison.texinfo (Push Decl): Likewise.
+ (Decl Summary): Likewise in the "%define api.push_pull" entry.
+ (Push Parser Function): Likewise.
+ (Pull Parser Function): Likewise.
+ (Parser Create Function): Likewise.
+ (Parser Delete Function): Likewise.
+ (Table of Symbols): Likewise in the yypstate_delete, yypstate_new,
+ yypull_parse, and yypush_parse entries.
+
+ * NEWS (2.3a+): Mention XML support, and say the schema is
+ experimental.
+ * doc/bison.texinfo (Bison Options): Mention -x and --xml.
+ * src/getargs.c (usage): Say the XML schema is experimental.
+
+ * NEWS (2.3a+): Say option instead of flag.
+
+2008-02-21 Wojciech Polak <polak@gnu.org>
+
+ * data/xslt/xml2xhtml.xsl (xsl:template match="/"): Change footer
+ text.
+
+2008-02-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix impure push parser compile error reported by Bob Rossi at
+ <http://lists.gnu.org/archive/html/help-bison/2008-02/msg00023.html>.
+ * data/yacc.c: Clean up whitespace in the output a little.
+ (yypstate_allocated): Define for impure push parsers regardless of
+ whether the pull interface is also requested.
+ * tests/push.at (Push Parsing: Multiple impure instances): Extend to
+ check impure push parsers without the pull interface.
+
+ * data/yacc.c (yypstate_new): Don't try to invoke yyerror since
+ yyerror takes arguments specified by %parse-param while yypstate_new
+ does not.
+ * doc/bison.texinfo (Parser Create Function): Document that
+ yypstate_new returns 0 for multiple impure parser instances.
+ * tests/push.at (Push Parsing: Multiple impure instances): Update
+ expected stderr output.
+
+2008-02-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * runtime-po/POTFILES.in (push.c): Remove.
+
+2008-02-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/Makefile.am (dist_pkgdata_DATA): Remove push.c.
+ * data/push.c: Rename to...
+ * data/yacc.c: ... this, overwriting it.
+ * etc/bench.pl.in (bench_grammar): `%pure-parser'-> `%define api.pure'.
+ `%push-pull-parser' -> `%define api.push_pull "both"'.
+ Remove old yacc.c tests, and update push.c tests to yacc.c.
+
+2008-02-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/bison.m4 (b4_percent_code_get): Output %code block comments like
+ `"%code top" blocks' instead of `%code "top" blocks'.
+ * data/push.c: Import yacc.c changes from 2008-01-09 and 2007-08-03.
+ Clean up whitespace in the output a little.
+
+2008-02-16 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix documentation problems reported by Tim Josling at
+ <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00013.html>.
+ * NEWS (2.3a+): Mention removal of --no-parser, -n, and %no-parser.
+ * doc/bison.texinfo (Token Decl): Token numbers are *nonnegative*
+ integers. Explain the effect of literal string aliases on error
+ messages. Copy token 0 documentation from the C++ skeleton
+ documentation.
+
+2008-02-16 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Accept a token number in a %left, %right, or %nonassoc for POSIX
+ conformance. Reported by Tim Josling at
+ <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00010.html>.
+ * NEWS (2.3a+): Mention.
+ * doc/bison.texinfo (Precedence Decl): Describe how literal strings
+ and code numbers are treated by precedence declarations.
+ * src/parse-gram.y (precedence_declaration): Use symbols.prec instead
+ of symbols.1.
+ (symbols.prec): New, just like symbols.1 but uses symbol.prec instead
+ of symbol.
+ (symbol.prec): New, just like symbol but allows INT.
+ * src/symtab.c (symbol_user_token_number_set): Remove an aver that no
+ longer holds.
+ * tests/regression.at (Token number in precedence declaration): New
+ test case.
+
+2008-02-06 Juan Manuel Guerrero <juan.guerrero@gmx.de>
+
+ DJGPP specific issues.
+ * djgpp/config.bat: Add filenames that are not 8.3 clean and that must
+ be changed. Copyright timestamp adjusted.
+ * djgpp/config.sed: Add filenames that are not 8.3 clean and that must
+ be changed. Copyright timestamp adjusted.
+ * djgpp/config.site: Copyright timestamp adjusted.
+ * djgpp/config_h.sed: Copyright timestamp adjusted.
+ * djgpp/djunpack.bat: Copyright timestamp adjusted.
+ * djgpp/fnchnage.lst: Add filenames that are not 8.3 clean to the
+ filename translation list.
+ * djgpp/subpipe.c (init_subpipe): Check the environment variables
+ TMPDIR, TMP and TEMP, in that order, to determinate where the temp
+ files shall be created. Before trying to use the temp dir where the
+ environment variable points to check that the dir really exists. If
+ not default to the cwd as temp dir. Copyright timestamp adjusted.
+ * djgpp/subpipe.h: Copyright timestamp adjusted.
+ * djgpp/testsuite.sed: Copyright timestamp adjusted.
+
+2008-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo: Update Back-Cover text to reflect new GNU wording.
+
+2008-01-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c (yyparse): Correct the comment when locations aren't used.
+ Problem reported by Claudio Saavedra in
+ <http://lists.gnu.org/archive/html/bug-bison/2008-01/msg00003.html>.
+
+2008-01-05 Wojciech Polak <polak@gnu.org>
+
+ * data/xslt/xml2xhtml.xsl (xsl:template match="/"): Precede an XHTML
+ document's title with the input grammar file name.
+
+2007-12-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Automate regression testing of the XML/XSLT implementation. Discussed
+ starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-11/msg00021.html>.
+ * configure.ac (XSLTPROC): New substitution.
+ * Makefile.am (maintainer-xml-check): New phony target invoking...
+ * tests/Makefile.am (maintainer-xml-check): ... this new phony target
+ invoking make maintainer-check with BISON_TEST_XML=1.
+ * tests/atlocal.in (XSLTPROC): New.
+ * tests/local.at (AT_BISON_CHECK): New macro to (1) instruct Valgrind
+ not to report reachable memory when Bison is expected to have a
+ non-zero exit status and (2) to compare XML/XSLT output with --graph
+ and --report=all output for every working grammar when
+ BISON_TEST_XML=1.
+ (AT_BISON_CHECK_NO_XML): Likewise, but skip XML checks.
+ (AT_BISON_CHECK_XML): New.
+ (AT_QUELL_VALGRIND): New.
+ * tests/testsuite.at (ORIGINAL_AT_CHECK): Remove this and...
+ (AT_CHECK): ... don't redefine this since this was the old way to
+ quell Valgrind.
+ * tests/actions.at: Rewrite all AT_CHECK invocations for bison as
+ AT_BISON_CHECK invocations.
+ * tests/c++.at: Likewise.
+ * tests/calc.at: Likewise.
+ * tests/conflicts.at: Likewise.
+ * tests/cxx-type.at: Likewise.
+ * tests/existing.at: Likewise.
+ * tests/glr-regression.at: Likewise.
+ * tests/headers.at: Likewise.
+ * tests/input.at: Likewise.
+ * tests/java.at: Likewise.
+ * tests/output.at: Likewise.
+ * tests/push.at: Likewise.
+ * tests/reduce.at: Likewise.
+ * tests/regression.at: Likewise.
+ * tests/sets.at: Likewise.
+ * tests/skeletons.at: Likewise.
+ * tests/synclines.at: Likewise.
+ * tests/torture.at: Likewise.
+ (Big triangle): Use AT_BISON_CHECK_NO_XML instead since this grammar
+ tends to hang xsltproc.
+ (Big horizontal): Likewise.
+
+2007-12-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In XML output, remove redundant class attribute on symbol element.
+ * data/xslt/bison.xsl (xsl:key name="bison:symbolByName"): New.
+ * data/xslt/xml2xhtml.xsl (xsl:template match="symbol"): Use it to
+ look up a symbol to determine whether it's a nonterminal or terminal.
+ * src/gram.c (rule_rhs_print_xml): Remove class attribute.
+ * src/state.c (state_rule_lookahead_tokens_print_xml): Likewise.
+
+ Add prec/assoc information to XML output.
+ * src/gram.c (grammar_rules_print_xml): For each rule that has a
+ %prec, add a percent_prec attribute.
+ * src/print-xml.c (print_grammar): For each terminal that has a
+ precedence or associativity, add a prec or assoc attribute.
+ (xml_indent): New.
+ (xml_puts): Use xml_indent.
+ (xml_printf): Use xml_indent.
+ * src/print-xml.h (xml_indent): Prototype.
+
+ * tests/existing.at (GNU pic Grammar): Fix a rule miscopied from
+ <http://lists.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.
+
+2007-12-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/xslt/bison.xsl (bison:ruleNumber): Rename to...
+ (bison:ruleByNumber): ... this for clarity.
+ * data/xslt/xml2dot.xsl (xsl:template match="item"): Update.
+ * data/xslt/xml2text.xsl (xsl:template match="item"): Update.
+ (xsl:template match="reduction"): Update.
+ (xsl:template match="item"): Update.
+ (xsl:template match="reduction"): Update.
+
+ In the XML output, don't print the list of rules where symbols appear.
+ Compute it in XSLT instead. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00024.html>.
+ * data/xslt/bison.xsl (bison:ruleByLhs): New.
+ (bison:ruleByRhs): New.
+ * data/xslt/xml2text.xsl (xsl:template match="terminal"): Use
+ bison:ruleByRhs.
+ (xsl:template match="terminal/rule"): Remove.
+ (xsl:template match="nonterminal"): Use bison:ruleByLhs and
+ bison:ruleByRhs.
+ (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+ Remove.
+ * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Use
+ bison:ruleByRhs and mode="number-link" for rule template.
+ (xsl:template match="terminal/rule"): Remove.
+ (xsl:template match="nonterminal"): Use bison:ruleByLhs and
+ bison:ruleByRhs and mode="number-link" for rule template.
+ (xsl:template match="nonterminal/left/rule|nonterminal/right/rule"):
+ Rewrite as...
+ (xsl:template match="rule" mode="number-link"): ... this.
+ * src/print-xml.c (print_grammar): Don't print the list of rules.
+
+2007-12-01 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't let --report affect XML output; always print all information.
+ Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00020.html>.
+ * src/conflicts.c (log_resolution): Implement.
+ * src/print-xml.c (print_core): Implement.
+ (print_state): Implement.
+ (print_xml): Implement.
+
+ * NEWS (2.3a+): Fix quotes.
+ * src/parse-gram.y (prologue_declaration): For consistency with -v,
+ don't let %verbose clear the list specified by --report.
+
+2007-11-26 Akim Demaille <akim@epita.fr>
+
+ * data/Makefile.am (dist_pkgdata_DATA): Ship and install bison.xsl.
+
+2007-11-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In the XML output, list useless and unused symbols and rules with the
+ useful ones and add a "usefulness" attribute. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00017.html>.
+ * src/gram.c (grammar_rules_partial_print_xml): Remove.
+ (grammar_rules_print_xml): Print all rules instead of just those
+ useful in the grammar, and add a "usefulness" attribute.
+ * src/gram.h (grammar_rules_partial_print_xml): Remove prototype.
+ * src/print-xml.c (print_rules_useless_in_parser): Remove.
+ (print_grammar): Print all nonterminals instead of just useful ones,
+ and add a "usefulness" attribute to nonterminals and terminals.
+ (print_xml): Don't print a separate "reductions" or
+ "rules-useless-in-parser" element.
+ * src/reduce.c (reduce_output): Use reduce_token_unused_in_grammar.
+ (reduce_xml): Remove.
+ (reduce_token_unused_in_grammar): New.
+ (reduce_nonterminal_useless_in_grammar): New.
+ * src/reduce.h (reduce_xml): Remove prototype.
+ (reduce_token_unused_in_grammar): Add prototype.
+ (reduce_nonterminal_useless_in_grammar): Add prototype.
+ * data/xslt/xml2text.xsl: Update for XML changes.
+ * data/xslt/xml2xhtml.xsl: Update for XML changes.
+ * tests/reduce.at (Useless Terminals): Update output.
+ (Useless Rules): Update output.
+ (Reduced Automaton): Update output.
+
+ Say "Terminals unused in grammar" instead of "Unused terminals".
+ * NEWS (2.3a+): Update.
+ * doc/bison.texinfo (Understanding): Update example output.
+ * src/reduce.c (reduce_output): Implement.
+ * data/xslt/xml2text.xsl: Implement.
+ * data/xslt/xml2xhtml.xsl: Implement.
+
+2007-11-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Accept --report-file=FILE to override the default `.output' filename.
+ * NEWS (2.3a+): Mention.
+ * doc/bison.texinfo (Bison Options): Add an entry.
+ * src/files.c (compute_output_file_names): Don't override
+ spec_verbose_file if already set.
+ * src/getargs.c (usage): Document --report-file.
+ (REPORT_FILE_OPTION): New anonymous enum member.
+ (long_options): Add entry for it.
+ (getargs): Add case for it setting spec_verbose_file.
+
+ * build-aux/cross-options.pl: Don't record a short option just because
+ there's an arg.
+ * doc/.cvsignore: Add yacc.1.
+
+2007-11-14 Akim Demaille <akim@epita.fr>
+
+ * doc/yacc.1.in: New.
+ * configure.ac, doc/Makefile.am: Adjust.
+ * configure.ac (PACKAGE_COPYRIGHT_YEAR): New substitution, and new
+ config.h symbol.
+ Use AC_SUBST for assignments too.
+ * src/getargs.c (version): Use PACKAGE_COPYRIGHT_YEAR.
+
+2007-11-10 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/gram.c: Remove comments that duplicate comments in gram.h.
+
+ When reporting useless rules and nonterminals, say "useless in grammar"
+ instead of "useless", and say "useless in parser" instead of "never
+ reduced". Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00033.html>.
+ * NEWS (2.3a+): Mention this change.
+ * data/xslt/xml2text.xsl: Update output text and expected input XML
+ element names to match changes below.
+ * data/xslt/xml2xhtml.xsl: Likewise.
+ (xsl:template match="bison-xml-report"): Add missing entry in Table of
+ Contents: "Rules useless in parser due to conflicts".
+ * doc/bison.texinfo (Decl Summary): Reword a little.
+ (Understanding): Update example output for changes below.
+ * src/gram.c: (rule_useful_p): Rename to...
+ (rule_useful_in_grammar_p): ... this.
+ (rule_useless_p): Rename to...
+ (rule_useless_in_grammar_p): ... this.
+ (rule_never_reduced_p): Rename to...
+ (rule_useless_in_parser_p): ... this.
+ (grammar_rules_print): Update for renames.
+ (grammar_rules_print_xml): Update for renames.
+ (grammar_rules_never_reduced_report): Rename to...
+ (grammar_rules_useless_report): ... this since it is used for either
+ kind of useless rule.
+ * src/gram.h: Reword comments and update function names in prototypes.
+ * src/main.c (main): Say "rule useless in parser due to conflicts".
+ * src/print-xml.c (print_rules_never_reduced): Rename to...
+ (print_rules_useless_in_parser): ... this, and rename output XML
+ element "rules-never-reduced" to "rules-useless-in-parser".
+ (print_xml): Update for rename.
+ * src/print.c (print_results): Say "Rules useless in parser due to
+ conflicts".
+ * src/reduce.c (reduce_grammar_tables): Say "rule useless in grammar".
+ (nonterminals_reduce): Say "nonterminal useless in grammar".
+ (reduce_output): Say "Nonterminals useless in grammar".
+ Say "Rules useless in grammar".
+ (reduce_xml): Rename output XML element "useless" to
+ "useless-in-grammar".
+ (reduce_print): Don't report the count of grammatically useless rules
+ as "rules never reduced" just because %yacc is specified.
+ In the correct report of this count, say nonterminal(s) and rule(s)
+ "useless in grammar".
+ * tests/conflicts.at (S/R in initial): Update expected output.
+ (Defaulted Conflicted Reduction): Likewise.
+ (Unreachable States After Conflict Resolution): Likewise.
+ * tests/existing.at (GNU pic Grammar): Likewise.
+ * tests/reduce.at (Useless Nonterminals): Likewise.
+ (Useless Rules): Likewise.
+ (Reduced Automaton): Likewise.
+ (Underivable Rules): Likewise.
+ (Empty Language): Likewise.
+
+2007-11-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/bison.m4 (b4_cat): Put a newline after the end delimiter of the
+ here document and before the EOF so that BSD's implementation of Bourne
+ shell doesn't parse the delimiter as part of the here document.
+ * doc/.cvsignore: Add cross-options.texi.
+ * src/getargs.c (usage): Add a blank line after the warning categories.
+
+2007-11-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * data/lalr1.java (Lexer): Remove usage of b4_pure_if.
+
+2007-11-05 Akim Demaille <akim@epita.fr>
+
+ Remove Id: from bison.1.
+ * doc/Makefile.am (remove_time_stamp): Include the sed invocation.
+ (perl -0777 -pi -e 's/\.PP\nId): New.
+ (.x.1): Use it to ignore the version control revision.
+
+2007-11-05 Akim Demaille <demaille@gostai.com>
+
+ * build-aux/Makefile.am: Ship cross-options.pl.
+ * doc/Makefile.am: Always refer to cross-options.texi with
+ $(srcdir).
+ (MAINTAINERCLEANFILES): Add it.
+
+2007-11-04 Akim Demaille <demaille@gostai.com>
+
+ Generate the long/short option cross-table.
+ * build-aux/cross-options.pl: New.
+ * doc/Makefile.am (cross-options.texi): New.
+ * doc/bison.texinfo: Use it.
+
+2007-11-04 Akim Demaille <demaille@gostai.com>
+
+ Generate bison.1 using help2man.
+ * doc/common.x, doc/bison.x: New.
+ * doc/Makefile.am (bison.1, .x.1): New.
+ The code is taken from autoconf-2.61/man/Makefile.am.
+ * configure.ac: Look for help2man.
+
+2007-11-04 Akim Demaille <demaille@gostai.com>
+
+ Complete --help.
+ * src/getargs.c (usage): Document -W, make it clear that -d,
+ -g and -x have optional arguments.
+
+2007-11-04 Akim Demaille <demaille@gostai.com>
+
+ Find sha1sum when named gsha1sum.
+ * bootstrap (find_tool): New.
+ ($SHA1SUM): New.
+
+2007-10-28 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Deprecate %pure-parser and add `%define api.pure'. Discussed starting
+ at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00006.html>.
+ * NEWS (2.3a+): Mention.
+ * data/bison.m4 (b4_pure_if): Don't define it here.
+ * data/c.m4 (b4_identification): Depend on individual skeletons to
+ define b4_pure_flag, b4_push_flag, or b4_pull_flag if they use the
+ values of the %define variables api.pure or api.push_pull. Define
+ YYPURE, YYPUSH, and YYPULL accordingly.
+ * data/glr.c: Define b4_pure_if based on `%define api.pure' unless
+ glr.cc has already defined b4_pure_flag.
+ * data/push.c: Define b4_pure_if based on `%define api.pure'.
+ Remove YYPUSH and YYPULL since they're back in b4_identification again.
+ * data/yacc.c: Define b4_pure_if based on `%define api.pure'.
+ * doc/bison.texinfo (Pure Decl): Update.
+ (Push Decl): Update.
+ (Decl Summary): Add api.pure to %define entry.
+ In %pure-parser entry, say it's deprecated and reference %define.
+ (Pure Calling): Update.
+ (Error Reporting): Update.
+ (C++ Scanner Interface): Update.
+ (How Can I Reset the Parser): Update.
+ (Table of Symbols): In %pure-parser entry, say it's deprecated and
+ reference %define.
+ * src/getargs.c (pure_parser): Remove global variable.
+ * src/getargs.h (pure_parser): Remove extern.
+ * src/output.c (prepare): Don't define pure_flag muscle.
+ * src/parse-gram.y (prologue_declaration): Implement %pure-parser as a
+ wrapper around `%define api.pure'.
+ * tests/calc.at (Simple LALR Calculator): Update.
+ (Simple GLR Calculator): Update.
+ * tests/cxx-type.at (GLR: Resolve ambiguity, pure, no locations):
+ Update.
+ (GLR: Resolve ambiguity, pure, locations): Update.
+ (GLR: Merge conflicting parses, pure, no locations): Update.
+ (GLR: Merge conflicting parses, pure, locations): Update.
+ * tests/glr-regression.at (Uninitialized location when reporting
+ ambiguity): Update
+ * tests/input.at (Unused %define api.pure): New test case.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Update definition for
+ AT_PURE_IF and AT_PURE_AND_LOC_IF.
+ * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+
+2007-10-28 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ %define push_pull -> %define api.push_pull. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-09/msg00005.html>.
+ * data/push.c: Expect the new name.
+ * data/yacc.c: Likewise.
+ * doc/bison.texinfo (Push Decl): Update.
+ (Decl Summary): Update %define entry.
+ (Push Parser Function): Update.
+ (Pull Parser Function): Update.
+ (Parser Create Function): Update.
+ (Parser Delete Function): Update.
+ * tests/calc.at (Simple LALR Calculator): Update.
+ * tests/input.at (%define enum variables): Update.
+ * tests/push.at (Push Parsing: Memory Leak for Early Deletion): Update.
+ (Push Parsing: Multiple impure instances): Update.
+ (Push Parsing: Unsupported Skeletons): Update.
+ * tests/torture.at (Exploding the Stack Size with Alloca): Update.
+ (Exploding the Stack Size with Malloc): Update.
+
+ * NEWS (2.3a+): Add an entry for the push parser, and clean up the
+ other entries some.
+
+2007-10-27 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For the XML output's terminal element, rename @number to @token-number,
+ and add @symbol-number. In the nonterminal element, rename @number to
+ @symbol-number. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2007-10/msg00040.html>.
+ * data/xslt/xml2text.xsl (xsl:template match="terminal"): Update for
+ renames.
+ (xsl:template match="nonterminal"): Likewise.
+ * data/xslt/xml2xhtml.xsl (xsl:template match="terminal"): Likewise.
+ (xsl:template match="nonterminal"): Likewise.
+ * src/print-xml.c (print_grammar): Implement.
+
+2007-10-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/xslt/xml2dot.xsl (xsl:template match="automaton/state"): After
+ 2007-10-11 change, the child elements here are items not rules.
+ (xsl:template match="item"): New.
+ (xsl:template match="rule"): Update for new reduced itemset.
+ (xsl:template match="point"): Remove.
+ (xsl:template match="empty"): For consistency with --graph, don't
+ output "/* empty */".
+ * data/xslt/xml2text.xsl (xsl:template match="terminal"): When invoking
+ line-wrap, don't pass a negative value as first-line-length since this
+ won't work with the following changes.
+ (xsl:template name="line-wrap"): Simplify slightly.
+ (xsl:template name="ws-search"): Eliminate recursion.
+ * src/print_graph.c (print_core): Don't print a reduction's lookahead
+ set next to an item whose dot is not at the end of the RHS even if it
+ happens to be associated with the same rule.
+
+2007-10-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add %define lr.keep_unreachable_states.
+ * NEWS (2.3a+): Mention it in the entry for unreachable state removal.
+ * doc/bison.texinfo (Decl Summary): Mention it in the %define entry.
+ * src/main.c (main): Implement it.
+ * tests/conflicts.at (Unreachable States After Conflict Resolution):
+ Extend to test it, and fix a typo.
+
+2007-10-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * NEWS (2.3a+): Add entry for recent .output file lookahead set fix.
+ * doc/bison.texinfo (Understanding): Remove a bogus lookahead set in
+ the example .output text.
+ * tests/regression.at (Extra lookahead sets in report): Improve wording
+ of comments.
+
+2007-10-17 Wojciech Polak <polak@gnu.org>
+
+ * src/print-xml.c (print_grammar): Renamed
+ <terminal> and <nonterminal> attributes:
+ "type" to "number" and "symbol" to "name".
+ * data/xslt/xml2text.xsl (xsl:template match="terminal"):
+ Use new attribute names.
+ (xsl:template match="nonterminal"): Likewise.
+ * data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Bison Options): Add entry for --print-datadir.
+ (Option Cross Key): Likewise.
+
+ * src/print-xml.c (print_core): Don't print a reduction's lookahead set
+ next to an item whose dot is not at the end of the RHS even if it
+ happens to be associated with the same rule.
+ * src/print.c (print_core): Likewise.
+ * tests/conflicts.at (Unresolved SR Conflicts): Update output.
+ (Resolved SR Conflicts): Update output.
+ * tests/regression.at (Extra lookahead sets in report): New test case.
+
+2007-10-11 Wojciech Polak <polak@gnu.org>
+
+ * src/print-xml.c (print_core): Remove item set
+ redundancy.
+ * data/xslt/bison.xsl (bison:ruleNumber): New key.
+ Improve processing time. Suggested by Joel E. Denny.
+ * data/xslt/xml2dot.xsl (xsl:template name="escape"):
+ Write xsl:param "required" attribute as comment.
+ * data/xslt/xml2text.xsl (xsl:template match="item"): New.
+ (xsl:template match="rule"): Support new reduced itemset.
+ (xsl:template match="point"): Remove.
+ * data/xslt/xml2xhtml.xsl: Likewise.
+
+2007-10-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (version): Update copyright year.
+
+2007-10-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Make xml2dot.xsl and --graph produce the same output.
+ * data/xslt/xml2dot.xsl (xsl:template match="rule"): Use a ` '
+ 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
+ instead of passing a yylexp argument to yypull_parse, and don't
+ generate yypull_parse or yyparse unless %push-pull-parser is declared.
+ Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
+ * data/bison.m4 (b4_pull_if): New.
+ * data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
+ * data/push.c: Improve M4 quoting a little.
+ (b4_generate_macro_args, b4_parenthesize): Remove.
+ (yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
+ any time a pull parser is requested.
+ Don't #define this as a wrapper around yypull_parse. Instead, when
+ both push and pull are requested, make it a function that does that
+ same thing.
+ (yypull_parse): If there's a b4_prefix, #define this to
+ b4_prefix[pull_parse] when both push and pull are requested.
+ Don't define this as a function unless both push and pull are
+ requested.
+ Remove the yylexp argument and hard-code yylex invocation instead.
+ * etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
+ %push-parser.
+ * src/getargs.c (pull_parser): New global initialized to true.
+ * getargs.h (pull_parser): extern it.
+ * src/output.c (prepare): Insert pull_flag muscle.
+ * src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
+ (prologue_declaration): Set both push_parser and pull_parser = true for
+ %push-pull-parser. Set push_parser = true and pull_parser = false for
+ %push-parser.
+ * src/scan-gram.l: Don't accept %push_parser as an alternative to
+ %push-parser since there's no backward-compatibility concern here.
+ Scan %push-pull-parser.
+ * tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
+ instead of %push-parser.
+ * tests/headers.at (export YYLTYPE): Make yylex static, and don't
+ prototype it in the module that calls yyparse.
+ * tests/input.at (Torturing the Scanner): Likewise.
+ * tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
+
+2006-12-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Update etc/bench.pl. Optimize push mode a little (the yyn change
+ deserves most of the credit).
+ * Makefile.am (SUBDIRS): Add etc subdirectory.
+ * configure.ac (AC_CONFIG_FILES): Add etc/bench.pl and etc/Makefile.
+ * data/push.c (b4_declare_parser_state_variables): Move yyn, yyresult,
+ yytoken, yyval, and yyloc declarations to...
+ (yyparse or yypush_parse): ... here to improve performance. For
+ yypush_parse invocations after the first, be sure to assign yyn its old
+ value again.
+ (yypstate_new): Don't bother initializing the yyresult field since the
+ initial value isn't used.
+ (yyn, yyresult, yytoken, yyval, yyloc): For each NAME in this list,
+ remove the #define that, in push mode, set it to yyps->NAME.
+ * etc/Makefile.am: New.
+ * etc/bench.pl: Remove and build it instead from...
+ * etc/bench.pl.in: ... this new file. Use @abs_top_builddir@ to invoke
+ "tests/bison" from the build directory by default rather than just
+ invoking "bison" from $PATH.
+ (calc_grammar): Update push parser code: don't declare yylval globally,
+ don't define yyparse_wrapper, and don't #define yyparse.
+ (bench_grammar): Update to check all working combinations of yacc.c,
+ push.c, impure, pure, pull, and push.
+
+2006-12-25 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For push mode, add pull wrappers around yypush_parse.
+ * data/push.c: (b4_generate_macro_args, b4_parenthesize): New macros.
+ (yypull_parse): New function wrapping yypush_parse.
+ (yyparse): New #define wrapping yypull_parse.
+ * tests/calc.at (_AT_DATA_CALC_Y): Call yyparse even when %push-parser
+ is declared.
+ * tests/headers.at (export YYLTYPE): Make yylex global. For push mode,
+ prototype yylex in the module that calls yyparse, and don't prototype
+ yyparse there. Otherwise, the yyparse expansion won't compile.
+ * tests/input.at (Torturing the Scanner): Likewise.
+
+2006-12-25 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Enable push parsers to operate in impure mode. Thus, %push-parser no
+ longer implies %pure-parser. The point of this change is to move
+ towards being able to test the push parser code by running the entire
+ test suite as if %push-parser had been declared.
+ * data/push.c (yypush_parse): For impure mode, remove the
+ yypushed_char, yypushed_val, and yypushed_loc arguments.
+ Instead, declare these as local variables initialized to the global
+ yychar, yylval, and yylloc.
+ For the first yypush_parse invocation only, restore the initial values
+ of these global variables when it's time to read a token since they
+ have been overwritten.
+ * src/parse-gram.y (prologue_declaration): Don't set pure_parser for
+ %push-parser.
+ * tests/calc.at (Simple LALR(1) Calculator): Always declare
+ %pure-parser along with %push-parser since this test case was designed
+ for pure push parsers.
+ * tests/local.at (AT_PURE_OR_PUSH_IF): Remove unused.
+ (AT_YACC_OR_PUSH_IF): New.
+ (AT_YYERROR_SEES_LOC_IF): Fix enough that the test suite passes, but
+ add a note that it's still wrong for some cases (as it has been for a
+ while).
+ (AT_PURE_LEX_IF): Use AT_PURE_IF instead of AT_PURE_OR_PUSH_IF since
+ %push-parser no longer implies %pure-parser.
+
+2006-12-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Remove some unnecessary differences between the pull parser code and
+ the push parser code. This patch enables yynerrs in push mode.
+ * data/push.c: Reformat M4 a little.
+ (b4_yyerror_range): Remove and convert all uses to just yyerror_range.
+ (b4_declare_scanner_communication_variables): Don't omit yynerrs just
+ because push mode is on. Instead, if pure mode is on, move yynerrs
+ to...
+ (b4_declare_parser_state_variables): ... here.
+ (yynerrs, yyerror_range): For push mode, #define each NAME in this list
+ to yyps->NAME so it can be used in yypush_parse.
+ (yypush_parse): Don't omit uses of yynerrs in push mode.
+
+2006-12-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix bug such that the first pushed token's value and location are
+ sometimes overwritten (sometimes by %initial-action) before being used.
+ * data/push.c (yypush_parse): Rename arguments yynchar, yynlval, and
+ yynlloc to yypushed_char, yypushed_val, and yypushed_loc for clarity.
+ For the first yypush_parse invocation, initialize yychar to YYEMPTY to
+ more closely mimic the pull parser logic.
+ Don't copy the pushed token to yychar, yylval, and yylloc until it's
+ time to read a token, which is after any initialization of yylval and
+ yylloc.
+ (gottoken): Rename label to...
+ (yyread_pushed_token): ... for clarity and to avoid infringing on the
+ user namespace.
+
+2006-12-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rearrange initialization of the parser state variables so that the
+ skeleton doesn't have to have a copy for pull mode and another for push
+ mode. This patch also fixes at least a bug such that yylloc was not
+ initialized (with b4_location_initial_line and
+ b4_location_initial_column) upon calling yypush_parse. However, that
+ initialization now overwrites the first token's location;
+ %initial-action assigning @$ already did the same thing, and both bugs
+ will be fixed in a later patch.
+ * data/push.c (b4_yyssa): Remove and convert all uses to just yyssa.
+ (b4_declare_parser_state_variables): Remove initialization of yytoken,
+ yyss, yyvs, yyls, and yystacksize.
+ (yypstate_new): Remove initialization of some yypstate fields: yystate,
+ yyerrstatus, yytoken, yyss, yyvs, yyls, yystacksize, yyssp, yyvsp, and
+ yylsp.
+ (yyssa, yyvsa, yylsa): For push mode, #define each NAME in this list to
+ yyps->NAME so it can be used in yypush_parse.
+ (yyparse or yypush_parse): For yypush_parse, don't print the
+ "Starting parse" diagnostic for invocations after the first.
+ Add initialization of yytoken, yyss, yyvs, yyls, and yystacksize; for
+ yypush_parse, only do it for the first invocation.
+ Allow yystate, yyerrstatus, yyssp, yyvsp, yylsp, and yylloc
+ initialization to occur in yypush_parse but only on the first
+ invocation.
+
+2006-12-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/push.c: Add CPP guards around push parser declarations in both
+ the header and the code file.
+ In the code file, move the push parser declarations to the same place
+ they appear in the header file.
+ Clean up the M4 some, especially the inconsistent underquoting in
+ some b4_c_function_def and b4_c_function_decl uses.
+
+2006-12-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Encapsulate the push parser state variables into an M4 macro so the
+ push skeleton doesn't have to list them again for pull mode's yyparse.
+ For push mode, remove yypush_parse's local equivalents of these
+ variables to eliminate unnecessary copying between the two sets at
+ run-time. This patch also fixes at least a bug related to multiple
+ %initial-action invocations in push mode.
+ * data/push.c (b4_declare_parser_variables): Rename to...
+ (b4_declare_scanner_communication_variables): ... this for clarity and
+ update both uses.
+ (b4_declare_yyparse_variables): Remove and move its contents to the one
+ spot where it was invoked.
+ (b4_declare_parser_state_variables): New macro containing the parser
+ state variables required by push mode.
+ (struct yypstate): Replace all fields but yynew with
+ b4_declare_parser_state_variables.
+ (yystate, yyn, yyresult, yyerrstatus, yytoken, yyss, yyssp, yyvs,
+ yyvsp, yyls, yylsp, yystacksize, yyval, yyloc): For push mode, #define
+ each NAME in this list to yyps->NAME so it can be used in yypush_parse.
+ (yyparse or yypush_parse): For yyparse in pull mode, replace local
+ parser state variable declarations with
+ b4_declare_parser_state_variables.
+ Don't initialize parser state variables when calling yypush_parse since
+ yypstate_new already does that.
+ Invoke the user's initial action only upon the first yypush_parse
+ invocation.
+ Remove all code that copies between the local parser state variables
+ and the yypstate.
+
+2006-12-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/push.c (union yyalloc): Rename yyss, yyvs, and yyls fields to
+ prevent a name collision in a future patch where these names will
+ sometimes be #define'd.
+ (YYSTACK_RELOCATE): Add an argument to select a union yyalloc field
+ since it no longer has the same name as the existing argument.
+ (yyparse or yypush_parse): Update all uses of YYSTACK_RELOCATE.
+
+2006-12-19 Paolo Bonzini <bonzini@gnu.org>
+ and Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Decl Summary): In the %language entry, mention
+ that the argument is case-insensitive, and there's no `=' here.
+ For the %skeleton entry, mention that %language is better.
+ (Bison Options): Likewise for --language and --skeleton. Move the
+ --skeleton entry so that the `Tuning the parser' section is sorted
+ alphabetically on long options.
+ (C++ Bison Interface): Don't use the word skeleton. Don't explain the
+ %language directive in detail here; cross-reference the %language
+ documentation instead.
+ (Calc++ Parser): Use `%require "@value{VERSION}"' rather than
+ `%require "2.3b"' so that the example is always up-to-date.
+ (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
+ appears in the documentation.
+ * examples/calc++/Makefile.am ($(calc_extracted)): Use `$(VERSION)'
+ rather than `@VERSION@'.
+
+2006-12-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Reword the %language news a bit, and put it earlier.
+
+ * src/getargs.c (skeleton_arg): Last arg is now location const *.
+ Rewrite to simplify the logic.
+ (language_argmatch): Likewise.
+ (program_name): We now own this var.
+ * src/getargs.h (struct bison_language): Use char[] rather than
+ const char *.
+
+ * doc/bison.texinfo (Decl Summary, Bison Options): Don't claim
+ Java is supported.
+ * src/complain.c (program_name): Remove decl; no longer needed.
+ * src/main.c (program_name): Remove; now belongs to getargs.
+
+2006-12-18 Paolo Bonzini <bonzini@gnu.org>
+
+ * NEWS: Document %language.
+
+ * data/Makefile.am (dist_pkgdata_DATA): Add c-skel.m4, c++-skel.m4.
+
+ * data/c-skel.m4, data/c++-skel.m4: New files.
+ * data/glr.c: Complain on push parsers.
+
+ * doc/bison.texinfo (C++ Parser Interface): Prefer %language
+ over %skeleton.
+ (Decl Summary): Document %language and %skeleton.
+ (Command line): Document -L.
+
+ * examples/extexi: Rewrite %require directive.
+ * examples/calc++/Makefile.am: Pass VERSION to extexi.
+
+ * src/files.c (compute_exts_from_gc): Look in language structure
+ for .y extension.
+ (compute_file_name_parts): Check whether .tab should be added.
+ * src/getargs.c (valid_languages, skeleton_prio, language_prio):
+ (language, skeleton_arg, language_argmatch): New.
+ (long_options): Add --language.
+ (getargs): Use skeleton_arg, add -L/--language.
+ * src/getargs.h: Include location.h.
+ (struct bison_language, language, skeleton_arg, language_argmatch): New.
+ * src/output.c (prepare): Pick default skeleton from struct language.
+ Don't dispatch C skeletons here.
+ * src/parse-gram.y (PERCENT_LANGUAGE): New.
+ (prologue_declaration): Add "%language" rule, use skeleton_arg.
+ * src/scan-gram.l ("%language"): New rule.
+
+ * tests/calc.at: Test %skeleton and %language.
+ * tests/local.at (AT_SKEL_CC_IF): Look for %language.
+ (AT_GLR_IF): Look for %skeleton "glr.cc".
+ (AT_LALR1_CC_IF, AT_GLR_CC_IF): Rewrite.
+ (AT_YACC_IF): Reject %language.
+
+2006-12-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/symtab.h (struct semantic_type): Remove the tag 'semantic_type',
+ since it wasn't used; only the typedef name 'semantic_type' is needed.
+ Also, omit trailing white space.
+
+ * bootstrap: Sync from coreutils.
+ (gnulib_extra_files): Add build-aux/announce.gen.
+ (slurp): Adjust .gitignore files like .cvsignore files.
+ * build-aux/announce-gen: Remove from CVS, since bootstrap
+ now creates this.
+
+2006-12-16 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Make %push-parser imply %pure-parser. This fixes several bugs; see
+ <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00148.html>.
+ * src/parse-gram.y (prologue_declaration): For %push-parser, also set
+ pure_parser = true.
+ * data/push.c: Don't bother testing b4_push_if when deciding whether
+ to expand b4_declare_parser_variables globally.
+ (yypush_parse): Likewise in here.
+
+ * data/push.c (yypush_parse): Add b4_parse_param to arguments.
+ (yy_reduce_print): Reformat M4 for readability.
+
+2006-12-15 Bob Rossi <bob@brasko.net>
+ and Joel Denny <jdenny@ces.clemson.edu>
+
+ * data/push.c (yypstate): Add typedef, and update all uses of
+ struct yypstate to just yypstate.
+ * tests/calc.at (_AT_DATA_CALC_Y): Update here as well.
+
+2006-12-14 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yypush_parse): Declare prototype regardless of
+ %locations option.
+
+2006-12-14 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yyparse): Remove the prototype and the #define when in
+ push-parser mode.
+
+2006-12-13 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yypstate_init): Rename to...
+ (yypstate_new): ... this and use b4_c_function_def.
+ (yypstate_delete): New.
+ (yypush_parse): Change parameters yynval and yynlloc to be const.
+ * tests/calc.at (_AT_DATA_CALC_Y): Use new yypstate_new and
+ yypstate_delete functions.
+
+2006-12-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
+ strange test case titles. Reported by Bob Rossi.
+
+2006-12-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * TODO: Add pointer to Sylvain Schmitz's work on static detection
+ of potential ambiguities in GLR grammers.
+
+2006-12-12 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/testsuite.at (AT_CHECK): When checking if $1 starts with
+ `bison ', use m4_index instead of m4_substr since chopping up a string
+ containing M4-special characters causes problems here.
+
+ Fix a couple of bugs related to special characters in user-specified
+ file names, and make it easier for skeletons to compute output file
+ names with the same file name prefix as Bison-computed output file
+ names.
+ * data/glr.cc, data/push.c, data/yacc.c: In @output, use
+ b4_parser_file_name and b4_spec_defines_file instead of
+ @output_parser_name@ and @output_header_name@, which are now redundant.
+ * data/glr.c, data/lalr1.cc: Likewise. Also, in header #include's, use
+ b4_parser_file_name, b4_spec_defines_file, and the new
+ @basename(FILENAME@) instead of @output_parser_name@ and
+ @output_header_name@, which inappropriately escaped the file names as
+ C string literals.
+ * src/files.c (all_but_ext): Remove static qualifier.
+ (compute_output_file_names): Move `free (all_but_ext)' to...
+ (output_file_names_free): ... here since all_but_ext is needed later.
+ * src/files.h (all_but_ext): Extern.
+ * src/muscle_tab.h (MUSCLE_INSERT_STRING_RAW): New macro that does
+ exactly what MUSCLE_INSERT_STRING used to do.
+ (MUSCLE_INSERT_STRING): Use MUSCLE_OBSTACK_SGROW so that M4-special
+ characters are escaped properly.
+ * src/output.c (prepare): Define muscle file_name_all_but_ext as
+ all_but_ext.
+ For pkgdatadir muscle, maintain previous functionality by using
+ MUSCLE_INSERT_STRING_RAW instead of MUSCLE_INSERT_STRING. The problem
+ is that b4_pkgdatadir is used inside m4_include in the skeletons, so
+ digraphs would never be expanded. Hopefully no one has M4-special
+ characters in his Bison installation path.
+ * src/scan-skel.l: Don't parse @output_header_name@ and
+ @output_parser_name@ anymore since they're now redundant.
+ In @output, use decode_at_digraphs.
+ Parse a new @basename command that invokes last_component.
+ (decode_at_digraphs): New.
+ (BASE_QPUTS): Remove unused.
+ * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): New macro.
+ (Output file name): New tests.
+
+2006-12-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Warn about output files that are generated by the skeletons and that
+ conflict with other output files.
+ * data/glr.c: Don't generate the header file here when glr.cc does.
+ * src/files.c (file_names, file_names_count): New static globals.
+ (compute_output_file_names): Invoke output_file_name_check for files
+ not generated by the skeletons and remove existing checks.
+ (output_file_name_check): New function that warns about conflicting
+ output file names.
+ (output_file_names_free): Free file_names.
+ * src/files.h (output_file_name_check): Declare.
+ * src/scan-skel.l: Invoke output_file_name_check for files generated by
+ the skeletons.
+ * tests/output.at (AT_CHECK_CONFLICTING_OUTPUT): New.
+ (Conflicting output files): New tests.
+
+2006-12-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/bison.texinfo: Fix a couple of typos.
+
+2006-12-08 Bob Rossi <bob@brasko.net>
+
+ * data/push.c: (yypvarsinit, yypvars, struct yypvars, yypushparse):
+ Rename to...
+ (yypstate_init, yypstate, struct yypstate, yypush_parse): ... these and
+ update all uses.
+ (b4_yyssa, b4_yyerror_range, yypstate_init): Rename pv to yyps.
+ (yypush_parse): Rename yypvars argument to yyps and remove redundant
+ local pv.
+ (yypstate_init, yypush_parse): Declare in Bison-generated header file.
+ * tests/calc.at (_AT_DATA_CALC_Y): Use newly named functions.
+
+2006-12-07 Bob Rossi <bob@brasko.net>
+ and Joel Denny <jdenny@ces.clemson.edu>
+
+ * data/push.c (yypvarsinit): Change return type from void* to struct
+ yypvars*. No longer cast to void* on return.
+ (struct yypvars): Remove yylen since it need not be remembered between
+ yypushparse invocations.
+ (yypushparse): Don't copy between yylen and pv->yylen.
+
+2006-12-05 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yychar_set, yylval_set, yylloc_set): Delete.
+ (yypushparse): Add yynchar, yynlval, yynlloc parameters.
+ (b4_declare_parser_variables): Do not declare yynerrs for push mode.
+ (struct yypvars): Remove b4_declare_parser_variables.
+ (yypvarsinit): Remove init code for removed variables.
+ (global scope): Do not declare b4_declare_parser_variables if
+ push or pure mode.
+ (yypushparse): Add b4_declare_parser_variables.
+ Init new local variables, and remove init code for removed
+ yypvars variables.
+ (yyparse): Delete.
+ * tests/calc.at (_AT_DATA_CALC_Y): Call yypushparse for push mode
+ and yyparse for other modes.
+ (AT_CHECK_CALC_LALR): Added '%skeleton "push.c"' for push tests.
+ * tests/local.at (AT_PUSH_IF, AT_PURE_OR_PUSH_IF): Added.
+ (AT_YYERROR_SEES_LOC_IF): push-parser makes this false.
+ (AT_PURE_LEX_IF): True if pure or push parser.
+
+2006-12-05 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Document Yacc prologue alternatives and default %destructor's and
+ %printer's as experimental. Don't mention Java yet. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00002.html>.
+ * NEWS (2.3a+): Say they're experimental. Remove any mention of Java.
+ (2.3a): Annotate this entry to say the old forms of these features were
+ also experimental.
+ * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
+ 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>
+
+ Support a file name argument to %defines. Deprecate `=' in
+ %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, 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.
+ * tests/calc.at (Simple LALR Calculator, Simple GLR Calculator, Simple
+ LALR1 C++ Calculator, Simple GLR C++ Calculator): Remove the `=' from
+ all but one occurrence of %name-prefix.
+ * tests/headers.at (export YYLTYPE): Remove the `=' from %name-prefix.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Likewise.
+ * tests/output.at (AT_CHECK_OUTPUT): Remove the `=' from all but one
+ occurrence of each of %file-prefix and %output. Add check for %defines
+ with argument.
+ * tests/reduce.at (Useless Terminals, Useless Nonterminals,
+ Useless Rules, Reduced Automaton, Underivable Rules, Empty Language):
+ Remove the `=' from %output.
+
+2006-11-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't escape $ in test case titles since Autoconf 2.61 now does that
+ correctly.
+ * tests/actions.at (Default %printer and %destructor are not for error
+ or $undefined): Here.
+ (Default %printer and %destructor are not for $accept): Here.
+ * tests/input.at (Invalid $n and @n): Here.
+
+2006-11-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ 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, Table of Symbols):
+ Update.
+ * src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
+ * src/scan-gram.l (INITIAL): Implement.
+ * src/symlist.c (symbol_list_default_tagless_new): Update comment.
+ * src/symlist.h (symbol_list, symbol_list_default_tagless_new): Update
+ comment.
+ * tests/actions.at (Default tagless %printer and %destructor,
+ Default tagged and per-type %printer and %destructor,
+ Default %printer and %destructor are not for error or $undefined,
+ Default %printer and %destructor are not for $accept,
+ Default %printer and %destructor for mid-rule values): Update.
+ * tests/input.at (Default %printer and %destructor redeclared,
+ Unused values with default %destructor): Update.
+
+2006-11-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't let %prec take a nonterminal.
+ * src/reader.c (grammar_current_rule_prec_set): Make the %prec symbol a
+ token.
+ * tests/input.at (%prec takes a token): New test checking that %prec
+ won't take a nonterminal.
+
+2006-11-10 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/testsuite.at (AT_CHECK): Don't miss an exit value of 0 because
+ it was double-quoted.
+ * src/Makefile.am (YACC): Use --warnings=all,error so that Bison's own
+ grammar is maintained with Bison's highest standards.
+ * src/getargs.c: Fix some typos in Doxygen comments.
+
+2006-11-10 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix memory leaks in scanners generated by at least Flex 2.5.9 and
+ later. Reported by Paul Eggert in
+ <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00014.html>.
+ * src/flex-scanner.h (yylex_destroy): Define for Flex before 2.5.9.
+ * src/scan-code.l (translate_action): Don't bother invoking
+ yy_delete_buffer (YY_CURRENT_BUFFER) before creating the first buffer.
+ (code_scanner_free): Instead of invoking
+ yy_delete_buffer (YY_CURRENT_BUFFER) directly, invoke yylex_destroy,
+ which frees more.
+ * src/scan-gram.l (gram_scanner_free): Likewise.
+ * src/scan-skel.l (scan_skel): Likewise.
+
+2006-11-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/files.c (tr): Change return type to void.
+ * src/muscle_tab.c (muscle_insert): Free storage in case muscle_grow
+ has been called previously for the same key.
+ (muscle_find): Return storage instead of value so that
+ --enable-gcc-warnings doesn't produce warnings that the return discards
+ const. aver that the value and storage are the same since storage
+ could potentially be NULL when value is not.
+ * tests/testsuite.at (AT_CHECK): Treat an unspecified exit value the
+ same as 0.
+
+2006-11-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap.conf (excluded_files): Exclude m4/codeset.m4 (undoing
+ the earlier change today), m4/intl.m4, m4/intldir.m4. This gives
+ us a slightly cleaner distribution, and also works.
+ * m4/.cvsignore: Add inline.m4, wint_t.m4 to accommodate recent
+ gnulib changes.
+
+2006-11-08 Joel E. Denny <jdenny@ces.clemson.edu>
+ and Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't let Bison leak memory except when it complains.
+ * src/files.h (parser_file_name, spec_verbose_file, spec_graph_file):
+ (spec_defines_file, dir_prefix): Now char *, not const char *,
+ since they are freed.
+ * src/files.c: Likewise.
+ (all_but_ext, all_but_tab_ext, src_extension, header_extension):
+ Likewise.
+ (tr): Now operates in-place. All uses changed.
+ (compute_exts_from_gf, compute_exts_from_src): Don't leak temporary
+ values.
+ (compute_file_name_parts, compute_output_file_names): Don't store
+ read-only data in variables that will be freed.
+ (compute_output_file_names): Free all_but_ext, all_but_tab_ext,
+ src_extension, and header_extension.
+ (output_file_names_free): New public function to free
+ spec_verbose_file, spec_graph_file, spec_defines_file,
+ parser_file_name, and dir_prefix.
+ * src/getargs.c (getargs): Don't store read-only data in variables that
+ will be freed.
+ * src/main.c (main): Invoke output_file_names_free, code_scanner_free
+ (which previously existed but was unused), and quotearg_free.
+ * src/muscle_tab.h (muscle_insert): value arg is now a `char const *'.
+ * src/muscle_tab.c: Likewise.
+ (muscle_entry): Make the value char const *,
+ and add a new storage member that is char * and can be freed.
+ (muscle_entry_free): New private function.
+ (muscle_init): Use it instead of free.
+ (muscle_insert, muscle_grow): Update and use new storage member.
+ (muscle_code_grow): Free the string passed to muscle_grow
+ since it's not needed anymore.
+ * src/parse-gram.y (%union): Make `chars' member a `char const *', and
+ add a new `char *code' member.
+ ("{...}"): Declare semantic type as code.
+ * src/scan-code.h (translate_rule_action):
+ (translate_symbol_action, translate_code, translate_action): Return
+ `char const *' rather than `char *' since external code should not free
+ these strings.
+ * src/scan-code.l: Likewise.
+ * src/scan-gram.l (<SC_BRACED_CODE>): Use val->code for BRACED_CODE,
+ which is "{...}" in the parser.
+ * tests/Makefile.am (maintainer-check-valgrind): Set
+ VALGRIND_OPTS='--leak-check=full --show-reacheable=yes' before invoking
+ Valgrind.
+ * tests/calc.at (_AT_DATA_CALC_Y): fclose the FILE* so Valgrind doesn't
+ complain.
+ * tests/testsuite.at (AT_CHECK): Redefine so that running Bison and
+ expecting a non-zero exit status sets --leak-check=summary and
+ --show-reachable=no for Valgrind. Bison unabashedly leaks memory in
+ this case, and we don't want to hear about it.
+
+2006-11-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap (runtime-po/Makevars): Derive from po/Makevars
+ instead of from the template, to simplify configuration a bit.
+ * bootstrap.conf (excluded_files): Don't exclude m4/codeset.m4
+ and m4/wint_t.m4, as they are needed with the latest gnulib.
+
+2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Disable unset/unused mid-rule value warnings by default, and recognize
+ --warnings=midrule-values to enable them. Discussed starting at
+ <http://lists.gnu.org/archive/html/help-bison/2006-10/msg00030.html>.
+ * NEWS (2.3a+): Mention.
+ * src/getargs.c, src/getargs.h (warnings_args, warnings_types, enum
+ warnings): Add entry for midrule-values subargument.
+ * src/reader.c (symbol_should_be_used): Don't return true just because
+ the value is a set/used mid-rule value unless
+ --warnings=midrule-values was specified.
+ * tests/input.at (Unused values, Unused values before symbol
+ declarations): Run tests with and without --warnings=midrule-values.
+
+ * src/reader.c (check_and_convert_grammar): Use symbol_list_free rather
+ than LIST_FREE directly.
+
+2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Finish implementing --warnings=error, which should not be implied by
+ --warnings=all (or by its synonyms -W and --warnings without
+ subarguments).
+ * src/complain.c (set_warning_issued): New function to report that
+ warnings are being treated as errors and to record an error if so.
+ Invoke...
+ (warn_at, warn): ... here.
+ * src/getargs.c (warnings_args, warnings_types): Reorder so that
+ "error - warnings are errors" does not appear above "all - all of the
+ above".
+ (getargs): For -W and --warnings without subarguments, don't let
+ FLAGS_ARGMATCH set warnings_error in warnings_flag.
+ * src/getargs.h (enum warnings): Unset warnings_error in warnings_all.
+
+2006-10-31 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (flags_argmatch): Don't cause segmentation fault for
+ empty subargument list. For example: `bison --warnings= parser.y'.
+
+2006-10-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/push.c, data/yacc.c: Make sure there's a newline at the end of
+ the parser header file so that gcc doesn't warn.
+
+2006-10-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Split the default %destructor/%printer into two kinds: <*> and <!>.
+ Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00060.html>.
+ * NEWS (2.3a+): Mention.
+ * doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
+ previous change today related to mid-rules.
+ (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 <!>.
+ (generic_symlist_item): Remove RHS for %symbol-default and add RHS's
+ for <*> and <!>.
+ * src/scan-gram.l (PERCENT_SYMBOL_DEFAULT): Remove.
+ (TYPE_TAG_ANY, TYPE_TAG_NONE): Add.
+ * src/symlist.c (symbol_list_default_new): Split into tagged and
+ tagless versions.
+ (symbol_list_destructor_set, symbol_list_printer_set): Split
+ SYMLIST_DEFAULT case into SYMLIST_DEFAULT_TAGGED and
+ SYMLIST_DEFAULT_TAGLESS.
+ * src/symlist.h: Update symbol_list_default*_new prototypes.
+ (symbol_list.content_type): Split enum value SYMLIST_DEFAULT into
+ SYMLIST_DEFAULT_TAGGED and SYMLIST_DEFAULT_TAGLESS.
+ * src/symtab.c (default_destructor, default_destructor_location,
+ default_printer, default_printer_location): Split each into tagged and
+ tagless versions.
+ (symbol_destructor_get, symbol_destructor_location_get,
+ symbol_printer_get, symbol_printer_location_get): Implement tagged
+ default and tagless default cases.
+ (default_destructor_set, default_printer_set): Split each into tagged
+ and tagless versions.
+ * src/symtab.h: Update prototypes.
+ * tests/actions.at (Default %printer and %destructor): Rename to...
+ (Default tagless %printer and %destructor): ... this, and extend.
+ (Per-type %printer and %destructor): Rename to...
+ (Default tagged and per-type %printer and %destructor): ... this, and
+ extend.
+ (Default %printer and %destructor for user-defined end token): Extend.
+ (Default %printer and %destructor are not for error or $undefined):
+ Update.
+ (Default %printer and %destructor are not for $accept): Update.
+ (Default %printer and %destructor for mid-rule values): Extend.
+ * tests/input.at (Default %printer and %destructor redeclared): Extend.
+ (Unused values with default %destructor): Extend.
+
+2006-10-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't apply the default %destructor/%printer to an unreferenced midrule
+ value. Mentioned at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00104.html>.
+ * src/symtab.c (dummy_symbol_get): Name all dummy symbols initially
+ like $@n instead of just @n so that the default %destructor/%printer
+ logic doesn't see them as user-defined symbols.
+ (symbol_is_dummy): Check for both forms of the name.
+ * src/reader.c (packgram): Remove the `$' from each midrule symbol
+ name for which the midrule value is referenced in any action.
+ * tests/actions.at (Default %printer and %destructor for mid-rule
+ values): New test.
+ * tests/regression.at (Rule Line Numbers, Web2c Report): Update output
+ for change to dummy symbol names.
+
+2006-10-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Warn about unset midrule $$ if the corresponding $n is used.
+ * src/reader.c (symbol_should_be_used): Check midrule parent rule for
+ $n usage.
+ (packgram): Before invoking grammar_rule_check on any rule, make sure
+ all actions have already been scanned in order to set `used' flags.
+ Otherwise, checking that a midrule's $$ is set will not always work
+ properly because the midrule check must forward-reference the midrule's
+ parent rule.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Extend to check the new
+ warning.
+
+2006-10-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ More improvements to the documentation of the prologue alternatives:
+ * NEWS (2.3a+): Mention the new `Prologue Alternatives' section in the
+ Bison manual.
+ * doc/bison.texinfo (Prologue Alternatives): Correct some errors. Add
+ some text to clarify the relative importance of the new directives and
+ to show how these directives may be viewed as code labels.
+
+2006-10-16 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Similar to the recently removed %before-header, add %code-top as the
+ alternative to the pre-prologue. Mentioned at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00063.html>.
+ Also, let the prologue alternatives appear in the grammar section.
+ * src/parse-gram.y (PERCENT_CODE_TOP): New token.
+ (prologue_declaration): Move the existing prologue alternatives to...
+ (grammar_declaration): ... here and add %code-top.
+ * src/scan-gram.l (PERCENT_CODE_TOP): New token.
+
+ Clean up and extend documentation for the prologue alternatives.
+ * NEWS (2.3a+): Describe prologue alternatives.
+ * doc/bison.texinfo (Prologue): Move discussion of prologue
+ alternatives to...
+ (Prologue Alternatives): ... this new section, and extend it to discuss
+ all 4 directives in detail.
+ (Table of Symbols): Clean up discussion of prologue alternatives and
+ add %code-top.
+
+2006-10-16 Juan Manuel Guerrero <juan.guerrero@gmx.de>
+
+ DJGPP specific issues.
+
+ * djgpp/config.bat: config.hin has been moved to lib. Adjust
+ config.bat accordingly.
+ * djgpp/config.sed: Adjust config.sed for the use of autoconf 2.60.
+ * djgpp/config.site: Likewise.
+
+2006-10-16 Paolo Bonzini <bonzini@gnu.org>
+
+ Replace %*-header with %provides, %requires, %code. See discussion at
+ http://lists.gnu.org/archive/html/bison-patches/2006-10/msg00002.html
+
+ * data/bison.m4 (b4_user_requires, b4_user_provides): New.
+ (b4_user_start_header): Remove.
+ * data/glr.c: Use new macros instead of b4_*start_header
+ and b4_*end_header.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/push.c: Likewise.
+ * data/yacc.c: Likewise.
+
+ * doc/bison.texinfo: Remove %before-header, rename
+ %{start,end,after}-header to %requires, %provides, %code.
+
+ * src/parse-gram.y: Likewise (also rename token names accordingly).
+ * src/scan-gram.l: Likewise.
+ * tests/actions.at: Likewise.
+
+2006-10-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS).
+ Problem reported by Joel E. Denny.
+
+2006-10-14 Jim Meyering <jim@meyering.net>
+
+ (Sync from coreutils.)
+ Work also when the working directory (with e.g. coreutils sources)
+ is version controlled with git, rather than CVS.
+ * bootstrap (CVS_only_file): Test for the existence of README-cvs,
+ rather than CVS.
+ In messages and comments, say e.g., "checked-out sources",
+ rather than "CVS sources".
+ (version_controlled_file): New function. Work for git as well as
+ for CVS. Don't use grep's -q option.
+ (slurp): Call it here, in place of CVS-specific code.
+
+2006-10-14 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix testsuite for ./configure --enable-gcc-warnings:
+ * configure.ac (gcc-warnings): Move -Wall before -Wno-sign-compare.
+ Otherwise, gcc 4.1.0 (at least) warns about sign comparisons in
+ __AT_CHECK_PRINTER_AND_DESTRUCTOR in tests/actions.at.
+ * test/input.at (Torturing the Scanner): #include <stdlib.h> for abort.
+ * test/regression.at (Diagnostic that expects two alternatives):
+ Likewise.
+
+2006-10-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap.conf (gnulib_modules): Add config-h.
+ * djgpp/subpipe.c: Include <config.h> unconditionally; don't
+ worry about HAVE_CONFIG_H.
+ * lib/abitset.c: Likewise.
+ * lib/bitset.c: Likewise.
+ * lib/bitset_stats.c: Likewise.
+ * lib/bitsetv-print.c: Likewise.
+ * lib/bitsetv.c: Likewise.
+ * lib/ebitset.c: Likewise.
+ * lib/get-errno.c: Likewise.
+ * lib/lbitset.c: Likewise.
+ * lib/subpipe.c: Likewise.
+ * lib/timevar.c: Likewise.
+ * lib/vbitset.c: Likewise.
+ * lib/bitset.c: Include "bitset.h" first, to test interface.
+ * lib/bitset_stats.c: Include "bitset_stats.h" first.
+ * lib/bitsetv-print.c: Include "bitsetv-print.h" first.
+ * lib/bitsetv.c: Include "bitsetv.h" first.
+ * lib/get-errno.c: Include "get-errno.h" first.
+ * m4/.cvsignore: Add config-h.m4.
+ * tests/actions.at (Default %printer and %destructor for ...):
+ Adjust expected line numbers in output to reflect removal of #if
+ HAVE_CONFIG_H lines.
+ * tests/glr-regression.at (Missed %merge type warnings when ...):
+ Likewise.
+ * tests/regression.at (Braced code in declaration in rules section):
+ Likewise.
+ * tests/atlocal.in (CPPFLAGS): Don't define HAVE_CONFIG_H.
+ * tests/local.at (AT_DATA_GRAMMAR_PROLOGUE):
+ Include <config.h> unconditionally.
+
+ * bootstrap: Sync from coreutils, as follows:
+
+ 2006-10-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap (symlink_to_gnulib): Fix bug: the dot_dots shell
+ variable was sometimes used without being initialized. This
+ messed up the installation of the INSTALL file in some cases.
+
+ 2006-10-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap (usage, main program, symlink_to_gnulib): Add option
+ --copy. Inspired by a suggestion from Bruno Haible.
+
+ 2006-10-03 Jim Meyering <jim@meyering.net>
+
+ * bootstrap: Undo last change to this file, since now gnulib-tool
+ sticks with the automake default in generating dependencies.
+
+2006-10-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac: Use AC_PROG_CC_STDC; this is more modern than
+ the old AC_PROG_CC / AM_PROG_CC_STDC combination.
+
+ * doc/bison.1: Add copyright notice.
+
+ * data/glr.c: Don't include <stdarg.h>; not used.
+
+ * NEWS: The -g and --graph options now output graphs in Graphviz
+ DOT format, not VCG format.
+ * doc/bison.1: Likewise.
+ * doc/bison.texinfo (Understanding, Bison Options): Likewise.
+ * THANKS: Add Satya Kiran Popuri, who proposed the initial version
+ of this change in
+ <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00158.html>.
+ * TODO: Remove Graphviz entry.
+ * src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
+ remove vcg.c, vcg.h, vcg_defaults.h.
+ * src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
+ * src/graphviz.c, src/graphviz.h: New files.
+ * src/files.c (compute_output_file_names): Output .dot, not .vcg.
+ * src/files.h: Make comment more generic.
+ * src/main.c (main): Likewise.
+ * src/print_graph.h: Likewise.
+ * src/getargs.c (usage): Make usage description more generic.
+ * src/print_graph.c: Include graphviz.h rather than vcg.h.
+ (static_graph, fgraph): Remove. All uses changed to pass
+ arguments instead of sharing a static var.
+ (print_core, print_actions, print_state, print_graph):
+ Output graphviz format rather than VCG format.
+ * tests/.cvsignore: Remove *.vcg; add *.dot.
+ * tests/output.at: Expect *.dot files, not *.vcg files.
+
+ * data/Makefile.am (dist_pkgdata_DATA): Add bison.m4; this
+ accommodates the 2006-10-08 change.
+
+2006-10-11 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yypushparse, yypvarsinit, yypvars): Wrap in b4_push_if.
+ (b4_yyssa, b4_yyerror_range): New macros.
+ (struct yypvars): Remove yyssa_ptr and yyerror_range_ptr fields.
+ (yypvarsinit): Remove init of removed fields.
+ (yypushparse): Remove use of removed fields; use new macros instead.
+
+2006-10-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/push.c (yypushparse): Fix memory leak if yymsg is malloced
+ in a push parser. Reindent slightly to match yacc.c better.
+
+2006-10-11 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (struct yypvars): Remove yymsgbuf, yymsgbuf_ptr, yymsg,
+ yymsg_alloc fields.
+ (yypvarsinit, yypushparse): Remove init of removed fields.
+ (yypushparse): Use yymsgbuf instead of yymsgbuf_ptr.
+
+2006-10-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * THANKS: Add Paolo Bonzini and Bob Rossi.
+
+2006-10-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * data/c.m4 (b4_copyright, b4_epilogue, b4_location_initial_column,
+ b4_location_initial_line, p4_parse_param, b4_ints_in, b4_flag_if,
+ b4_define_flag_if and uses, b4_basename, b4_syncline, b4_user_code,
+ b4_define_user_cde and uses): Remove.
+ (b4_comment, b4_prefix, b4_sync_start): New.
+ * data/bison.m4: New file, with most of the content removed from c.m4.
+ * src/muscle_tab.h: Use "do {...} while(0)" throughout.
+ * src/output.c (output_skeleton): Pass bison.m4.
+ (prepare): Pass glr_flag and nondeterministic_flag. Pass prefix
+ only if specified.
+
+2006-10-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix test failure reported by Tom Lane in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-10/msg00000.html>
+ and try to make such failures easier to catch in the future.
+ * data/glr.c (YYTRANSLATE): Don't check for nonpositive arg;
+ that's now the caller's responsibility.
+ (yyprocessOneStack, yyrecoverSyntaxError, yyparse):
+ Set yychar = YYEOF if it's negative.
+ * tests/actions.at (yylex): Abort if asked to read past EOF.
+ * tests/conflicts.at (yylex): Likewise.
+ * tests/cxx-type.at (yylex): Likewise.
+ * tests/glr-regression.at (yylex): Likewise.
+ * tests/input.at (yylex): Likewise.
+ * tests/regression.at (yylex): Likewise.
+ * tests/torture.at (yylex): Likewise.
+
+2006-10-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix problems with translating English-language diagnostics.
+ * bootstrap: Fix bug introduced in recent bootstrap changes, with
+ respect to bison-runtime pot generation. The YY_ stuff
+ wasn't being captured.
+ * bootstrap.conf (XGETTEXT_OPTIONS_RUNTIME): New var.
+ * po/POTFILES.in: Add src/location.c, src/scan-code.l.
+ * runtime-po/POTFILES.in: Add data/push.c.
+
+2006-09-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ Merge bootstrap changes from coreutils.
+
+ 2006-09-28 Jim Meyering <jim@meyering.net>
+
+ Automatically generated dependencies are important even
+ when all of the sources in a directory come from gnulib.
+ * bootstrap (gnulib_tool): Remove the "no-dependencies" automake
+ option that gnulib-tool adds to what becomes our lib/gnulib.mk.
+
+ 2006-09-23 Jim Meyering <jim@meyering.net>
+
+ * bootstrap (gnulib_tool_options): Add "--local-dir gl".
+
+ 2006-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Add support for --force.
+ (usage): New function. Describe usage less tersely.
+ (CVS_only_file): New var.
+
+2006-09-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/push.c (YYPUSH_MORE): Make it an enum instead.
+ (yypushparse): Use YYPUSH_MORE instead of the mystery constant.
+ Adjust white space and comments to match GNU style better.
+
+2006-09-20 Bob Rossi <bob@brasko.net>
+
+ * data/push.c (yyresult_get): Remove function.
+ (YYPUSH_MORE): Add #define.
+ (yypushparse): Modify return value.
+
+2006-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stamp-h.in: Remove; no longer needed.
+ * .cvsignore: Replace autom4te.cache and config.cache with *.cache.
+ Remove config.h, config.hin, intl (no longer created).
+ * lib/.cvsignore: Add config.h, config.hin, configmake.h, inttypes.h,
+ stamp-h1.
+
+ Sync bootstrap from coreutils, as follows:
+
+ 2006-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap (symlink_to_gnulib): New function.
+ (cp_mark_as_generated): Use it, to prefer symlinks-to-gnulib
+ to copies-of-gnulib.
+ (cp_mark_as_generated, slurp, gnulib_files):
+ Avoid making a copy if it's the same as the old version.
+ (gnulib_files): Add support for this variable (used by Bison).
+
+2006-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/getargs.c (usage): Rework to use conventions similar to
+ coreutils, to make translation a bit easier and the code a bit
+ smaller. Problem reported by Tim Van Holder.
+
+2006-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use some of gnulib's new modules, taken from coreutils.
+
+ * bootstrap: Sync from coreutils, except add support for gnulib_files.
+ * bootstrap.conf: New file.
+ (gnulib_modules): Add configmake, inttypes, unistd.
+ (XGETTEXT_OPTIONS): Add complain, complain_at,
+ fatal, fatal_at, warn, warn_at, unexpected_end.
+ * configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
+ (gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
+ (gl_EARLY): Add.
+ (AM_STDBOOL_H): Remove; gl_INIT now dows this.
+ (gl_INIT): Add
+ (GNULIB_AUTOCONF_SNIPPET): Remove.
+ (AM_GNU_GETTEXT): Add; require formatstring macros since that's
+ the pickiest.
+ * lib/.cvsignore: Add inttypes_.h.
+ * lib/Makefile.am: Include gnulib.mk first so we can append to it.
+ (AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
+ (BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
+ no-longer-necessary initializations.
+ (lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
+ * lib/subpipe.c: Include <unistd.h> unconditionally, now that we
+ use the unistd module.
+ * src/system.h: Likewise.
+ * m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
+ ulonglong.m4. Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
+ gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
+ * src/Makefile.am (DEFS): Remove, since configmake does this for us.
+ (AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
+ * src/system.h: Include inttypes.h unconditionally, now that we
+ use the inttypes module. Don't bother to include stdint.h, since
+ inttypes.h now does that for us.
+ (LOCALEDIR): Remove, now that we use the configmake module.
+ * src/getargs.c: Include configmake.h.
+ * src/main.c: Likewise.
+ * src/output.c: Likewise.
+ * tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
+ not from $abs_top_builddir, since config.h moved.
+
+
+ Port to GCC 2.95. First two problems reported by Michael Deutschmann in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00018.html>.
+
+ * src/parse-gram.y (symbol_declaration): Don't put statements
+ before declarations; it's not portable to C89.
+ * src/scan-code.l (handle_action_at): Likewise.
+
+ * src/scan-code.l: Always initialize braces_level; the old code
+ left it uninitialized and therefore had undefined behavior.
+
+ Don't attempt to redefine 'assert', since it runs afoul of
+ systems where standard headers (mistakenly) include <assert.h>.
+ Instead, define and use our own alternative, called 'aver'.
+ * src/reader.c: Don't include assert.h, since we no longer
+ use assert.
+ * src/scan-code.l: Likewise.
+ * src/system.h (assert): Remove, replacing with....
+ (aver): New function, taking a bool arg. All uses changed.
+ * src/tables.c (pack_vector): Ensure that aver arg is bool,
+ not merely an integer.
+
+2006-09-15 Bob Rossi <bob@brasko.net>
+
+ * data/Makefile.am (dist_pkgdata_DATA): Add push.c.
+ * data/c.m4 (YYPUSH): New.
+ (b4_push_if): New macro. Use it instead of #ifdef YYPUSH.
+ * src/getargs.c (push_parser): New var.
+ * src/getargs.h (push_parser): New declaration.
+ * src/output.c (prepare): Add macro insertion of `push_flag'.
+ * src/parse-gram.y (PERCENT_PUSH_PARSER): New token.
+ (prologue_declaration): Parse %push-parser.
+ * src/scan-gram.l: Scan new PERCENT_PUSH_PARSER token.
+ * tests/calc.at (_AT_CHECK_CALC_ERROR): Add "Return" and "Now" to
+ list of removed lines from the traces observed.
+ (AT_CHECK_CALC_LALR): Added push parser tests.
+
+2006-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.3a.
+ * configure.ac (AC_INIT): Likewise.
+
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove
+ "#define YYSTYPE int" that caused "make maintainer-check" to fail
+ due to header ordering dependencies. I don't know why the #define
+ was there.
+
+ Fix glr.cc and lalr1.cc's use of YYDEBUG so that there's zero
+ runtime cost when YYDEBUG is not defined, and so that some tests
+ that used to fail now work. Problem and initial suggestion by
+ Paolo Bonzini.
+ * data/c++.m4 (b4_parse_param_cons): Omit leading ','.
+ * data/glr.cc (b4_parser_class_name):
+ Initialize yycdebug_ only if YYDEBUG. Also, initialize yydebug_.
+ (debug_level, set_debug_level): Affect yydebug_, not ::yydebug.
+ (yydebug_) [YYDEBUG]: New member.
+ (yycdebug_): Now defined only if YYDEBUG.
+ * data/lalr1.cc (yydebug_, yycdebug_): Now defined only if YYDEBUG.
+ (YYCDEBUG) [!YYDEBUG]: Don't use yydebug_ and yycdebug_.
+ (b4_parser_class_name): Initialize yydebug_ and yycdebug_ only
+ if YYYDEBUG.
+ (debug_stream, set_debug_stream, debug_level, set_debug_level):
+ Define only if YYDEBUG.
+ * tests/calc.at (_AT_DATA_CALC_Y) [!YYDEBUG]: Omit call to
+ set_debug_level.
+ * tests/regression.at (_AT_DATA_DANCER_Y) [!YYDEBUG]: Likewise.
+ * tests/calc.at (AT_CHECK_CALC_GLR_CC): Uncomment calls to
+ AT_CHECK_CALC_GLR_CC that are working now.
+
+2006-09-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.cc (YYERROR_VERBOSE, YYTOKEN_TABLE): Remove.
+ We don't need them in glr.cc, and glr.c defines them.
+ Defining YYERROR_VERBOSE to 0 here breaks glr.c, since glr.c
+ assumes that defining it to anything is the same as defining
+ it to 1. Problem reported by Paolo Bonzini.
+
+2006-09-12 Paolo Bonzini <bonzini@gnu.org> (tiny change)
+
+ * data/c.m4 (b4_null, b4_case): Define.
+ * src/output.c (prepare_symbols): Use b4_null.
+ (user_actions_output): Use b4_case.
+
+2006-09-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (b4_shared_declarations): Put start-header first,
+ before any #includes that we generate, so that feature-test
+ macros work. Problem reported by Michael Deutschmann in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00004.html>.
+ * data/lalr1.cc: Likewise.
+ * doc/bison.texinfo (Prologue): Document that feature-test macros
+ should be defined before any Bison declarations.
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Put defns
+ that depend on location.hh after, not before, Bison decls, since
+ we now include location.hh after the first user prologue.
+
+ * doc/bison.texinfo (Calc++ Parser): Fix memory leak reported by
+ Sander Brandenburg in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-09/msg00002.html>.
+ Also, fix minor white space and comment issues.
+ (Prologue): Mention that it's better to define feature-test macros
+ before Bison declarations. Problem reported by Michael Deutschmann.
+
+ * README-cvs: Fix typo: "&" should be "&&". Problem reported
+ by Jim Meyering.
+ * m4/.cvsignore: Add argmatch.m4. Remove obstack.m4, strerror_r.m4.
+ This adjusts to recent gnulib changes.
+
+2006-09-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Finish implementation of per-type %destructor/%printer. Discussed
+ starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>.
+ * NEWS (2.3+): Add a description of this feature to the default
+ %destructor/%printer description.
+ * doc/bison.texinfo (Freeing Discarded Symbols): Likewise.
+ * src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set):
+ Invoke semantic_type_destructor_set or semantic_type_printer_set when a
+ list node contains a semantic type.
+ * src/symtab.c, src/symtab.h: Extend with a table that associates
+ semantic types with their %destructor's and %printer's.
+ (semantic_type_from_uniqstr, semantic_type_get,
+ semantic_type_destructor_set, semantic_type_printer_set): New functions
+ composing the public interface of that table.
+ (symbol_destructor_get, symbol_destructor_location_get,
+ symbol_printer_get, symbol_printer_location_get): If there's no
+ per-symbol %destructor/%printer, look up the per-type before trying
+ the default.
+ * tests/actions.at (Per-type %printer and %destructor): New test case.
+ * tests/input.at (Default %printer and %destructor redeclared):
+ Extend to check that multiple occurrences of %symbol-default in a
+ single %destructor/%printer declaration is an error.
+ (Per-type %printer and %destructor redeclared, Unused values with
+ per-type %destructor): New test cases.
+
+2006-09-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Require default %destructor/%printer to be declared using
+ %symbol-default instead of an empty symbol list, and start working on
+ new per-type %destructor/%printer. Discussed at
+ <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.
+ (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
+ %symbol-default.
+ (grammar_declaration): Use generic_symlist in %destructor and %printer
+ declarations instead of symbols.1 or an empty list.
+ (symbol_declaration, precedence_declaration, symbols.1): Update actions
+ for changes to symbol_list.
+ * src/reader.c: Update for changes to symbol_list.
+ * src/scan-code.l: Likewise.
+ * src/scan-gram.l: Scan new PERCENT_SYMBOL_DEFAULT token.
+ * src/symlist.c, src/symlist.h: Extend such that a list node may
+ represent a semantic type or a %symbol-default in addition to just an
+ ordinary symbol. Add switched functions for setting %destructor's and
+ %printer's.
+ * tests/actions.at, tests/input.at: Add %symbol-default to all default
+ %destructor/%printer declarations.
+
+2006-08-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Whether the default %destructor/%printer applies to a particular symbol
+ isn't a question of whether the user *declares* that symbol (in %token,
+ for example). It's a question of whether the user by any means
+ *defines* the symbol at all (by simply using a char token, for
+ example). $end is defined by Bison whereas any other token with token
+ number 0 is defined by the user. The error token is always defined by
+ Bison regardless of whether the user declares it with %token, but we
+ may one day let the user define error as a nonterminal instead.
+ * NEWS (2.3+): Say "user-defined" instead of "user-declared".
+ * doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
+ the meaning of "user-defined".
+ * tests/actions.at (Default %printer and %destructor for user-declared
+ end token): Rename to...
+ (Default %printer and %destructor for user-defined end token): ...
+ this.
+
+ * src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
+ computation of whether to apply the default, don't maintain a list of
+ every Bison-defined symbol. Instead, just check for a first character
+ of '$', which a user symbol cannot have, and check for the error token.
+
+2006-08-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't apply the default %destructor or %printer to the error token,
+ $undefined, or $accept. This change fits the general rule that the
+ default %destructor and %printer are only for user-declared symbols,
+ and it solves several difficulties that are described in the new test
+ cases listed below.
+ * src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
+ * tests/actions.at (Default %printer and %destructor are not for error
+ or $undefined, Default %printer and %destructor are not for $accept):
+ New test cases.
+
+2006-08-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Allow %start after the first rule.
+ * src/reader.c (grammar_current_rule_begin): Don't set the start symbol
+ when parsing the first rule.
+ (check_and_convert_grammar): Search for it here after all grammar
+ declarations have been parsed. Skip midrules, which have dummy LHS
+ nonterminals.
+ * src/symtab.c (symbol_is_dummy): New function.
+ * src/symtab.h (symbol_is_dummy): Declare it.
+ * tests/input.at (%start after first rule): New test.
+
+2006-08-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Redo some of the previous commit: add back the ability to use
+ non-aliased/undeclared string literals since it might be useful to
+ those declaring %token-table.
+ * src/reader.c (check_and_convert_grammar): Undo changes in previous
+ commit: don't worry about complaints from symbols_pack.
+ * src/symtab.c (symbol_new, symbol_class_set,
+ symbol_check_alias_consistency): Undo changes in previous commit: count
+ each string literal as a new symbol and token, assign it a symbol
+ number, and don't complain about non-aliased string literals.
+ (symbols_pack): Since symbol_make_alias still does not decrement symbol
+ and token counts but does still set aliased tokens to the same number,
+ symbol_pack_processor now leaves empty slots in the symbols array.
+ Remove those slots.
+ * tests/regression.at (Undeclared string literal): Remove test case
+ added in previous commit since non-aliased string literals are allowed
+ again.
+ (Characters Escapes, Web2c Actions): Undo changes in previous commit:
+ remove unnecessary string literal declarations.
+ * tests/sets.at (Firsts): Likewise.
+
+2006-08-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't allow an undeclared string literal, but allow a string literal to
+ be used before its declaration.
+ * src/reader.c (check_and_convert_grammar): Don't invoke packgram if
+ symbols_pack complained.
+ * src/symtab.c (symbol_new): Don't count a string literal as a new
+ symbol.
+ (symbol_class_set): Don't count a string literal as a new token, and
+ don't assign it a symbol number since symbol_make_alias does that.
+ (symbol_make_alias): It's not necessary to decrement the symbol and
+ token counts anymore. Don't assume that an alias declaration occurs
+ before any uses of the identifier or string, and thus don't assert that
+ one of them has the highest symbol number so far.
+ (symbol_check_alias_consistency): Complain if there's a string literal
+ that wasn't declared as an alias.
+ (symbols_pack): Bail if symbol_check_alias_consistency failed since
+ symbol_pack asserts that every token has been assigned a symbol number
+ although undeclared string literals have not.
+ * tests/regression.at (String alias declared after use, Undeclared
+ string literal): New test cases.
+ (Characters Escapes, Web2c Actions): Declare string literals as
+ aliases.
+ * tests/sets.at (Firsts): Likewise.
+
+2006-08-14 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In the grammar scanner, STRING_FINISH unclosed constructs and return
+ them to the parser in order to improve error messages.
+ * src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
+ SC_BRACED_CODE, SC_PROLOGUE): Implement.
+ * tests/input.at (Unclosed constructs): New test case.
+ * tests/regression.at (Invalid inputs): Update now that unclosed %{ is
+ seen.
+
+ * src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
+ unused global.
+
+2006-08-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Handle string aliases for character tokens correctly.
+ * src/symtab.c (symbol_user_token_number_set): If the token has an
+ alias, check and set its alias's user token number instead of its own,
+ which is set to indicate the alias. Previously, every occurrence of
+ the character token in the grammar overwrote that alias indicator with
+ the character code.
+ * tests/input.at (String aliases for character tokens): New test.
+
+2006-08-12 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
+
+2006-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
+ to prevent failures when building on older platforms.
+ Check for autopoint failure.
+ Set XGETTEXT_OPTIONS to values that check for C format strings,
+ so that translators are warned about them (this also helps
+ prevent core dumps).
+
+ * lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
+ function, since it simplifies our code a bit.
+
+ * configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
+ rather than -W, so we don't get bogus warnings about sign comparisons.
+ Add -Wpointer-arith, since that warning is useful (it reports code
+ that does not conform to C89 and that some compilers reject).
+ * data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
+ since it's no longer needed.
+
+2006-08-10 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up scanners a bit.
+ * src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
+ definitions so gcc won't warn when obstack_for_string is unused.
+ * src/scan-code.l: config.h and system.h are already #include'd by
+ scan-code-c.c, so get rid of them here.
+ * src/scan-gram.l: Likewise.
+ * src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
+ definitions rather than duplicating the rest of it.
+ * src/scan-gram-c.c, scan-skel-c.c: #include "system.h".
+
+2006-08-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Suppress signed/unsigned comparison warnings for yycheck.
+ * data/c.m4 (b4_safest_int_type): New macro.
+ * data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
+ a signed int type, cast it to b4_safest_int_type first.
+ * data/yacc.c: Likewise.
+ (b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
+ also overwritten.
+
+2006-08-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
+
+ * doc/bison.texinfo: Fix some typos.
+
+2006-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
+ po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.
+
+ * bootstrap (gnulib_tool): Stop using --assume-autoconf;
+ the latest gnulib does this a different way.
+ (get_translations): Sharuzzaman Ahmat Raslan reported that the ms
+ translation was patched, so stop omitting it.
+
+2006-07-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Enable declaration of default %printer/%destructor. Make the parser
+ use these for all user-declared grammar symbols for which the user does
+ not declare a specific %printer/%destructor. Thus, the parser uses it
+ for token 0 if the user declares it but not if Bison generates it as
+ $end. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
+ * NEWS (2.3+): Mention.
+ * doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
+ declare a %destructor for a mid-rule's semantic value. It's just
+ impossible to declare one specific to it.
+ (Freeing Discarded Symbols): Mention that @$ can be used in %destructor
+ code. Describe default %destructor form.
+ * src/parse-gram.y (grammar_declaration): Parse default
+ %printer/%destructor declarations.
+ * src/output.c (symbol_destructors_output): Use symbol_destructor_get
+ and symbol_destructor_location_get rather than accessing the destructor
+ and destructor_location members of struct symbol.
+ (symbol_printers_output): Likewise but for %printer's.
+ * src/reader.c (symbol_should_be_used): Likewise but for %destructor's
+ again.
+ * src/symtab.c (default_destructor, default_destructor_location,
+ default_printer, default_printer_location): New static global
+ variables to record the default %destructor and %printer.
+ (symbol_destructor_get, symbol_destructor_location_get,
+ symbol_printer_get, symbol_printer_location_get): New functions to
+ compute the appropriate %destructor and %printer for a symbol.
+ (default_destructor_set, default_printer_set): New functions to set the
+ default %destructor and %printer.
+ * src/symtab.h: Prototype all those new functions.
+ * tests/actions.at (Default %printer and %destructor): New test to
+ check that the right %printer and %destructor are called, that they're
+ not called for $end, and that $$ and @$ work correctly.
+ (Default %printer and %destructor for user-declared end token): New
+ test to check that the default %printer and %destructor are called for
+ a user-declared end token.
+ * tests/input.at (Default %printer and %destructor redeclared, Unused
+ values with default %destructor): New tests to check related grammar
+ warnings and errors.
+
+2006-07-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up handling of %destructor for the end token (token 0).
+ Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
+ and
+ <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.
+
+ Make the skeletons consistent in how they pop the end token and invoke
+ its %destructor.
+ * data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
+ state, which has token number 0, since this would invoke the
+ %destructor for the end token.
+ * data/lalr1.cc (yy::parser::parse): Don't check for the final state
+ until after shifting the end token, or else it won't be popped.
+ * data/yacc.c (yyparse): Likewise.
+
+ * data/glr.c (yyparse): Clear the lookahead after shifting it even when
+ it's the end token. Upon termination, destroy an unshifted lookahead
+ even when it's the end token.
+ * data/lalr1.cc (yy::parser::parse): Likewise.
+ * data/yacc.c (yyparse): Likewise.
+
+ * src/reader.c (packgram): Don't check rule 0. This suppresses unused
+ value warnings for the end token when the user gives the end token a
+ %destructor.
+
+ * tests/actions.at (Printers and Destructors): Test all the above.
+
+2006-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ Update to latest gnulib and gettext versions.
+ * bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
+ Add fopen-safer.
+ (gnulib_files): Add m4/warning.m4. Don't worry about files
+ overwritten by autopoint.
+ Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
+ Suppress "id", "ms", "tr" translations for now, since gettext 0.15
+ rejects them.
+ Don't use autoreconf; instead, invoke autopoint etc. by hand,
+ so that we can remove the intl files at a better time.
+ (intl_files_to_remove): Remove aclocal.m4, since it gets
+ rebuilt anyway. Remove m4/inttypes_h.m4, m4/inttypes.m4,
+ m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
+ m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
+ Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
+ Remove datarootdir hack; no longer needed.
+ * configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
+ (AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
+ * lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
+ strdup.h.
+ * m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
+ * m4/warning.m4: Remove from CVS, since we now use gnulib's version.
+
+2006-07-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Adjust to today's change to gnulib-tool by invoking
+ it with --assume-autoconf='latest-stable'.
+
+2006-07-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
+ least 1.4.7 and 1.4.4) by putting a #line between `typedef union
+ YYSTYPE' and `{'.
+ * src/muscle_tab.h (muscle_grow): Replace the header comments with
+ those from muscle_tab.c since the old ones are misleading.
+
+2006-07-13 Akim Demaille <akim@epita.fr>
+
+ Support %define "KEY" {VALUE}.
+ * src/scan-code.h, src/scan-code.l (translate_action)
+ (translate_rule_action, translate_symbol_action, translate_code):
+ Return char *, not const char *.
+ * src/parse-gram.y (declaration): Rename as...
+ (prologue_declaration): this.
+ (string_content): Remove this nonterminal, use STRING.
+ (braceless, content, content.opt): New nonterminal.
+ Use them.
+ (%define): Now accept content.opt, i.e., accept also BRACED_CODE
+ as value.
+ * src/scan-gram.l (getargs.h): Don't include it.
+
+2006-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
+ rather than a for-loop that declares a local bool variable. This
+ should work around a compatibility problem with a Cray x1e C++
+ compiler reported by Hung Nguyen in
+ <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00022.html>.
+ The for-loop was introduced in the 2004-11-17 change but I don't
+ know why it was needed.
+
+2006-07-12 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4: Comment changes.
+
+2006-07-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/complain.c (error_message, ERROR_MESSAGE): New.
+ To factor...
+ (fatal_at, fatal, warn_at, warn, complain_at, complain): these.
+ * src/complain.h, src/complain.c (warning_issued): Remove, unused.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Instead of %union, you can define and use your own union type
+ YYSTYPE if your grammar contains at least one <type> tag.
+ Your YYSTYPE need not be a macro; it can be a typedef.
+ * doc/bison.texinfo (Value Type, Multiple Types, Location Type):
+ (Union Decl, Decl Summary): Document this.
+ * data/glr.c (YYSTYPE): Implement this.
+ * data/glr.cc (YYSTYPE): Likewise.
+ * data/lalr1.cc (YYSTYPE): Likewise.
+ * data/yacc.c (YYSTYPE): Likewise.
+ * src/output.c (prepare): Output tag_seen_flag.
+ * src/parse-gram.y (declaration, grammar_declaration):
+ Use 'union_seen' rather than 'typed' to determine whether
+ %union has been seen, since grammars can now be typed without
+ %union.
+ (symbol_declaration, type.opt, symbol_def):
+ Keep track of whether a tag has been seen.
+ * src/reader.c (union_seen, tag_seen): New vars.
+ (typed): remove.
+ * src/reader.h (union_seen, tag_seen, typed): Likewise.
+ * src/scan-code.l (untyped_var_seen): New variable.
+ (handle_action_dollar): Adjust to above changes.
+ (handle_action_dollar, handle_action_at):
+ Improve overflow checking for outlandish numbers.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
+ avoid new diagnostics generated by above changes.
+ * tests/regression.at (YYSTYPE typedef): Add test to check
+ for type tags without %union.
+
+ * src/symlist.c (symbol_list_length): Return int, not unsigned
+ int, since callers expect int. This may need to get revisited
+ once we have proper integer overflow checking.
+
+ * src/scan-gram.h (gram_scanner_cursor): Remove decl, since this
+ object is now static.
+
+ * src/getargs.c (flags_argmatch): Return void, not int,
+ to pacify ./configure --enable-gcc-warnings.
+
+ * src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string)
+ since last_string is already defined to FLEX_PREFIX (last_string).
+
+2006-07-09 Akim Demaille <akim@lrde.epita.fr>
+
+ Implement --warnings/-W.
+ * src/getargs.c (report_argmatch, trace_argmatch): Remove,
+ replaced by...
+ (flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
+ Adjust callers.
+ * src/getargs.h, src/getargs.c (warnings, warnings_flags)
+ (warnings_args, warnings_types): New.
+ (getargs, short_options, long_options): Accept -W/--warnings.
+ Sort the options by alphabetical order, upper case letter right
+ before its lower case.
+
+2006-07-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Change %merge result type clash warnings to errors. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
+ * src/reader.c (record_merge_function_type): Use complain_at.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): Update test case results.
+
+2006-07-09 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/getargs.h, src/getargs.c: Swap --report and --trace handling
+ to be in alphabetical order.
+ (trace_args): Spelling fixes.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
+ so they don't collide with user-defined macros.
+ (yy_stack_print): Don't assume that yytype_int16 promotes to int;
+ this was never guaranteed, and now that we're using gnulib stdint,
+ which defines int_fast16_t to long int, the problem is exposed.
+
+2006-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_basename): Simplify a bit, since we don't
+ need the full POSIX semantics (and weren't implementing them
+ anyway).
+
+ Adjust to Autoconf 2.60 and today's gnulib.
+ * bootstrap (gnulib_modules): Add stdint.
+ Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
+ no longer copies it.
+ (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
+ since stdint needs the former and wcwidth (which is now required
+ by mbswidth) needs the latter.
+ Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
+ work around a compatibility glitch between gettext 0.14.6 and
+ Autoconf 2.60.
+ * configure.ac (AC_PREREQ): Require Autoconf 2.60.
+ Do not check for uintptr_t, since new stdint module does the right
+ thing.
+ * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
+ Add stdint.h, stdint_.h, wcwidth.h.
+ * m4/.cvsignore: Remove alloca.m4, onceonly.m4.
+ Add absolute-header.m4, double-slash-root.m4, longlong.m4,
+ stdint.m4, wchar_t.m4, wcwidth.m4.
+ * src/files.c: Include <dirname.h> and <stdio-safer.h> in the
+ usual order for ../lib/*.h files.
+ (file_name_split): Use last_component, not base_name, to adjust
+ to gnulib changes.
+ * src/parse-gram.h: Include <strverscmp.h> in the usual order
+ for ../lib/*.h files.
+ (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
+ Define unconditionally, since we now assume the stdint module.
+ * src/scan-skel.l: Include <dirname.h>.
+ (BASE_QPUTS): Use last_component, not base_name.
+ * src/system.h: Include <unlocked-io.h> in the usual order
+ for ../lib/*.h files. Include <stdint.h> unconditionally,
+ since we now use the stdint module.
+ (uintptr_t): Declare if UINTPTR_MAX is not defined, not
+ HAVE_UINTPTR_T, since we now use the stdint module.
+ (base_name): Remove decl, since files now include <dirname.h>
+ to get the decl.
+
+2006-07-08 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
+ New, default to 1.
+ * data/yacc.c, data/glr.c, data/location.cc: Use them.
+ * NEWS, doc/bison.texinfo: The initial column and line are 1 by
+ default.
+ * tests/calc.at: Adjust.
+
+2006-07-08 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_basename): New.
+ (b4_syncline): Also output the location of its invocation (from
+ the skeleton).
+ (b4_user_action, b4_define_user_action, b4_user_actions)
+ (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
+ (b4_user_stype): New.
+ * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
+
+2006-07-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In the grammar file, the first column is 1 not 0 on the first line as
+ on every other line.
+ * src/parse-gram.y (%initial-action): Initialize @$ correctly.
+ * tests/input.at (Torturing the Scanner): Update output.
+
+ * src/scan-gram.l (scanner_cursor): Declare it static.
+
+2006-07-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In warnings, say "previous declaration" rather than "first
+ declaration".
+ * src/symtab.c (redeclaration): Do that here.
+ * src/reader.c (record_merge_function_type): In the case of a result
+ type clash, report the previous declaration rather than the very first
+ one in the grammar file.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): Add a third declaration to check this behavior.
+ * tests/input.at (Incompatible Aliases): Update output.
+
+2006-06-27 Akim Demaille <akim@epita.fr>
+
+ * doc/Doxyfile.in: New.
+ * doc/Makefile.am: Use it.
+ * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't miss %merge result type warnings just because the LHS types are
+ declared after the %merge. This continues the effort of the previous
+ patch.
+ * src/reader.c (get_merge_function): Don't set the merger type yet.
+ (record_merge_function_type): New function for setting the merger type
+ and checking for clashes.
+ (grammar_current_rule_merge_set): Set the location of the %merge for
+ the current rule.
+ (packgram): Invoke record_merge_function_type for each rule now that
+ all symbol type declarations have been parsed.
+ * src/reader.h (merger_list.type_declaration_location): New member
+ storing the location of the first %merge from which the type for this
+ merging function was derived.
+ * src/symlist.h (symbol_list.merger_declaration_location): New member
+ storing the location of a rule's %merge, if any.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Get action warnings (grammar_rule_check) right even when symbol
+ declarations appear after the rules. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+ Don't mistake the type of $$ in a midrule to be that of its parent
+ rule's $$.
+ * src/reader.c (grammar_current_rule_end): Don't invoke
+ grammar_rule_check yet since not all symbol declarations may have been
+ parsed yet.
+ (grammar_midrule_action): Likewise.
+ Don't record whether the midrule's $$ has been used yet since actions
+ haven't been translated yet.
+ Record the midrule's parent rule and its RHS index within the parent
+ rule.
+ (grammar_current_rule_action_append): Don't translate the action yet
+ since not all symbol declarations may have been parsed yet and, thus,
+ warnings about types for $$, $n, @$, and @n can't be reported yet.
+ (packgram): Translate the action and invoke grammar_rule_check now that
+ all symbol declarations have been parsed.
+ * src/scan-code.l (handle_action_dollar): Now that this is invoked
+ after parsing the entire grammar file, the symbol list here in the case
+ of a midrule is actually the midrule's empty RHS, so reference its
+ parent rule's RHS where necessary.
+ On the other hand, now that you can already know it's a midrule, you
+ aren't forced to think $$ has the same type as its parent rule's $$.
+ (handle_action_at): In the case of a midrule, reference the parent rule
+ where necessary.
+ * src/symlist.c (symbol_list_new): Initialize new midrule-related
+ members.
+ (symbol_list_length): Now that this is invoked after all rules have
+ been parsed, a NULL symbol (rather than a NULL symbol list node)
+ terminates a rule. symbol_list_print already does this correctly.
+ * src/symlist.h (symbol_list.midrule_parent_rule,
+ symbol_list.midrule_parent_rhs_index): New members so that midrules can
+ remember their relationships with their parents.
+ * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+ fixed by the above patch.
+ (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+ implementing...
+ (Unused values): ... this old test case and...
+ (Unused values before symbol declarations): ... this new test case.
+ This one is the same as `Unused values' except that all symbol
+ declarations appear after the rules in order to catch the rest of the
+ errors fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ More cleanup.
+ * src/reader.c (current_rule): Declare it static since it's no longer
+ used outside this file.
+ (grammar_current_rule_action_append): Remove redundant arguments from
+ translate_rule_action invocation.
+ * src/reader.h (current_rule): Remove this unused extern.
+ * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+ * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up yesterday's patch.
+ * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+ to...
+ * src/reader.c (grammar_current_rule_action_append): ... here for
+ consistency with grammar_current_rule_symbol_append.
+ * tests/regression.at (Braced code in declaration in rules section):
+ Make yyerror and yylex static as usual.
+
+2006-06-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix bug that mistakes braced code in a declaration in the rules section
+ to be a rule action. Mentioned at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+ * src/scan-gram.l: Move midrule action detection from the start of the
+ scanning of any braced code to...
+ * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+ action. For readability, use $2 and @2 rather than the equivalent
+ global variables.
+ * tests/regression.at (Braced code in declaration in rules section):
+ New test to catch the error fixed by the above patch.
+
+ Work on code readability some.
+ * src/scan-code.l (current_rule): Get rid of this misleading and
+ redundant declaration: it's actually extern'ed in reader.h.
+ (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+ translate_action): Add a rule argument and use it instead of the global
+ current_rule.
+ (translate_rule_action): This already receives current_rule through an
+ argument, so pass it on to translate_action instead of assigning
+ current_rule to current_rule.
+ (translate_symbol_action, translate_code): Pass rule = NULL to
+ translate_action.
+
+2006-06-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rename %before-definitions to %start-header and %after-definitions to
+ %end-header. Don't use these declarations to separate pre-prologue
+ blocks from post-prologue blocks. Add new order-independent
+ declarations %before-header and %after-header as alternatives to the
+ traditional Yacc pre-prologue and post-prologue blocks. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+ * NEWS (2.3+): Update for these changes.
+ * data/glr.c (b4_before_definitions): Update to...
+ (b4_start_header): ... this.
+ (b4_after_definitions): Update to...
+ (b4_end_header): ... this.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+ * doc/bison.texinfo (The prologue): Update names, and replace remaining
+ prologue blocks with %*-header declarations.
+ (Calc++ Parser): Likewise.
+ (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...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ (declaration): Update token names and m4 macro names.
+ When parsing %end-header and %start-header, invoke translate_code
+ before muscle_code_grow, and no longer set global booleans to remember
+ whether these declarations have been seen.
+ Parse new %after-header and %before-header.
+ * src/reader.c (before_definitions, after_definitions): Remove.
+ (prologue_augment): Accept a new bool argument to specify whether to
+ augment the pre-prologue or post-prologue.
+ * src/reader.h (before_definitions, after_definitions): Remove these
+ extern's.
+ (prologue_augment): Add new bool argument.
+ * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+ (PERCENT_END_HEADER): ... this.
+ (PERCENT_BEFORE_DEFINITIONS): Update to...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add comparison operators for C++ location classes. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+ * data/c++.m4 (b4_define_location_comparison): New boolean %define
+ declaration indicating whether filename_type has an operator==. If
+ filename_type is `std::string', it defaults to `1', `0' otherwise.
+ * data/location.cc: Iff b4_define_location_comparison is `1', add
+ operator== and operator!= for class position and for class location.
+
+ Some minor fixes.
+ * src/scan-action.l: Remove unused file.
+ * src/symtab.c (symbol_printer_set): Use printer_location not
+ destructor_location.
+ * src/symtab.h (struct symbol): Replace incorrect source comment for
+ printer members.
+ * tests/input.at (Incompatible Aliases): Update output with correct
+ printer location.
+
+2006-06-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't put the pre-prologue in the header file. For the yacc.c code
+ file and the glr.c header and code files, move the pre-prologue before
+ the token definitions. Add new %before-definitions and
+ %after-definitions to declare code that will go in both the header file
+ and code file. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+ * NEWS (2.3+): Describe these changes.
+ * data/glr.c (b4_pre_prologue): Move from within to before...
+ (b4_shared_declarations): ... this.
+ Add new b4_before_definitions before b4_token_enums.
+ Add new b4_after_definitions at the end.
+ * data/glr.cc (b4_pre_prologue): Replace with...
+ (b4_before_definitions): ... this in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+ code file right before including the header file.
+ (b4_before_definitions): New in the previous position of
+ b4_pre_prologue in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/yacc.c: Clean up some m4 quoting especially in the header file.
+ (b4_token_enums_defines): In the code file, move to right before
+ YYSTYPE for consistency with the header file.
+ (b4_before_definitions): New right before b4_token_enums_defines in
+ both the header and code file.
+ (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+ header and code file.
+ * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+ of prologues for %union dependencies.
+ (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.
+ (Table of Symbols): Add entries for %before-definitions and
+ %after-definitions.
+ * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+ %before-definitions.
+ (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+ (declaration): Parse those declarations and append to
+ b4_before_definitions and b4_after_definitions, respectively.
+ * src/reader.c (before_definitions, after_definitions): New bools to
+ track whether those declarations have been seen.
+ (prologue_augment): Add to the post-prologue if %union,
+ %before-definitions, or %after-definitions has been seen.
+ * src/reader.h (before_definitions, after_definitions): New extern's.
+ * src/scan-gram.l: Scan the new declarations.
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+ prologue block in a %before-definitions or a %after-definitions based
+ on whether the %union is declared.
+ * tests/regression.at (Early token definitions with --yacc, Early token
+ definitions without --yacc): Move tests for token definitions into the
+ post-prologue since token names are no longer defined in the
+ pre-prologue.
+
+2006-06-20 Akim Demaille <akim@epita.fr>
+
+ * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
+ (symbol_get): Use it.
+ * src/parse-gram.y: Use it.
+
+2006-06-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/scan-gram.l: Remove unused declaration of last_string_1 so the
+ build succeeds when configured with --enable-gcc-warnings.
+
+2006-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/parse-gram.y (char_name): New function.
+ (CHAR, STRING, string_content): For %printer, properly escape.
+ (ID): Prefer fputs to fprintf.
+ (id): Reindent to be consistent with other rules.
+ Properly quote char.
+
+ The Translation Project changed its way of publishing translations
+ to maintainers. I haven't received any responses to my request
+ for supporting the old way, or for documenting the new way. I
+ have modified 'bootstrap' to use screen scraping
+ (in this case, HTML scraping). This is unreliable and inelegant,
+ but I don't see any better way. Yuck.
+ * bootstrap (TP_URL, WGET_COMMAND): New vars.
+ (get_translations): New function, which uses HTML scraping to
+ deduce locations of latest translations.
+ Use this function to grab both bison and bison-runtime .po files.
+ Don't bother priming the pump for the runtime-po domain any more,
+ as it's now translated better than bison is.
+
+2006-06-19 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l: No longer "parse" things after `%union' until
+ `{'. Rather, return a single "%union" token.
+ No longer make symbols: return strings, and leave the conversion
+ to symbols to the parser.
+ (SC_PRE_CODE, token_type): Remove.
+ * src/parse-gram.y (%union): New field `character'.
+ Sort tokens.
+ (CHAR): New token.
+ (ID, ID_COLON): Now that the scanner no longer makes them
+ identifiers, adjust all uses to invoke symbol_get.
+ (id_colon): New, wraps the conversion from string to symbol.
+ (%union): Accept a possible union_name.
+ (symbol): Now can be a char.
+ * data/c.m4 (b4_union_name): Leave a default value.
+ * data/glr.c, data/yacc.c: Use it.
+
+2006-06-11 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For associating token numbers with token names for "yacc.c", don't use
+ #define statements unless `--yacc' is specified; always use enum
+ yytokentype. Most important discussions start at:
+ <http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
+ * NEWS (2.3+): Mention.
+ * data/c.m4 (b4_yacc_if): New.
+ (b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
+ token #define's.
+ * doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
+ on token name definitions.
+ * src/getargs.c (usage): Capitalize `Yacc' in English.
+ * src/output.c (prepare): Define b4_yacc_flag.
+ * tests/regression.at (Early token definitions): Test that tokens names
+ are defined before the pre-prologue not just before the post-prologue.
+ Remove this test case and copy to...
+ (Early token definitions with --yacc): ... this to test #define's.
+ (Early token definitions without --yacc): ... and this to test enums.
+
+2006-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Reword the post-2.3 change to not be so optimistic about
+ removing the old "look-ahead" spelling.
+ Update previous look-ahead/lookahead change reports.
+ * REFERENCES: look-ahead -> lookahead (since that's
+ what he actually wrote).
+ * doc/refcard.tex: look ahead -> lookahead,
+ look-ahead -> lookahead
+
+2006-06-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For consistency, use `lookahead' instead of `look-ahead' or
+ `look_ahead'. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
+ and then at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
+ * NEWS: For the next release, note the change to `--report'.
+ * TODO, doc/bison.1: Update English.
+ * doc/bison.texinfo: Update English.
+ (Understanding Your Parser, Bison Options): Document as
+ `--report=lookahead' rather than `--report=look-ahead'.
+ * src/conflicts.c: Update English in comments.
+ (lookahead_set): Rename from look_ahead_set.
+ (flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
+ (resolve_sr_conflict): Rename local look_ahead_tokens to
+ lookahead_tokens, and update other uses.
+ (flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
+ count_rr_conflicts, conflicts_free): Update uses.
+ * src/getargs.c (report_args): Move "lookahead" before alternate
+ spellings.
+ (report_types): Update uses.
+ (usage): For `--report' usage description, state `lookahead' spelling
+ rather than `look-ahead'.
+ * src/getargs.h (report.report_lookahead_tokens): Rename from
+ report_look_ahead_tokens.
+ * src/lalr.c: Update English in comments.
+ (compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
+ (state_lookahead_tokens_count): Rename from
+ state_look_ahead_tokens_count.
+ Rename local n_look_ahead_tokens to n_lookahead_tokens.
+ (lookahead_tokens_print): Rename from look_ahead_tokens_print.
+ Rename local n_look_ahead_tokens to n_lookahead_tokens.
+ Update other uses.
+ Update English in output.
+ (add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
+ * src/print.c: Update English in comments.
+ (lookahead_set): Rename from look_ahead_set.
+ (print_reduction): Rename argument lookahead_token from
+ look_ahead_token.
+ (print_core, state_default_rule, print_reductions, print_results):
+ Update uses.
+ * src/print_graph.c: Update English in comments.
+ (print_core): Update uses.
+ * src/state.c: Update English in comments.
+ (reductions_new): Update uses.
+ (state_rule_lookahead_tokens_print): Rename from
+ state_rule_look_ahead_tokens_print, and update other uses.
+ * src/state.h: Update English in comments.
+ (reductions.lookahead_tokens): Rename from look_ahead_tokens.
+ (state_rule_lookahead_tokens_print): Rename from
+ state_rule_look_ahead_tokens_print.
+ * src/tables.c: Update English in comments.
+ (conflict_row, action_row): Update uses.
+ * tests/glr-regression.at
+ (Incorrect lookahead during deterministic GLR,
+ Incorrect lookahead during nondeterministic GLR): Rename
+ print_look_ahead to print_lookahead.
+ * tests/torture.at: Update English in comments.
+ (AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
+ AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
+ (Many lookahead tokens): Update uses.
+ * data/glr.c: Update English in comments.
+ * lalr1.cc: Likewise.
+ * yacc.c: Likewise.
+ * src/conflicts.h: Likewise.
+ * src/lalr.h: Likewise.
+ * src/main.c: Likewise.
+ * src/output.c: Likewise.
+ * src/parse-gram.c: Likewise.
+ * src/tables.h: Likewise.
+ * tests/calc.at: Likewise.
+
+2006-06-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/flex-scanner.h (yytext): Remove stray `*/' in #define.
+
+2006-06-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * TODO: Add request from Nelson H. F. Beebe to be able to install
+ Bison without installing the yacc script.
+
+2006-06-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/flex-scanner.h: For the sake of Flex 2.5.4, don't #define yyleng
+ and yytext if they're already #define'd.
+ * src/flex-scanner.h, src/location.h: Move #include "system.h" to...
+ * src/scan-code-c.c: ... here.
+ * src/scan-code.l, src/scan-gram.l: ... and here. Also #include
+ <config.h>.
+
+2006-06-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Get Bison to build again when configured with --enable-gcc-warnings.
+ * src/location.c, src/location.h, src/main.c, src/scan-code.l: Add some
+ missing #include's.
+ * src/scan-code.l (handle_action_dollar, handle_action_at): Rename
+ loc argument as it shadows a global.
+ * src/scan-gram.l: Remove stray comma that prevents boundary_set
+ invocation.
+
+ * src/.cvsignore: Add scan-code.c.
+
+2006-06-07 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l: Move the "add a trailing ; to actions" code
+ to...
+ * src/scan-code.l: here.
+ * tests/input.at (Torturing the Scanner): Fix another location
+ error.
+
+2006-06-07 Akim Demaille <akim@epita.fr>
+
+ * src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash.
+
+2006-06-06 Akim Demaille <akim@epita.fr>
+
+ Extract the parsing of user actions from the grammar scanner.
+ As a consequence, the relation between the grammar scanner and
+ parser is much simpler. We can also split "composite tokens" back
+ into simple tokens.
+ * src/gram.h (ITEM_NUMBER_MAX, RULE_NUMBER_MAX): New.
+ * src/scan-gram.l (add_column_width, adjust_location): Move to and
+ rename as...
+ * src/location.h, src/location.c (add_column_width)
+ (location_compute): these.
+ Fix the column count: the initial column is 0.
+ (location_print): Be robust to ending column being 0.
+ * src/location.h (boundary_set): New.
+ * src/main.c: Adjust to scanner_free being renamed as
+ gram_scanner_free.
+ * src/output.c: Include scan-code.h.
+ * src/parse-gram.y: Include scan-gram.h and scan-code.h.
+ Use boundary_set.
+ (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_INITIAL_ACTION)
+ (PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Remove the {...} part,
+ which is now, again, a separate token.
+ Adjust all dependencies.
+ Whereever actions with $ and @ are used, use translate_code.
+ (action): Remove this nonterminal which is now useless.
+ * src/reader.c: Include assert.h, scan-gram.h and scan-code.h.
+ (grammar_current_rule_action_append): Use translate_code.
+ (packgram): Bound check ruleno, itemno, and rule_length.
+ * src/reader.h (gram_in, gram__flex_debug, scanner_cursor)
+ (last_string, last_braced_code_loc, max_left_semantic_context)
+ (scanner_initialize, scanner_free, scanner_last_string_free)
+ (gram_out, gram_lineno, YY_DECL_): Move to...
+ * src/scan-gram.h: this new file.
+ (YY_DECL): Rename as...
+ (GRAM_DECL): this.
+ * src/scan-code.h, src/scan-code.l, src/scan-code-c.c: New.
+ * src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
+ (gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
+ (gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
+ Move these declarations, and...
+ (obstack_for_string, STRING_GROW, STRING_FINISH, STRING_FREE):
+ these to...
+ * src/flex-scanner.h: this new file.
+ * src/scan-gram.l (rule_length, rule_length_overflow)
+ (increment_rule_length): Remove.
+ (last_braced_code_loc): Rename as...
+ (gram_last_braced_code_loc): this.
+ Adjust to the changes of the parser.
+ Move all the handling of $ and @ into...
+ * src/scan-code.l: here.
+ * src/scan-gram.l (handle_dollar, handle_at): Remove.
+ (handle_action_dollar, handle_action_at): Move to...
+ * src/scan-code.l: here.
+ * src/Makefile.am (bison_SOURCES): Add flex-scanner.h,
+ scan-code.h, scan-code-c.c, scan-gram.h.
+ (EXTRA_bison_SOURCES): Add scan-code.l.
+ (BUILT_SOURCES): Add scan-code.c.
+ (yacc): Be robust to white spaces.
+
+ * tests/conflicts.at, tests/input.at, tests/reduce.at,
+ * tests/regression.at: Adjust the column numbers.
+ * tests/regression.at: Adjust the error message.
+
+2006-06-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+ Use Akim's wording from
+ <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00056.html>.
+
+2006-06-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Between Bison releases, manually append `+' to the previous Bison
+ release number, and use that as a signal to automatically print the
+ ChangeLog's CVS Id keyword from --version. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
+ * ChangeLog: Add Id header.
+ * configure.ac (AC_INIT): Append `+' to `2.3'.
+ * src/.cvsignore: Add revision.c.
+ * src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
+ (BUILT_SOURCES): Add revision.c.
+ (revision.c): New target rule. This file defines a new global variable
+ named revision. It initializes it with either the Id from ChangeLog
+ or, if VERSION doesn't contain `+', with the empty string.
+ * src/getargs.c (version): Print the value of revision.
+ * src/revision.h: Extern revision.
+
+2006-06-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.3.
+ * configure.ac (AC_INIT): Likewise.
+
+2006-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (YYRECOVERING): Define to be a function-like macro
+ with no arguments, not as an object-like macro. This is for
+ compatibility with data/yacc.c. Problem reported by John P. Hartmann in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00059.html>.
+ * doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols):
+ Document this.
+
+2006-05-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Back out yesterday's modification of the
+ --help output so that we don't have to wait for translation before
+ releasing 2.3.
+
+2006-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Introduction): Don't say "GLR grammar".
+ Problem reported by Akim Demaille.
+
+2006-05-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+
+2006-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c (yy_reduce_print): Omit trailing white space in
+ generated source code. Problem reported by Frans Englich in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00049.html>.
+
+2006-05-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint (gzip_rsyncable, GZIP_ENV): Compute within the
+ shell, not within 'make', so that 'make' by an ordinary builder
+ (using GNU make) does not worry about configuring gzip. This also
+ works around a bug reported independently by Keith Thompson and by
+ Georg Schwarz, whereby gzip 1.2.4 --help would output usage on
+ stderr rather than stdout, messing up the build logs.
+
+2006-05-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/yacc.c (yyparse): Wrap the final return from yyparse inside YYID
+ to make sure that YYID will never be unused. This fixes a 'make
+ maintainer-check' failure caused by the recent changes to the 'Trivial
+ grammars' test case, which caused g++ 4.1.0 to complain that YYID was
+ not used.
+ * data/glr.c (yyparse): Wrap yyparse's return inside YYID just in case.
+
+2006-05-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyresolveLocations): Remove bogus YYASSERT that the
+ state before an empty RHS is always resolved here. Only the location
+ of that state is guaranteed to be resolved, and that's enough. This
+ fixes the remaining bug reported by Derek M. Jones in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+ * tests/glr-regression.at (Uninitialized location when reporting
+ ambiguity): Test the above case.
+ Also, the embedded comments in this test case claim it checks the case
+ of an empty RHS that has inherited the initial location. However, the
+ corresponding LHS was already resolved, so yyresolveLocations didn't
+ actually have reason to modify it. Fix this by forcing
+ nondeterministic operation at the beginning of the parse.
+
+2006-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_yy_symbol_print_generate):
+ (b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
+ 'const YYSTYPE', and similarly for YYLTYPE. This fixes one
+ of the bugs reported today by Derek M Jones in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+ * doc/bison.texinfo (Value Type): Document that YYSTYPE must be
+ defined to be a type name without parens or brackets.
+ (Location Type): Similarly for YYLTYPE.
+ * tests/regression.at (Trivial grammars): Put in a test for this
+ bug that will be caught by 'make maintainer-check' (though not,
+ alas, by 'make check' unless your compiler is picky).
+
+2006-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.2.
+ * configure.ac (AC_INIT): Likewise.
+
+2006-05-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyreportTree): Make room in yystates for the state
+ preceding the RHS. This fixes the segmentation fault reported by Derek
+ M. Jones in
+ <http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
+ (yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
+ to the user. Reported for yyreportTree by Derek M. Jones later in the
+ same thread.
+ * THANKS: Add Derek M. Jones.
+ Update my email address.
+ Fix typo in Steve Murphy's name.
+
+2006-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyreportSyntaxError): Fix off-by-one error in
+ checking against YYLAST that caused the parser to miss a potential
+ alternative in its diagnostic.
+ Problem reported by Maria Jose Moron Fernandez in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
+ * data/lalr1.cc (yysyntax_error_): Likewise.
+ * data/yacc.c (yysyntax_error): Likewise.
+ * tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
+ tokens, in case we run into an older C compiler.
+ (_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
+ Use them to check for the off-by-one error fixed above.
+
+ * data/yacc.c (yytnamerr): Fix typo: local var should be of type
+ YYSIZE_T, not size_t.
+ * tests/regression.at (Trivial grammars): New test, to catch
+ the error fixed by the above patch.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/bison.texinfo (C++ Bison Interface): Clarify the naming
+ scheme.
+ Reported by Steve Murphy.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
+ * data/glr.cc: b4_location_flag is now b4_locations_flag.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ Implement --trace=m4.
+ * src/getargs.c (trace_types, trace_args): Accept trace_m4.
+ * src/output.c (output_skeleton): When set, pass -dV to m4.
+
+ Factor the handling of flags in m4.
+ * src/output.c (prepare): Rename the muscle names debug, defines,
+ error_verbose to debug_flag, defines_flag, error_verbose_flag.
+ * data/c.m4: Adjust.
+ (_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
+ Use b4_define_flag_if to define other b4_FLAG_if macros.
+ (b4_location_if): As a consequence, rename as...
+ (b4_locations_if): this, for consistency.
+ Adjust all the skeletons.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * etc/bench.pm: Shorten bench names.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/output.h, src/output.c (error_verbose): Move to...
+ * src/getargs.h, src/getargs.c: here.
+ Sort the flags.
+ Adjust dependencies.
+
+2006-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_copyright): Put the special exception for Bison
+ skeletons here, so we don't have to put it in each skeleton. All
+ uses changed. Suggested by Akim Demaille. Also, wrap the
+ copyright notice, in case it is longer than 80 columns. Replace
+ comma by newline after title.
+
+2006-05-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Calc++ Scanner): The flex behavior is an
+ incompatibility, not a bug. Mention that it wasn't fixed as of
+ flex 2.5.33.
+
+2006-05-11 Akim Demaille <akim@lrde.epita.fr>
+
+ * examples/extexi: Enforce the precedence of concatenation over
+ >>.
+ Reported by Tommy Nordgren.
+
+2006-05-11 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes
+ with the member "token".
+ Reported by Martin Nylin.
+
+2006-05-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c: Switch to Bison 2.2 special-exception language in
+ the copyright notice. Use more-regular format for titles and
+ copyright notices.
+ * data/glr.cc: Likewise.
+ * data/location.cc: Likewise.
+ * data/yacc.cc: Likewise.
+ * doc/bison.texinfo (Conditions): Document this.
+ * NEWS: likewise. Upgrade version to 2.2.
+
+2006-04-27 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/glr.cc: Remove dead code.
+
+2006-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Comment out the AM_CPPFLAGS line, since we don't use
+ that variable and the line breaks the bootstrap. Problem reported
+ by Juan M. Guerrero.
+
+2006-04-24 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/bison.texinfo (Multiple start-symbols): New.
+
+2006-04-24 Akim Demaille <akim@lrde.epita.fr>
+
+ * etc/README, etc/bench.pl: New.
+
+2006-04-03 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/scan-gram.l: Be robust to BRACED_CODE appearing before any
+ rule.
+ Reported by Mickael Labau.
+ * tests/input.at (Torturing the Scanner): Test it.
+
+2006-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Decl Summary): Don't mention yylloc twice.
+ Problem reported by Bob Rossi.
+
+2006-03-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo: Remove @shorttitlepage stuff; it wasn't used
+ and didn't really work.
+ For the index, use @ifnotinfo, not @iftex.
+ Minor cleanups of spacing and terminology.
+
+2006-03-12 Akim Demaille <akim@lrde.epita.fr>
+
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Fix the definition
+ of AT_NAME_PREFIX when %name-prefix is not used.
+
+2006-03-12 Akim Demaille <akim@lrde.epita.fr>
+
+ Apply --prefix to C++ skeletons too: they change the namespace.
+ The test suite already exercize these cases.
+ * data/c++.m4 (b4_namespace): New.
+ * data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
+ * data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
+ * data/yacc.c, data/glr.c: Remove a useless `[]'.
+ * doc/bison.texinfo: Document it.
+ (Option Cross Key): Use @multitable in all formats. It looks
+ nicer, even in TeX outputs.
+ (Rules): Use the same code whatever the output type is.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
+ (_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
+ * tests/calc.at: Use it, instead of hard coding `yy'.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * TODO: Remove dead items.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/FAQ: Remove, merged into...
+ * doc/bison.texinfo (FAQ): this.
+ * doc/Makefile.am (EXTRA_DIST): Adjust.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_token_enum): Always define the enum of tokens,
+ even if empty.
+ * data/lalrl1.cc, data/glr.cc (parser::token_type): New.
+ * doc/bison.texinfo (Calc++ Scanner): Use it.
+
+2006-03-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix two nits reported by twlevo, plus one more that I discovered.
+
+ * src/assoc.h (assoc_to_string): Give a name to the arg, as
+ this is the usual Bison style.
+ * src/location.h (location_print): Likewise.
+
+ * src/reader.h (token_name): Likewise.
+
+2006-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some nits reported by twlevo.
+ * doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
+ and "POSIX". Use more-modern syntax for URLs. Mention C++
+ and ask for Java. Don't hardwire OS version numbers. Add
+ copyright notice.
+ * m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
+ * src/conflicts.c (solved_conflicts_obstack): Now static.
+
+2006-03-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Introduction): Mention GLR and C++ as on the web
+ page. Say "you can use it" not "you may use it" as on the web page;
+ we're describing capabilities not granting permission.
+
+2006-03-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyresolveLocations): Rename local variables to avoid
+ shadowing warnings. Use usual patter for iterating through RHS.
+ * tests/glr-regression.at
+ (Uninitialized location when reporting ambiguity):
+ Modify yylex so that it uses its argument, rather than trying
+ to rely on ARGSUSED (which doesn't work for gcc with warnings).
+ const char -> char const.
+
+ * tests/Makefile.am ($(srcdir)/package.m4, maintainer-check-valgrind):
+ Don't use tabs inside commands; it messes up 'ps'.
+ Problem reported by twlevo.
+
+2006-03-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at (Uninitialized location when reporting
+ ambiguity): New test case.
+ * data/glr.c (yyresolveLocations): New function, which uses
+ YYLLOC_DEFAULT.
+ (yyresolveValue): Invoke yyresolveLocations before reporting an
+ ambiguity.
+ * doc/bison.texinfo (Default Action for Locations): Note
+ YYLLOC_DEFAULT's usage for ambiguity locations.
+ (GLR Semantic Actions): Cross-reference those notes.
+
+2006-03-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at (Leaked semantic values when reporting
+ ambiguity): Remove unnecessary union and type declarations.
+ (Leaked lookahead after nondeterministic parse syntax error): New test
+ case.
+ * data/glr.c (yyparse): Check for zero stacks remaining before
+ attempting to shift the lookahead so that you don't lose it.
+
+2006-03-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Avoid memory leaks by not invoking longjmp in yyreportAmbiguity.
+ * tests/glr-regression.at (Leaked semantic values when reporting
+ ambiguity): New test case.
+ * data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
+ yyabort rather than invoking yyFail, which invokes longjmp. Remove the
+ now unnecessary yystackp parameter.
+ (yyresolveValue): Return yyreportAmbiguity's result. Now the necessary
+ destructors can be called.
+
+ * tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
+ in existing testcases.
+
+2006-03-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't leak semantic values for parent RHS when a user action cuts the
+ parser, and clean up related code a bit.
+ * tests/glr-regression.at (Leaked merged semantic value if user action
+ cuts parse): Rename to...
+ (Leaked semantic values if user action cuts parse): ... this. Add check
+ for leaked parent RHS values.
+ * data/glr.c (yydestroyGLRState): In debugging output, distinguish
+ between an unresolved state (non-empty chain of semantic options) and
+ an incomplete one (signaled by an empty chain).
+ (yyresolveStates): Document the interface. Move all manipulation of a
+ successfully or unsuccessfully resolved yyGLRState to...
+ (yyresolveValue): ... here so that yyresolveValue always leaves a
+ yyGLRState with consistent data and thus is easier to understand.
+ Remove the yyvalp and yylocp parameters since they are always just
+ taken from the yys parameter. When reporting a discarded merged value
+ in debugging output, note that it is incompletely merged. Document the
+ interface.
+ (yyresolveAction): If resolving any of the RHS states fails, destroy
+ them all rather than leaking them. Thus, as long as user actions are
+ written to clean up the RHS correctly, yyresolveAction always cleans up
+ the RHS of a semantic option. Document the interface.
+
+2006-02-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyexpandGLRStack): Catch an off-by-one error that
+ led to a segmentation fault in GNU Pascal. Problem reported
+ by Waldek Hebisch.
+
+2006-02-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Mid-Rule Actions): Explain how to bury a
+ mid-rule action inside a nonterminal symbol in order to declare a
+ destructor for its semantic value.
+
+2006-02-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
+ YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
+ __cplusplus && ! defined _STDLIB_H && !
+ ((defined YYMALLOC || defined malloc) && (defined YYFREE ||
+ defined free))]: Include <stdlib.h> rather than rolling our own
+ declarations of malloc and free, to avoid problems with
+ incompatible declarations (using 'throw') C++'s stdlib.h. This
+ should fix Debian bug 340012
+ <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
+ reported by Guillaume Melquiond.
+
+2006-02-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Clarify symbols versus types in unused-value warnings.
+
+ * configure.ac (AC_INIT): Bump version number.
+
+2006-02-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.1a.
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
+ since C99 requires this.
+
+2006-02-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * m4/c-working.m4: New file.
+ * configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it.
+
+2006-02-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint: Merge from coreutils.
+
+2006-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Catch a
+ configuration screwup "./configure CC=/opt/SUNWspro/bin/c89
+ CFLAGS="-xarch=generic64" CXX=/opt/SUNWspro/bin/CC
+ LDFLAGS="-xarch=generic64" with Sun C 5.7 on Solaris 10; this
+ messes up because C++ code is compiled in 32-bit mode but linked
+ in 64-bit mode.
+
+2006-02-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * doc/bison.texinfo (Calc++ Scanner): Work around a bug in flex
+ 2.5.31. This resembles the 2005-10-10 patch to src/scan-skel.l.
+
+ * examples/calc++/Makefile.am (check_PROGRAMS): Renamed from
+ nodist_PROGRAMS, since we don't need to actually compile the
+ example if we're just doing a plain 'make'. This avoids bothering
+ the installer unnecessarily about problems due to weird C++
+ compilers.
+
+2006-02-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Use #include <...> rather
+ than #include "...", and compile with -I'.'. The old method was
+ not portable, according to Posix and the C standard, and it does
+ not work with Sun C 5.7, where previous #line directives affect
+ the working directory used in later #include "..." directives.
+
+2006-02-06 Juan Manuel Guerrero <juan.guerrero@gmx.de>
+
+ Various DJGGP specific issues in /djgpp
+
+2006-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
+ '#include <map>' works and that you can apply ++ to iterators.
+
+2006-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around portability problems summarized by Nelson H. F. Beebe in
+ <http://lists.gnu.org/archive/html/bug-bison/2005-09/msg00021.html>.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+ that '#include <string>' works.
+
+ * data/lalr1.cc (yytranslate_): No longer inline, to work around a
+ porting problem to g++ 3.4.3 on Darwin 7.9.0, where g++ complained
+ "warning: sorry: semantics of inline function static data `const
+ unsigned char translate_table[262]' are wrong (you'll wind up with
+ multiple copies)".
+
+ * lib/bbitset.h (struct bitset_vtable): Rename members not, and,
+ or, xor to not_, and_, or_, and xor_, respectively. This works
+ around a bug in GCC 3.4.3 on Irix 6.5, which apparently has a
+ random system header somewhere that includes the equivalent of
+ <iso646.h>.
+
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that "$CC
+ -E" works; it apparently doesn't work with PathScale EKO Compiler
+ Suite Version 2.0.
+
+2006-01-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ During deterministic GLR operation, user actions should be able to
+ influence the parse by changing yychar. To make this easier to fix and
+ to make glr.c easier to evolve in general, don't maintain yytoken in
+ parallel with yychar; just compute yytoken when needed.
+ * tests/glr-regression.at (Incorrect lookahead during deterministic
+ GLR): Check that setting yychar in a user action has the intended
+ effect.
+ * data/glr.c (yyGLRStack): Remove yytokenp member.
+ (yyclearin): Don't set *yytokenp.
+ (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Examine
+ yychar rather than *yytokenp to determine the current lookahead.
+ Compute yytoken locally when needed.
+ (yyparse): Likewise. Remove the local yytoken that yytokenp used to
+ point to.
+
+ * doc/bison.texinfo (Bison Options): Remove stray sentence fragment
+ after `--report' documentation.
+
+2006-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/parse-gram.y (grammar_declaration): Location of printer
+ symbol is @1, not list->location. Bug reported by twlevo.
+ * tests/input.at (Incompatible Aliases): Adjust to above change.
+
+2006-01-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Remove. Instead, do
+ all the test at once. This makes the output easier to read in the
+ normal case.
+
+ Fix a longstanding bug uncovered by bro-0.9a9/src/parse.y, which I
+ got from <http://bro-ids.org/download.html>. The bug is that
+ when two actions appeared in succession, the second one was
+ scanned before the first one was added to the grammar rule
+ as a midrule action. Bison then output the incorrect warning
+ "parse.y:905.17-906.36: warning: unused value: $3".
+ * src/parse-gram.y (BRACED_CODE, action): These are no longer
+ associated with a value.
+ (rhs): Don't invoke grammar_current_rule_action_append.
+ (action): Invoke it here instead.
+ * src/reader.c (grammar_midrule_action): Now extern.
+ (grammar_current_rule_action_append): Don't invoke
+ grammar_midrule_action; that is now the scanner's job.
+ * src/reader.h (last_string, last_braced_code_loc):
+ (grammar_midrule_action): New decls.
+ * src/scan-gram.l (last_string): Now extern, sigh.
+ (last_braced_code_loc): New extern variable.
+ (<INITIAL>"{"): Invoke grammar_midrule_action if the current
+ rule already has an action.
+ (<SC_BRACED_CODE>"}"): Set last_braced_code_loc before returning.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES):
+ Add some tests to check that the above changes fixed the bug.
+
+2006-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/reader.c (symbol_should_be_used): Renamed from symbol_typed_p.
+ All used changed. Check whether the symbol has a destructor,
+ not whether it is typed.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Add a destructor, so
+ that the values are still reported as unused. All line numbers
+ adjusted.
+
+2006-01-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around a bug in bro 0.8, which underparenthesizes its
+ definition of YYLLOC_DEFAULT.
+ * data/glr.c: Change all uses of YYLLOC_DEFAULT to parenthesize
+ their arguments.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.cc: Likewise.
+
+2006-01-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around a bug in Pike 7.0, and give the Pike folks a
+ better way to override the usual int widths.
+ * data/yacc.c (b4_int_type): Use yytype_uint8, etc., so that the
+ user can override the types.
+ (short): #undef, to work around a bug in Pike 7.0.
+ (yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): New types.
+ (union yyalloc.yyss): Use yytype_int16 rather than short.
+ All uses changed.
+ (yysigned_char): Remove.
+ * src/parse-gram.y (YYTYPE_UINT8, YYTYPE_INT8, YYTYPE_UINT16):
+ (YYTYPE_INT16): New macros, to test the new facility in yacc.c.
+ * tests/regression.at (Web2c Actions): Adjust to above changes.
+
+ * src/reader.c (check_and_convert_grammar): New function.
+ (reader): Close the input file even if something went wrong during
+ parsing. Minor file descriptor leak reported by twlevo.
+
+ * src/assoc.c (assoc_to_string): Use a default: abort (); case
+ to pacify gcc -Wswitch-default.
+ * src/scan-gram.l (adjust_location): Use a default: break; case
+ to pacify gcc -Wswitch-default.
+ * src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
+ (skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
+ (skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
+ Move these decls to scan-skel.l, since they don't need to be
+ visible elsewhere.
+ * src/scan-skel.l: Accept the above decls.
+ (skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
+ is used.
+
+2006-01-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.cfg (local-checks-to-skip): Add changelog-check,
+ since we don't want to insist on a version number at the start
+ of the changelog every time.
+ * Makefile.maint: Sync from coreutils a bit better.
+ (sc_trailing_blank): Renamed from sc_trailing_space.
+ All uses changed.
+ (sc_no_if_have_config_h, sc_require_config_h):
+ (sc_prohibit_assert_without_use): New rules.
+ (sc_obsolete_symbols): Don't catch Makefile.maint itself.
+ (sc_dd_max_sym_length): Fix leading spaces in rule.
+ (sc_system_h_headers): Prefix with @.
+ (sc_useless_cpp_parens, m4-check): Output line numbers.
+ (changelog-check): Allow version only in head.
+ * data/c.m4: Use "defined FOO" instead of "defined (FOO)", to
+ satisfy new Makefile.maint rule.
+ * data/glr.c: Likewise.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+ * lib/ebitsetv.c: Likewise.
+ * lib/lbitset.c: Likewise.
+ * lib/subpipe.c: Likewise.
+ * lib/timevar.c: Likewise.
+ * src/system.h: Likewise.
+ * data/yacc.c (YYSTYPE): Don't generate trailing spaces in output.
+ * djgpp/Makefile.maint: Add copyright notice.
+ * djgpp/README.in: Likewise.
+ * djgpp/config.bat: Likewise.
+ * djgpp/config.site: Likewise.
+ * djgpp/config_h.sed: Likewise.
+ * djgpp/djunpack.bat: Likewise.
+ * djgpp/config.sed: Fix copyright notice to match standard format.
+ * djgpp/subpipe.h: Likewise.
+ * lib/bitsetv-print.c: Likewise.
+ * lib/bitsetv.c: Likewise.
+ * lib/subpipe.h: Likewise.
+ * lib/timevar.c: Likewise.
+ * lib/timevar.h: Likewise.
+ * djgpp/subpipe.c: Use standard recipe for config.h.
+ * lib/abitset.c: Likewise.
+ * lib/bitset.c: Likewise.
+ * lib/bitset_stats.c: Likewise.
+ * lib/bitsetv-print.c: Likewise.
+ * lib/bitsetv.c: Likewise.
+ * lib/ebitsetv.c: Likewise.
+ * lib/get-errno.c: Likewise.
+ * lib/lbitset.c: Likewise.
+ * lib/subpipe.c: Likewise.
+ * lib/timevar.c: Likewise.
+ * lib/vbitset.c: Likewise.
+ * tests/local.at: Likewise.
+ * src/scan-gram.l: Don't include verify.h, since system.h does
+ that for us.
+ * .x-sc_require_config_h: New file.
+ * .x-sc_unmarked_diagnostics: New file.
+
+2006-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Be a bit more systematic about using 'abort'.
+ * lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
+ * lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
+ Put 'default: abort ();' before some other case, to satisfy older
+ pedantic compilers.
+ * lib/bitset_stats.c (bitset_stats_init): Likewise.
+ * lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
+ * lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
+ * src/conflicts.c (resolve_sr_conflict): Likewise.
+ * src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
+ (get_decision_str, get_orientation_str, get_node_alignment_str):
+ (get_arrow_mode_str, get_crossing_type_str, get_view_str):
+ (get_linestyle_str, get_arrowstyle_str): Likewise.
+ * src/conflicts.c (resolve_sr_conflict):
+ Use a default case rather than one for the one remaining enum
+ value, to catch invalid enum values as well.
+ * src/lalr.c (set_goto_map, map_goto):
+ Prefer "assert (FOO);" to "if (!FOO) abort ();".
+ * src/nullable.c (nullable_compute, token_definitions_output):
+ Likewise.
+ * src/reader.c (packgram, reader): Likewise.
+ * src/state.c (transitions_to, state_new, state_reduction_find):
+ Likewise.
+ * src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
+ (symbol_pack): Likewise.
+ * src/tables.c (conflict_row, pack_vector): Likewise.
+ * src/scan-skel.l (QPUTS): Remove unnecessary parens.
+ (BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
+ * src/system.h: Don't include <assert.h>.
+ (assert): New macro.
+
+ * doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
+ (Destructor Decl, Parser Function, Pure Calling):
+ Describe rules for braces inside C code more carefully.
+
+2006-01-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some porting glitches found by Nelson H. F. Beebe.
+ * lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
+ compilers that don't understand that abort () does not return.
+ * src/state.c (transitions_to): Likewise.
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+ that '#include <cstdlib>' works.
+ * src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
+ (INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
+ #undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
+ for the benefit of some pre-C99 compilers.
+
+ * bootstrap: Undo changes to gnulib files that autoreconf made.
+
+ Minor fixups to get 'make maintainer-check' to work.
+ * configure.ac: Don't use -Wnested-externs, as it's incompatible
+ with the new verify.h implementation.
+ * data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
+ * data/glr.c (YYUSE): Depend on __GNUC__ as well.
+ * data/yacc.c (YYUSE): Likewise.
+ * data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
+ * lib/subpipe.c (end_of_output_subpipe): The args are unused.
+ * src/parse-gram.y (declaration): Don't pass a string constant
+ to a function that expects char *, since GCC might complain
+ about the constant value.
+ * src/reader.c (symbol_typed_p): Add parens to pacify GCC.
+ * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
+ before #defining them.
+ * tests/glr-regression.at
+ (Incorrectly initialized location for empty right-hand side in GLR):
+ In yyerror, use the msg arg.
+ (Corrupted semantic options if user action cuts parse):
+ (Incorrect lookahead during deterministic GLR):
+ (Incorrect lookahead during nondeterministic GLR):
+ Don't name a local var 'index'; it shadows string.h's 'index'.
+
+2006-01-19 Akim Demaille <akim@epita.fr>
+
+ * tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial
+ location, not just parts of it.
+
+2006-01-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document the fact that multiple %unions are now allowed.
+ * doc/bison.texinfo (Union Decl): Likewise.
+ * TODO: This feature is now implemented, so remove it from
+ the wishlist.
+
+ * Makefile.maint: Merge with coreutils Makefile.maint.
+ (CVS_LIST): Use build-aux version if available.
+ (VERSION_REGEXP): New macro.
+ (syntax-check-rules): Add sc_no_if_have_config_h,
+ sc_prohibit_assert_without_use, sc_require_config_h,
+ sc_useless_cpp_parens.
+ (sc_obsolete_symbols): Check for O_NDELAY.
+ (sc_dd_max_sym_length): Track coreutils.
+ (sc_unmarked_diagnostics): Look in all files, not just *.c.
+ (sc_useless_cpp_parens): New rule.
+ (news-date-check): Look for version or today's date.
+ (changelog-check): Don't require version number near head.
+ (copyright-check): Use current year instead of hardwiring 2005.
+ (my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz).
+ (announcement): Add --gpg-key-ID.
+
+ * djgpp/config.sed: Add copyright notice, and replace "filesystem"
+ with "file system".
+
+ Avoid undefined behavior that addressed just before the start of an
+ array. Problem reported by twlevo.
+ * src/reader.c (packgram): Prepend a new sentinel before ritem.
+ * src/lalr.c (build_relations): Rely on new sentinel.
+ * src/gram.c (gram_free): Adjust to new sentinel.
+
+2006-01-12 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to
+ yylookaheadNeeds. All uses updated.
+ (yysplitStack): Rename local yynewLookaheadStatuses to
+ yynewLookaheadNeeds.
+ * data/glr-regression.at (Incorrect lookahead during nondeterministic
+ GLR): In comments, change `lookahead status' to `lookahead need'.
+
+2006-01-11 Paul Hilfinger <hilfingr@tully.CS.Berkeley.EDU>
+
+ * data/glr.c (yysplitStack): A little stylistic rewrite.
+
+2006-01-11 Paul Hilfinger <hilfingr@tully.CS.Berkeley.EDU>
+
+ * data/glr.c (yyaddDeferredAction): Flesh out the comment.
+
+2006-01-11 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo: Fix some typos.
+ (GLR Semantic Actions): New subsection discussing special
+ considerations because GLR semantic actions might be deferred.
+ (Actions): Mention look-ahead usage of yylval.
+ (Actions and Locations): Mention look-ahead usage of yylloc.
+ (Special Features for Use in Actions): Add YYEOF entry and mention it
+ 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 `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.
+ In the yychar and yyclearin entries, add note about deferred semantic
+ actions.
+ Add yylloc and yylval entries discussing look-ahead usage.
+ (Look-Ahead Tokens): When discussing yychar, don't call it the
+ `current' look-ahead, and do mention yylval and yylloc.
+ (Error Recovery): Cross-reference `Action Features' when mentioning
+ yyclearin.
+ (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.
+
+2006-01-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at: Update copyright year to 2006.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyGLRStateSet): Add yybool* yylookaheadStatuses member to
+ use during nondeterministic operation to track which stacks have
+ actually needed the current lookahead.
+ (yyinitStateSet, yyfreeStateSet, yyremoveDeletes, yysplitStack):
+ Allocate, deallocate, resize, and otherwise shuffle space for
+ yylookaheadStatuses in parallel with yystates member of yyGLRStateSet.
+ (yysplitStack, yyprocessOneStack, yyparse): Set lookahead status
+ appropriately during nondeterministic operation.
+ (yySemanticOption): Add int yyrawchar, YYSTYPE yyval, and YYLTYPE yyloc
+ members to store the current lookahead to be used by the deferred
+ user action.
+ (yyaddDeferredAction): Add size_t yyk parameter specifying the stack
+ from which the RHS is taken. Set the lookahead members of the new
+ yySemanticOption according to the lookahead status for stack yyk.
+ (yyglrShiftDefer, yyglrReduce): Pass yyk parameter on to
+ yyaddDeferredAction.
+ (yyresolveAction): Set yychar, yylval, and yylloc to the lookahead
+ members of yySemanticOption before invoking yyuserAction, and then set
+ them back to their current values afterward.
+ (yyparse): Set yychar = YYEMPTY where yytoken = YYEMPTY.
+ (yyreportAmbiguity): Add /*ARGSUSED*/ to pacify lint.
+ * tests/glr-regression.at: Remove `.' from the ends of recent test case
+ titles for consistency.
+ (Leaked merged semantic value if user action cuts parse): In order to
+ suppress lint warnings, use arguments in merge function, and assign
+ char value < 128 in main.
+ (Incorrect lookahead during deterministic GLR): New test case.
+ (Incorrect lookahead during nondeterministic GLR): New test case.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/c.m4 (b4_yy_symbol_print_generate): In yy_symbol_print, accept
+ !yyvaluep as signal that no semantic value is available to print.
+ * data/glr.c (yydestroyGLRState): If state is not resolved, don't try
+ to print a semantic value.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at: For consistency with my newer test cases,
+ don't thank myself.
+
+2006-01-05 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyresolveValue): When merging semantic options, if at
+ least one user action succeeds but a later one cuts the parse, then
+ destroy the semantic value before returning rather than leaking it.
+ (yyresolveStates): If a user action cuts the parse and thus
+ yyresolveValue fails, ignore the (unset) semantic value rather than
+ corrupting the yyGLRState, and empty the semantic options list since
+ the user actions should have called all necessary destructors.
+ Simplify code with YYCHK.
+ * tests/glr-regression.at (Corrupted semantic options if user action
+ cuts parse): New test case.
+ (Undesirable destructors if user action cuts parse): New test case.
+ Before applying any of this patch, this test case never actually failed
+ for me... but only because the corrupted semantic options usually
+ masked this bug.
+ (Leaked merged semantic value if user action cuts parse): New test
+ case.
+
+2006-01-05 Akim Demaille <akim@epita.fr>
+
+ * src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/.
+
+2006-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_c_modern): New macro, with a new provision for
+ _MSC_VER. Problem reported by Cenzato Marco.
+ (b4_c_function_def): Use it.
+ * data/yacc.c (YYMODERN_C): Remove. All uses replaced by
+ b4_c_modern.
+ (yystrlen, yystpcpy, yyparse): Use b4_c_function... macros rather
+ than rolling our own.
+
+2006-01-04 Akim Demaille <akim@epita.fr>
+
+ Also warn about non-used mid-rule values.
+ * src/symlist.h, src/symlist.c (symbol_list): Add a mid_rule
+ member.
+ (symbol_list_new): Adjust.
+ * src/reader.c (symbol_typed_p): New.
+ (grammar_rule_check): Use it.
+ (grammar_midrule_action): Bind a mid-rule LHS to its rule.
+ Check its rule.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): New.
+ Use it.
+ * tests/actions.at (Exotic Dollars): Adjust.
+
+2006-01-04 Akim Demaille <akim@epita.fr>
+
+ * src/reader.c (grammar_midrule_action): If $$ is set in a
+ mid-rule, move the `used' bit to its lhs.
+ * tests/input.at (Unused values): New.
+ * tests/actions.at (Exotic Dollars): Adjust: exp is not typed.
+
+2006-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Bison Options): Say more accurately what
+ --yacc does.
+ * src/parse-gram.y (rules_or_grammar_declaration): Don't complain
+ about declarations in the grammar when in Yacc mode, as POSIX does
+ not require a diagnostic when the grammar uses extensions.
+
+ * src/reduce.c (reduce_grammar): Remove unnecessary cast to bool.
+
+ Warn about dubious constructions like "%token T T".
+ Reported by twlevo.
+ * src/symtab.h (struct symbol.declared): New member.
+ * src/symtab.c (symbol_new): Initialize it to false.
+ (symbol_class_set): New arg DECLARING, specifying whether
+ this is a declaration that we want to warn about, if there
+ is more than one of them. All uses changed.
+
+ * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c:
+ Allow multiple %union directives, whose contents concatenate.
+ * src/parse-gram.y (grammar_declaration): Likewise.
+ Use muscle_code_grow, so that we don't need stype_line any more.
+ All uses changed.
+
+ * src/muscle_tab.c (muscle_grow): Fix comment.
+
+ * ChangeLog, data/c.m4, data/glr.c, data/glr.cc, data/location.cc:
+ * data/yacc.c, src/getargs.c, src/output.c, tests/cxx-type.at:
+ Update copyright year to 2006.
+
+2006-01-03 Akim Demaille <akim@epita.fr>
+
+ Have glr.cc pass (some of) the calc.at tests.
+ * data/glr.cc (b4_parse_param_orig): New.
+ (b4_parse_param): Improve its definition, and bound it more
+ clearly in the skeleton.
+ (b4_epilogue): Append, instead of prepending, in order to keep
+ #line consistency.
+ Simplify the generation of auxiliary functions: locations and
+ purity are mandated.
+ (b4_global_tokens_and_yystype): Honor it.
+ * data/location.cc (c++.m4): Don't include it.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Define AT_GLR_CC_IF
+ and AT_SKEL_CC_IF.
+ * tests/calc.at (AT_CHECK_CALC): Rely on AT_SKEL_CC_IF instead of
+ AT_LALR1_CC_IF.
+ Be sure to initialize the first position's filename.
+ (AT_CHECK_CALC_LALR1_CC): Add %location and %defines, they are
+ mandated anyway.
+ (AT_CHECK_CALC_GLR_CC): New.
+ Use it to exercise glr.cc as a lalr1.cc drop-in replacement.
+