X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/381ecb068724f3ae161d7de6bdc8b3ebd402cdb4..4502eadc2fbdd6efe2e4702cb3993cac83a59615:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 08224ae5..d558baca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1271 @@ +2006-11-09 Joel E. Denny + + * 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 + + * 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 + and Paul Eggert + + 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 (): 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 + + * 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 + + Disable unset/unused mid-rule value warnings by default, and recognize + --warnings=midrule-values to enable them. Discussed starting at + . + * 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 + + 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 + + * 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 + + * 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 + + Split the default %destructor/%printer into two kinds: <*> and . + Discussed starting at + . + * 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 . + * src/parser-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 + + Don't apply the default %destructor/%printer to an unreferenced midrule + value. Mentioned at + . + * 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 + + 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 + + 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 + + Similar to the recently removed %before-header, add %code-top as the + alternative to the pre-prologue. Mentioned at + . + 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. + (Bison Symbols): Clean up discussion of prologue alternatives and add + %code-top. + +2006-10-16 Juan Manuel Guerrero + + 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 + + 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 + + * lib/Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS). + Problem reported by Joel E. Denny. + +2006-10-14 Jim Meyering + + (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 + + 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 for abort. + * test/regression.at (Diagnostic that expects two alternatives): + Likewise. + +2006-10-12 Paul Eggert + + * bootstrap.conf (gnulib_modules): Add config-h. + * djgpp/subpipe.c: Include 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 unconditionally. + + * bootstrap: Sync from coreutils, as follows: + + 2006-10-11 Paul Eggert + + * 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 + + * bootstrap (usage, main program, symlink_to_gnulib): Add option + --copy. Inspired by a suggestion from Bruno Haible. + + 2006-10-03 Jim Meyering + + * bootstrap: Undo last change to this file, since now gnulib-tool + sticks with the automake default in generating dependencies. + +2006-10-12 Paul Eggert + + * 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 ; 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 + . + * 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 + + * 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 + + * 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 + + * 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 + + * THANKS: Add Paolo Bonzini and Bob Rossi. + +2006-10-08 Paolo Bonzini + + * 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 + + Fix test failure reported by Tom Lane in + + 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 + + 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 + + Merge bootstrap changes from coreutils. + + 2006-09-28 Jim Meyering + + 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 + + * bootstrap (gnulib_tool_options): Add "--local-dir gl". + + 2006-09-20 Paul Eggert + + * bootstrap: Add support for --force. + (usage): New function. Describe usage less tersely. + (CVS_only_file): New var. + +2006-09-21 Paul Eggert + + * 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 + + * data/push.c (yyresult_get): Remove function. + (YYPUSH_MORE): Add #define. + (yypushparse): Modify return value. + +2006-09-20 Paul Eggert + + * 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 + + * 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 + + * 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 + + 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 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 + . + + * 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 . + 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 + + * 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 + + * 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 + + * 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 (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 + + * 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 + . + * 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 + . + 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 + + Finish implementation of per-type %destructor/%printer. Discussed + starting at + + and + . + * 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 + + 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 + . + * NEWS (2.3+): Add %symbol-default to example. + * bison.texinfo (Freeing Discarded Symbols): Likewise. + (Bison 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts. + +2006-08-11 Paul Eggert + + * 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 + + 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 + + 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 (tiny change) + + * doc/bison.texinfo: Fix some typos. + +2006-08-02 Paul Eggert + + * 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 + + 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 + , + , + and + . + * 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 + + Clean up handling of %destructor for the end token (token 0). + Discussed starting at + + and + . + + 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 + + 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 + + * bootstrap: Adjust to today's change to gnulib-tool by invoking + it with --assume-autoconf='latest-stable'. + +2006-07-13 Joel E. Denny + + * 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 + + 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 + + * 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 + . + 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 + + * data/c.m4: Comment changes. + +2006-07-10 Akim Demaille + + * 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 + + * NEWS: Instead of %union, you can define and use your own union type + YYSTYPE if your grammar contains at least one 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 + + 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 + + Change %merge result type clash warnings to errors. Discussed at + . + * 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 + + * 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 + + * 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 + + * 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 and 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 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 . + (BASE_QPUTS): Use last_component, not base_name. + * src/system.h: Include in the usual order + for ../lib/*.h files. Include 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 + to get the decl. + +2006-07-08 Akim Demaille + + * 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 + + * 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 + + 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 + + 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 + + * doc/Doxyfile.in: New. + * doc/Makefile.am: Use it. + * src/lalr.h, src/symtab.h: Initial doxygenation. + +2006-06-26 Joel E. Denny + + 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 + + Get action warnings (grammar_rule_check) right even when symbol + declarations appear after the rules. Discussed at + + and + . + 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 + + 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 Clean up yesterday's patch. @@ -3817,7 +5085,7 @@ * data/lalr1.cc (symprint_): Use cdebug_ to avoid warnings. -2004-10-28 Akim Demaille , +2004-11-17 Akim Demaille , Alexandre Duret-Lutz * data/lalr1.cc (Parser::yycdebug_): New, a pointer, to allow