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