]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
* configure.ac (AC_PREREQ): Require Autoconf 2.61 because of our
[bison.git] / ChangeLog
index d64fa6bcd13e9321054540607550bb2edc3fcba0..d0c2e9f44537c38408ba2a25e0a85199f63b90ae 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,323 @@
+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,
+       Bison 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, Bison 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, Bison 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
        * 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 <!>.
-       * src/parser-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
+       * 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