]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Extend the front-end API for %define variables to more completely
[bison.git] / ChangeLog
index 384ed98766b6c313a714b305a2ece2a4a7bf9aa3..e151d0bc47f943500f99307bd5cd7ca7fabcac9c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,660 @@
+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.
+       (Bison Declaration 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
        * 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).
-       * data/output.c (output_skeleton): Don't add an m4_divert_push(0) and
+       * 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.
 
        * doc/bison.texinfo (Prologue Alternatives): Update.
        (Decl Summary): Update to %code "requires" and %code "provides".
        (Calc++ Parser): Update to %code "requires".
-       (Bison Symbols): Remove entries for %requires, %provides, and
+       (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,
        documentation instead.
        (Calc++ Parser): Use `%require "@value{VERSION}"' rather than
        `%require "2.3b"' so that the example is always up-to-date.
-       (Bison Symbols): Add entries for %language and %skeleton.
+       (Table of Symbols): Add entries for %language and %skeleton.
        * examples/extexi (normalize): Instead of replacing every %require
        argument with the current Bison version, just substitute for
        `@value{VERSION}'.  This guarantees that we're testing what actually
 
        * doc/bison.texinfo (C++ Parser Interface): Prefer %language
        over %skeleton.
-       (Directives): Document %language and %skeleton.
+       (Decl Summary): Document %language and %skeleton.
        (Command line): Document -L.
 
        * examples/extexi: Rewrite %require directive.
        (2.3a): Annotate this entry to say the old forms of these features were
        also experimental.
        * doc/bison.texinfo (Prologue Alternatives, Freeing Discarded Symbols,
-       Bison Symbols): Say they're experimental.  Comment out any mention
+       Table of Symbols): Say they're experimental.  Comment out any mention
        of Java (we'll want this back eventually).
 
 2006-12-01  Joel E. Denny  <jdenny@ces.clemson.edu>
        %file-prefix, %name-prefix, and %output.  Discussed at
        <http://lists.gnu.org/archive/html/help-bison/2006-09/msg00001.html>.
        * NEWS (2.3a+): Mention.
-       * doc/bison.texinfo (Decl Summary, Bison Symbols): Add entry for new
+       * doc/bison.texinfo (Decl Summary, Table of Symbols): Add entry for new
        form of %defines, and remove `=' from entries for %file-prefix,
        %name-prefix, and %output.
        * src/parse-gram.y (prologue_declaration): Implement.
        Rename <!> to <>.  Discussed starting at
        <http://lists.gnu.org/archive/html/bison-patches/2006-11/msg00039.html>.
        * NEWS (2.3a+): Update.
-       * doc/bison.texinfo (Freeing Discarded Symbols, Bison Symbols):
+       * doc/bison.texinfo (Freeing Discarded Symbols, Table of Symbols):
        Update.
        * src/parse-gram.y (TYPE_TAG_NONE, generic_symlist_item): Implement.
        * src/scan-gram.l (INITIAL): Implement.
        * NEWS (2.3a+): Mention.
        * doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
        previous change today related to mid-rules.
-       (Bison Symbols): Remove %symbol-default and add <*> and <!>.
+       (Table of Symbols): Remove %symbol-default and add <*> and <!>.
        * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
        (TYPE_TAG_ANY): Add as <*>.
        (TYPE_TAG_NONE): Add as <!>.
        alternatives to...
        (Prologue Alternatives): ... this new section, and extend it to discuss
        all 4 directives in detail.
-       (Bison Symbols): Clean up discussion of prologue alternatives and add
-       %code-top.
+       (Table of Symbols): Clean up discussion of prologue alternatives and
+       add %code-top.
 
 2006-10-16  Juan Manuel Guerrero  <juan.guerrero@gmx.de>
 
        <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
        * NEWS (2.3+): Add %symbol-default to example.
        * bison.texinfo (Freeing Discarded Symbols): Likewise.
-       (Bison Symbols): Add entry for %symbol-default.
+       (Table of Symbols): Add entry for %symbol-default.
        * src/parse-gram.y (PERCENT_SYMBOL_DEFAULT): New token.
        (generic_symlist, generic_symlist_item): New nonterminals for creating
        a list in which each item is a symbol, semantic type, or
        prologue blocks with %*-header declarations.
        (Calc++ Parser): Likewise.
        (Bison Declaration Summary): Update names.
-       (Bison Symbols): Update description.
+       (Table of Symbols): Update description.
        * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
        (PERCENT_END_HEADER): ... this.
        (PERCENT_BEFORE_DEFINITIONS): Update to...
        file.
        (Calc++ Parser): Forward declare driver in a %before-definitions rather
        than in the pre-prologue so that make check succeeds.
-       (Bison Symbols): Add entries for %before-definitions and
+       (Table of Symbols): Add entries for %before-definitions and
        %after-definitions.
        * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
        %before-definitions.
        in the yychar entry.
        In the yychar entry, remove mention of the local yychar case (pure
        parser) since this is irrelevant information when writing semantic
-       actions and since it's already discussed in `Bison Symbols' where
+       actions and since it's already discussed in `Table of Symbols' where
        yychar is otherwise described as an external variable.
        In the yychar entry, don't call it the `current' look-ahead since it
        isn't when semantic actions are deferred.
        `current' look-ahead, and do mention yylval and yylloc.
        (Error Recovery): Cross-reference `Action Features' when mentioning
        yyclearin.
-       (Bison Symbols): In the yychar entry, don't call it the `current'
+       (Table of Symbols): In the yychar entry, don't call it the `current'
        look-ahead.
        In the yylloc and yylval entries, mention look-ahead usage.