+2006-09-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Require default %destructor/%printer to be declared using
+ %symbol-default instead of an empty symbol list, and start working on
+ new per-type %destructor/%printer. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00007.html>.
+ * NEWS (2.3+): Add %symbol-default to example.
+ * bison.texinfo (Freeing Discarded Symbols): Likewise.
+ (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 <jdenny@ces.clemson.edu>
+
+ Whether the default %destructor/%printer applies to a particular symbol
+ isn't a question of whether the user *declares* that symbol (in %token,
+ for example). It's a question of whether the user by any means
+ *defines* the symbol at all (by simply using a char token, for
+ example). $end is defined by Bison whereas any other token with token
+ number 0 is defined by the user. The error token is always defined by
+ Bison regardless of whether the user declares it with %token, but we
+ may one day let the user define error as a nonterminal instead.
+ * NEWS (2.3+): Say "user-defined" instead of "user-declared".
+ * doc/bison.texinfo (Freeing Discarded Symbols): Likewise, and document
+ the meaning of "user-defined".
+ * tests/actions.at (Default %printer and %destructor for user-declared
+ end token): Rename to...
+ (Default %printer and %destructor for user-defined end token): ...
+ this.
+
+ * src/symtab.c (symbol_destructor_get, symbol_printer_get): In the
+ computation of whether to apply the default, don't maintain a list of
+ every Bison-defined symbol. Instead, just check for a first character
+ of '$', which a user symbol cannot have, and check for the error token.
+
+2006-08-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't apply the default %destructor or %printer to the error token,
+ $undefined, or $accept. This change fits the general rule that the
+ default %destructor and %printer are only for user-declared symbols,
+ and it solves several difficulties that are described in the new test
+ cases listed below.
+ * src/symtab.c (symbol_destructor_get, symbol_printer_get): Implement.
+ * tests/actions.at (Default %printer and %destructor are not for error
+ or $undefined, Default %printer and %destructor are not for $accept):
+ New test cases.
+
+2006-08-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Allow %start after the first rule.
+ * src/reader.c (grammar_current_rule_begin): Don't set the start symbol
+ when parsing the first rule.
+ (check_and_convert_grammar): Search for it here after all grammar
+ declarations have been parsed. Skip midrules, which have dummy LHS
+ nonterminals.
+ * src/symtab.c (symbol_is_dummy): New function.
+ * src/symtab.h (symbol_is_dummy): Declare it.
+ * tests/input.at (%start after first rule): New test.
+
+2006-08-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Redo some of the previous commit: add back the ability to use
+ non-aliased/undeclared string literals since it might be useful to
+ those declaring %token-table.
+ * src/reader.c (check_and_convert_grammar): Undo changes in previous
+ commit: don't worry about complaints from symbols_pack.
+ * src/symtab.c (symbol_new, symbol_class_set,
+ symbol_check_alias_consistency): Undo changes in previous commit: count
+ each string literal as a new symbol and token, assign it a symbol
+ number, and don't complain about non-aliased string literals.
+ (symbols_pack): Since symbol_make_alias still does not decrement symbol
+ and token counts but does still set aliased tokens to the same number,
+ symbol_pack_processor now leaves empty slots in the symbols array.
+ Remove those slots.
+ * tests/regression.at (Undeclared string literal): Remove test case
+ added in previous commit since non-aliased string literals are allowed
+ again.
+ (Characters Escapes, Web2c Actions): Undo changes in previous commit:
+ remove unnecessary string literal declarations.
+ * tests/sets.at (Firsts): Likewise.
+
+2006-08-18 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't allow an undeclared string literal, but allow a string literal to
+ be used before its declaration.
+ * src/reader.c (check_and_convert_grammar): Don't invoke packgram if
+ symbols_pack complained.
+ * src/symtab.c (symbol_new): Don't count a string literal as a new
+ symbol.
+ (symbol_class_set): Don't count a string literal as a new token, and
+ don't assign it a symbol number since symbol_make_alias does that.
+ (symbol_make_alias): It's not necessary to decrement the symbol and
+ token counts anymore. Don't assume that an alias declaration occurs
+ before any uses of the identifier or string, and thus don't assert that
+ one of them has the highest symbol number so far.
+ (symbol_check_alias_consistency): Complain if there's a string literal
+ that wasn't declared as an alias.
+ (symbols_pack): Bail if symbol_check_alias_consistency failed since
+ symbol_pack asserts that every token has been assigned a symbol number
+ although undeclared string literals have not.
+ * tests/regression.at (String alias declared after use, Undeclared
+ string literal): New test cases.
+ (Characters Escapes, Web2c Actions): Declare string literals as
+ aliases.
+ * tests/sets.at (Firsts): Likewise.
+
+2006-08-14 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In the grammar scanner, STRING_FINISH unclosed constructs and return
+ them to the parser in order to improve error messages.
+ * src/scan-gram.l (SC_ESCAPED_STRING, SC_ESCAPED_CHARACTER,
+ SC_BRACED_CODE, SC_PROLOGUE): Implement.
+ * tests/input.at (Unclosed constructs): New test case.
+ * tests/regression.at (Invalid inputs): Update now that unclosed %{ is
+ seen.
+
+ * src/scan-gram.h, src/scan-gram.l (gram_last_braced_code_loc): Remove
+ unused global.
+
+2006-08-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Handle string aliases for character tokens correctly.
+ * src/symtab.c (symbol_user_token_number_set): If the token has an
+ alias, check and set its alias's user token number instead of its own,
+ which is set to indicate the alias. Previously, every occurrence of
+ the character token in the grammar overwrote that alias indicator with
+ the character code.
+ * tests/input.at (String aliases for character tokens): New test.
+
+2006-08-12 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/parse-gram.y: Add `%expect 0' so we don't overlook conflicts.
+
+2006-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Put in need-ngettext argument to AM_GNU_GETTEXT,
+ to prevent failures when building on older platforms.
+ Check for autopoint failure.
+ Set XGETTEXT_OPTIONS to values that check for C format strings,
+ so that translators are warned about them (this also helps
+ prevent core dumps).
+
+ * lib/subpipe.c (create_subpipe): Use new gnulib pipe_safer
+ function, since it simplifies our code a bit.
+
+ * configure.ac (AC_ARG_ENABLE): Use -Wextra -Wno-sign-compare
+ rather than -W, so we don't get bogus warnings about sign comparisons.
+ Add -Wpointer-arith, since that warning is useful (it reports code
+ that does not conform to C89 and that some compilers reject).
+ * data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c: Undo latest change,
+ since it's no longer needed.
+
+2006-08-10 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up scanners a bit.
+ * src/flex-scanner.h (FLEX_NO_OBSTACK): New macro that blocks obstack
+ definitions so gcc won't warn when obstack_for_string is unused.
+ * src/scan-code.l: config.h and system.h are already #include'd by
+ scan-code-c.c, so get rid of them here.
+ * src/scan-gram.l: Likewise.
+ * src/scan-skel.l: Likewise, and use flex-scanner.h without obstack
+ definitions rather than duplicating the rest of it.
+ * src/scan-gram-c.c, scan-skel-c.c: #include "system.h".
+
+2006-08-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Suppress signed/unsigned comparison warnings for yycheck.
+ * data/c.m4 (b4_safest_int_type): New macro.
+ * data/glr.c, data/lalr1.cc: Wherever you compare yycheck[i] against
+ a signed int type, cast it to b4_safest_int_type first.
+ * data/yacc.c: Likewise.
+ (b4_safest_int_type): Overwrite the one from c.m4 since b4_int_type is
+ also overwritten.
+
+2006-08-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change)
+
+ * doc/bison.texinfo: Fix some typos.
+
+2006-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * m4/.cvsignore: Add inttypes_h.m4,lib-ld.m4, lib-prefix.m4,
+ po.m4, stdint_h.m4, uintmax_t.m4, ulonglong.m4, warning.m4.
+
+ * bootstrap (gnulib_tool): Stop using --assume-autoconf;
+ the latest gnulib does this a different way.
+ (get_translations): Sharuzzaman Ahmat Raslan reported that the ms
+ translation was patched, so stop omitting it.
+
+2006-07-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Enable declaration of default %printer/%destructor. Make the parser
+ use these for all user-declared grammar symbols for which the user does
+ not declare a specific %printer/%destructor. Thus, the parser uses it
+ for token 0 if the user declares it but not if Bison generates it as
+ $end. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-02/msg00064.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00091.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>.
+ * NEWS (2.3+): Mention.
+ * doc/bison.texinfo (Actions in Mid-Rule): It's no longer impossible to
+ declare a %destructor for a mid-rule's semantic value. It's just
+ impossible to declare one specific to it.
+ (Freeing Discarded Symbols): Mention that @$ can be used in %destructor
+ code. Describe default %destructor form.
+ * src/parse-gram.y (grammar_declaration): Parse default
+ %printer/%destructor declarations.
+ * src/output.c (symbol_destructors_output): Use symbol_destructor_get
+ and symbol_destructor_location_get rather than accessing the destructor
+ and destructor_location members of struct symbol.
+ (symbol_printers_output): Likewise but for %printer's.
+ * src/reader.c (symbol_should_be_used): Likewise but for %destructor's
+ again.
+ * src/symtab.c (default_destructor, default_destructor_location,
+ default_printer, default_printer_location): New static global
+ variables to record the default %destructor and %printer.
+ (symbol_destructor_get, symbol_destructor_location_get,
+ symbol_printer_get, symbol_printer_location_get): New functions to
+ compute the appropriate %destructor and %printer for a symbol.
+ (default_destructor_set, default_printer_set): New functions to set the
+ default %destructor and %printer.
+ * src/symtab.h: Prototype all those new functions.
+ * tests/actions.at (Default %printer and %destructor): New test to
+ check that the right %printer and %destructor are called, that they're
+ not called for $end, and that $$ and @$ work correctly.
+ (Default %printer and %destructor for user-declared end token): New
+ test to check that the default %printer and %destructor are called for
+ a user-declared end token.
+ * tests/input.at (Default %printer and %destructor redeclared, Unused
+ values with default %destructor): New tests to check related grammar
+ warnings and errors.
+
+2006-07-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up handling of %destructor for the end token (token 0).
+ Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00019.html>
+ and
+ <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00013.html>.
+
+ Make the skeletons consistent in how they pop the end token and invoke
+ its %destructor.
+ * data/glr.c (yyrecoverSyntaxError, yyparse): Don't pop the start
+ state, which has token number 0, since this would invoke the
+ %destructor for the end token.
+ * data/lalr1.cc (yy::parser::parse): Don't check for the final state
+ until after shifting the end token, or else it won't be popped.
+ * data/yacc.c (yyparse): Likewise.
+
+ * data/glr.c (yyparse): Clear the lookahead after shifting it even when
+ it's the end token. Upon termination, destroy an unshifted lookahead
+ even when it's the end token.
+ * data/lalr1.cc (yy::parser::parse): Likewise.
+ * data/yacc.c (yyparse): Likewise.
+
+ * src/reader.c (packgram): Don't check rule 0. This suppresses unused
+ value warnings for the end token when the user gives the end token a
+ %destructor.
+
+ * tests/actions.at (Printers and Destructors): Test all the above.
+
+2006-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ Update to latest gnulib and gettext versions.
+ * bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
+ Add fopen-safer.
+ (gnulib_files): Add m4/warning.m4. Don't worry about files
+ overwritten by autopoint.
+ Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
+ Suppress "id", "ms", "tr" translations for now, since gettext 0.15
+ rejects them.
+ Don't use autoreconf; instead, invoke autopoint etc. by hand,
+ so that we can remove the intl files at a better time.
+ (intl_files_to_remove): Remove aclocal.m4, since it gets
+ rebuilt anyway. Remove m4/inttypes_h.m4, m4/inttypes.m4,
+ m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
+ m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
+ Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
+ Remove datarootdir hack; no longer needed.
+ * configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
+ (AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
+ * lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
+ strdup.h.
+ * m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
+ * m4/warning.m4: Remove from CVS, since we now use gnulib's version.
+
+2006-07-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Adjust to today's change to gnulib-tool by invoking
+ it with --assume-autoconf='latest-stable'.
+
+2006-07-13 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/parse-gram.y (grammar_declaration): Don't confuse Doxygen (at
+ least 1.4.7 and 1.4.4) by putting a #line between `typedef union
+ YYSTYPE' and `{'.
+ * src/muscle_tab.h (muscle_grow): Replace the header comments with
+ those from muscle_tab.c since the old ones are misleading.
+
+2006-07-13 Akim Demaille <akim@epita.fr>
+
+ Support %define "KEY" {VALUE}.
+ * src/scan-code.h, src/scan-code.l (translate_action)
+ (translate_rule_action, translate_symbol_action, translate_code):
+ Return char *, not const char *.
+ * src/parse-gram.y (declaration): Rename as...
+ (prologue_declaration): this.
+ (string_content): Remove this nonterminal, use STRING.
+ (braceless, content, content.opt): New nonterminal.
+ Use them.
+ (%define): Now accept content.opt, i.e., accept also BRACED_CODE
+ as value.
+ * src/scan-gram.l (getargs.h): Don't include it.
+
+2006-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/lalr1.cc (YYCDEBUG): Use 'if (yydebug_) (*yycdebug_)'
+ rather than a for-loop that declares a local bool variable. This
+ should work around a compatibility problem with a Cray x1e C++
+ compiler reported by Hung Nguyen in
+ <http://lists.gnu.org/archive/html/help-bison/2006-07/msg00022.html>.
+ The for-loop was introduced in the 2004-11-17 change but I don't
+ know why it was needed.
+
+2006-07-12 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4: Comment changes.
+
+2006-07-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/complain.c (error_message, ERROR_MESSAGE): New.
+ To factor...
+ (fatal_at, fatal, warn_at, warn, complain_at, complain): these.
+ * src/complain.h, src/complain.c (warning_issued): Remove, unused.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Instead of %union, you can define and use your own union type
+ YYSTYPE if your grammar contains at least one <type> tag.
+ Your YYSTYPE need not be a macro; it can be a typedef.
+ * doc/bison.texinfo (Value Type, Multiple Types, Location Type):
+ (Union Decl, Decl Summary): Document this.
+ * data/glr.c (YYSTYPE): Implement this.
+ * data/glr.cc (YYSTYPE): Likewise.
+ * data/lalr1.cc (YYSTYPE): Likewise.
+ * data/yacc.c (YYSTYPE): Likewise.
+ * src/output.c (prepare): Output tag_seen_flag.
+ * src/parse-gram.y (declaration, grammar_declaration):
+ Use 'union_seen' rather than 'typed' to determine whether
+ %union has been seen, since grammars can now be typed without
+ %union.
+ (symbol_declaration, type.opt, symbol_def):
+ Keep track of whether a tag has been seen.
+ * src/reader.c (union_seen, tag_seen): New vars.
+ (typed): remove.
+ * src/reader.h (union_seen, tag_seen, typed): Likewise.
+ * src/scan-code.l (untyped_var_seen): New variable.
+ (handle_action_dollar): Adjust to above changes.
+ (handle_action_dollar, handle_action_at):
+ Improve overflow checking for outlandish numbers.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Redo test to
+ avoid new diagnostics generated by above changes.
+ * tests/regression.at (YYSTYPE typedef): Add test to check
+ for type tags without %union.
+
+ * src/symlist.c (symbol_list_length): Return int, not unsigned
+ int, since callers expect int. This may need to get revisited
+ once we have proper integer overflow checking.
+
+ * src/scan-gram.h (gram_scanner_cursor): Remove decl, since this
+ object is now static.
+
+ * src/getargs.c (flags_argmatch): Return void, not int,
+ to pacify ./configure --enable-gcc-warnings.
+
+ * src/flex-scanner.h (STRING_FREE): Don't use FLEX_PREFIX (last_string)
+ since last_string is already defined to FLEX_PREFIX (last_string).
+
+2006-07-09 Akim Demaille <akim@lrde.epita.fr>
+
+ Implement --warnings/-W.
+ * src/getargs.c (report_argmatch, trace_argmatch): Remove,
+ replaced by...
+ (flags_argmatch, FLAGS_ARGMATCH): this new function and macro.
+ Adjust callers.
+ * src/getargs.h, src/getargs.c (warnings, warnings_flags)
+ (warnings_args, warnings_types): New.
+ (getargs, short_options, long_options): Accept -W/--warnings.
+ Sort the options by alphabetical order, upper case letter right
+ before its lower case.
+
+2006-07-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Change %merge result type clash warnings to errors. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-07/msg00026.html>.
+ * src/reader.c (record_merge_function_type): Use complain_at.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): Update test case results.
+
+2006-07-09 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/getargs.h, src/getargs.c: Swap --report and --trace handling
+ to be in alphabetical order.
+ (trace_args): Spelling fixes.
+
+2006-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c (YYID, yy_stack_print): Prefix local vars with "yy"
+ so they don't collide with user-defined macros.
+ (yy_stack_print): Don't assume that yytype_int16 promotes to int;
+ this was never guaranteed, and now that we're using gnulib stdint,
+ which defines int_fast16_t to long int, the problem is exposed.
+
+2006-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_basename): Simplify a bit, since we don't
+ need the full POSIX semantics (and weren't implementing them
+ anyway).
+
+ Adjust to Autoconf 2.60 and today's gnulib.
+ * bootstrap (gnulib_modules): Add stdint.
+ Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
+ no longer copies it.
+ (intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
+ since stdint needs the former and wcwidth (which is now required
+ by mbswidth) needs the latter.
+ Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
+ work around a compatibility glitch between gettext 0.14.6 and
+ Autoconf 2.60.
+ * configure.ac (AC_PREREQ): Require Autoconf 2.60.
+ Do not check for uintptr_t, since new stdint module does the right
+ thing.
+ * lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
+ Add stdint.h, stdint_.h, wcwidth.h.
+ * m4/.cvsignore: Remove alloca.m4, onceonly.m4.
+ Add absolute-header.m4, double-slash-root.m4, longlong.m4,
+ stdint.m4, wchar_t.m4, wcwidth.m4.
+ * src/files.c: Include <dirname.h> and <stdio-safer.h> in the
+ usual order for ../lib/*.h files.
+ (file_name_split): Use last_component, not base_name, to adjust
+ to gnulib changes.
+ * src/parse-gram.h: Include <strverscmp.h> in the usual order
+ for ../lib/*.h files.
+ (YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
+ Define unconditionally, since we now assume the stdint module.
+ * src/scan-skel.l: Include <dirname.h>.
+ (BASE_QPUTS): Use last_component, not base_name.
+ * src/system.h: Include <unlocked-io.h> in the usual order
+ for ../lib/*.h files. Include <stdint.h> unconditionally,
+ since we now use the stdint module.
+ (uintptr_t): Declare if UINTPTR_MAX is not defined, not
+ HAVE_UINTPTR_T, since we now use the stdint module.
+ (base_name): Remove decl, since files now include <dirname.h>
+ to get the decl.
+
+2006-07-08 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_location_initial_column, b4_location_initial_line):
+ New, default to 1.
+ * data/yacc.c, data/glr.c, data/location.cc: Use them.
+ * NEWS, doc/bison.texinfo: The initial column and line are 1 by
+ default.
+ * tests/calc.at: Adjust.
+
+2006-07-08 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_basename): New.
+ (b4_syncline): Also output the location of its invocation (from
+ the skeleton).
+ (b4_user_action, b4_define_user_action, b4_user_actions)
+ (b4_user_initial_action, b4_user_post_prologue, b4_user_start_header)
+ (b4_user_stype): New.
+ * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: Use them.
+
+2006-07-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In the grammar file, the first column is 1 not 0 on the first line as
+ on every other line.
+ * src/parse-gram.y (%initial-action): Initialize @$ correctly.
+ * tests/input.at (Torturing the Scanner): Update output.
+
+ * src/scan-gram.l (scanner_cursor): Declare it static.
+
+2006-07-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ In warnings, say "previous declaration" rather than "first
+ declaration".
+ * src/symtab.c (redeclaration): Do that here.
+ * src/reader.c (record_merge_function_type): In the case of a result
+ type clash, report the previous declaration rather than the very first
+ one in the grammar file.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): Add a third declaration to check this behavior.
+ * tests/input.at (Incompatible Aliases): Update output.
+
+2006-06-27 Akim Demaille <akim@epita.fr>
+
+ * doc/Doxyfile.in: New.
+ * doc/Makefile.am: Use it.
+ * src/lalr.h, src/symtab.h: Initial doxygenation.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't miss %merge result type warnings just because the LHS types are
+ declared after the %merge. This continues the effort of the previous
+ patch.
+ * src/reader.c (get_merge_function): Don't set the merger type yet.
+ (record_merge_function_type): New function for setting the merger type
+ and checking for clashes.
+ (grammar_current_rule_merge_set): Set the location of the %merge for
+ the current rule.
+ (packgram): Invoke record_merge_function_type for each rule now that
+ all symbol type declarations have been parsed.
+ * src/reader.h (merger_list.type_declaration_location): New member
+ storing the location of the first %merge from which the type for this
+ merging function was derived.
+ * src/symlist.h (symbol_list.merger_declaration_location): New member
+ storing the location of a rule's %merge, if any.
+ * tests/glr-regression.at (Missed %merge type warnings when LHS type is
+ declared later): New test to catch the error fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Get action warnings (grammar_rule_check) right even when symbol
+ declarations appear after the rules. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00108.html>
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00151.html>.
+ Don't mistake the type of $$ in a midrule to be that of its parent
+ rule's $$.
+ * src/reader.c (grammar_current_rule_end): Don't invoke
+ grammar_rule_check yet since not all symbol declarations may have been
+ parsed yet.
+ (grammar_midrule_action): Likewise.
+ Don't record whether the midrule's $$ has been used yet since actions
+ haven't been translated yet.
+ Record the midrule's parent rule and its RHS index within the parent
+ rule.
+ (grammar_current_rule_action_append): Don't translate the action yet
+ since not all symbol declarations may have been parsed yet and, thus,
+ warnings about types for $$, $n, @$, and @n can't be reported yet.
+ (packgram): Translate the action and invoke grammar_rule_check now that
+ all symbol declarations have been parsed.
+ * src/scan-code.l (handle_action_dollar): Now that this is invoked
+ after parsing the entire grammar file, the symbol list here in the case
+ of a midrule is actually the midrule's empty RHS, so reference its
+ parent rule's RHS where necessary.
+ On the other hand, now that you can already know it's a midrule, you
+ aren't forced to think $$ has the same type as its parent rule's $$.
+ (handle_action_at): In the case of a midrule, reference the parent rule
+ where necessary.
+ * src/symlist.c (symbol_list_new): Initialize new midrule-related
+ members.
+ (symbol_list_length): Now that this is invoked after all rules have
+ been parsed, a NULL symbol (rather than a NULL symbol list node)
+ terminates a rule. symbol_list_print already does this correctly.
+ * src/symlist.h (symbol_list.midrule_parent_rule,
+ symbol_list.midrule_parent_rhs_index): New members so that midrules can
+ remember their relationships with their parents.
+ * tests/input.at (Type Clashes): Extend to catch the midrule $$ error
+ fixed by the above patch.
+ (_AT_UNUSED_VALUES_DECLARATIONS, AT_CHECK_UNUSED_VALUES): New m4 macros
+ implementing...
+ (Unused values): ... this old test case and...
+ (Unused values before symbol declarations): ... this new test case.
+ This one is the same as `Unused values' except that all symbol
+ declarations appear after the rules in order to catch the rest of the
+ errors fixed by the above patch.
+
+2006-06-26 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ More cleanup.
+ * src/reader.c (current_rule): Declare it static since it's no longer
+ used outside this file.
+ (grammar_current_rule_action_append): Remove redundant arguments from
+ translate_rule_action invocation.
+ * src/reader.h (current_rule): Remove this unused extern.
+ * src/scan-code.h (translate_rule_action): Remove redundant arguments.
+ * src/scan-code.l (translate_rule_action): Likewise.
+
+2006-06-25 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Clean up yesterday's patch.
+ * parse-gram.y (rhs): Move grammar_midrule_action invocation from here
+ to...
+ * src/reader.c (grammar_current_rule_action_append): ... here for
+ consistency with grammar_current_rule_symbol_append.
+ * tests/regression.at (Braced code in declaration in rules section):
+ Make yyerror and yylex static as usual.
+
+2006-06-24 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Fix bug that mistakes braced code in a declaration in the rules section
+ to be a rule action. Mentioned at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00105.html>.
+ * src/scan-gram.l: Move midrule action detection from the start of the
+ scanning of any braced code to...
+ * src/parse-gram.y (rhs): ... the parsing of braced code as a rule
+ action. For readability, use $2 and @2 rather than the equivalent
+ global variables.
+ * tests/regression.at (Braced code in declaration in rules section):
+ New test to catch the error fixed by the above patch.
+
+ Work on code readability some.
+ * src/scan-code.l (current_rule): Get rid of this misleading and
+ redundant declaration: it's actually extern'ed in reader.h.
+ (YY_DECL, code_lex, handle_action_dollar, handle_action_at,
+ translate_action): Add a rule argument and use it instead of the global
+ current_rule.
+ (translate_rule_action): This already receives current_rule through an
+ argument, so pass it on to translate_action instead of assigning
+ current_rule to current_rule.
+ (translate_symbol_action, translate_code): Pass rule = NULL to
+ translate_action.
+
+2006-06-23 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Rename %before-definitions to %start-header and %after-definitions to
+ %end-header. Don't use these declarations to separate pre-prologue
+ blocks from post-prologue blocks. Add new order-independent
+ declarations %before-header and %after-header as alternatives to the
+ traditional Yacc pre-prologue and post-prologue blocks. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>.
+ * NEWS (2.3+): Update for these changes.
+ * data/glr.c (b4_before_definitions): Update to...
+ (b4_start_header): ... this.
+ (b4_after_definitions): Update to...
+ (b4_end_header): ... this.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+ * doc/bison.texinfo (The prologue): Update names, and replace remaining
+ prologue blocks with %*-header declarations.
+ (Calc++ Parser): Likewise.
+ (Bison Declaration Summary): Update names.
+ (Bison Symbols): Update description.
+ * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to...
+ (PERCENT_END_HEADER): ... this.
+ (PERCENT_BEFORE_DEFINITIONS): Update to...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ (declaration): Update token names and m4 macro names.
+ When parsing %end-header and %start-header, invoke translate_code
+ before muscle_code_grow, and no longer set global booleans to remember
+ whether these declarations have been seen.
+ Parse new %after-header and %before-header.
+ * src/reader.c (before_definitions, after_definitions): Remove.
+ (prologue_augment): Accept a new bool argument to specify whether to
+ augment the pre-prologue or post-prologue.
+ * src/reader.h (before_definitions, after_definitions): Remove these
+ extern's.
+ (prologue_augment): Add new bool argument.
+ * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to...
+ (PERCENT_END_HEADER): ... this.
+ (PERCENT_BEFORE_DEFINITIONS): Update to...
+ (PERCENT_START_HEADER): ... this.
+ (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens.
+ * tests/actions.at (Printers and Destructors): Update names.
+
+2006-06-22 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Add comparison operators for C++ location classes. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00092.html>.
+ * data/c++.m4 (b4_define_location_comparison): New boolean %define
+ declaration indicating whether filename_type has an operator==. If
+ filename_type is `std::string', it defaults to `1', `0' otherwise.
+ * data/location.cc: Iff b4_define_location_comparison is `1', add
+ operator== and operator!= for class position and for class location.
+
+ Some minor fixes.
+ * src/scan-action.l: Remove unused file.
+ * src/symtab.c (symbol_printer_set): Use printer_location not
+ destructor_location.
+ * src/symtab.h (struct symbol): Replace incorrect source comment for
+ printer members.
+ * tests/input.at (Incompatible Aliases): Update output with correct
+ printer location.
+
+2006-06-20 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't put the pre-prologue in the header file. For the yacc.c code
+ file and the glr.c header and code files, move the pre-prologue before
+ the token definitions. Add new %before-definitions and
+ %after-definitions to declare code that will go in both the header file
+ and code file. Discussed at
+ <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00000.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00016.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00055.html>.
+ * NEWS (2.3+): Describe these changes.
+ * data/glr.c (b4_pre_prologue): Move from within to before...
+ (b4_shared_declarations): ... this.
+ Add new b4_before_definitions before b4_token_enums.
+ Add new b4_after_definitions at the end.
+ * data/glr.cc (b4_pre_prologue): Replace with...
+ (b4_before_definitions): ... this in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/lalr1.cc (b4_pre_prologue): Move from the header file to the
+ code file right before including the header file.
+ (b4_before_definitions): New in the previous position of
+ b4_pre_prologue in the header file.
+ (b4_after_definitions): New near the end of the header file.
+ * data/yacc.c: Clean up some m4 quoting especially in the header file.
+ (b4_token_enums_defines): In the code file, move to right before
+ YYSTYPE for consistency with the header file.
+ (b4_before_definitions): New right before b4_token_enums_defines in
+ both the header and code file.
+ (b4_after_definitions): New right after YYLTYPE and yylloc in both the
+ header and code file.
+ * doc/bison.texinfo (Prologue): Show use of %before-definitions instead
+ of prologues for %union dependencies.
+ (Bison Declaration Summary): In %defines description, mention the
+ effect of %before-definitions and %after-definitions on the header
+ file.
+ (Calc++ Parser): Forward declare driver in a %before-definitions rather
+ than in the pre-prologue so that make check succeeds.
+ (Bison Symbols): Add entries for %before-definitions and
+ %after-definitions.
+ * src/parse-gram.y (PERCENT_BEFORE_DEFINITIONS): New token for
+ %before-definitions.
+ (PERCENT_AFTER_DEFINITIONS): New token for %after-definitions.
+ (declaration): Parse those declarations and append to
+ b4_before_definitions and b4_after_definitions, respectively.
+ * src/reader.c (before_definitions, after_definitions): New bools to
+ track whether those declarations have been seen.
+ (prologue_augment): Add to the post-prologue if %union,
+ %before-definitions, or %after-definitions has been seen.
+ * src/reader.h (before_definitions, after_definitions): New extern's.
+ * src/scan-gram.l: Scan the new declarations.
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Place the second
+ prologue block in a %before-definitions or a %after-definitions based
+ on whether the %union is declared.
+ * tests/regression.at (Early token definitions with --yacc, Early token
+ definitions without --yacc): Move tests for token definitions into the
+ post-prologue since token names are no longer defined in the
+ pre-prologue.
+
+2006-06-20 Akim Demaille <akim@epita.fr>
+
+ * src/symtab.h, src/symtab.c (symbol_from_uniqstr): New.
+ (symbol_get): Use it.
+ * src/parse-gram.y: Use it.
+
+2006-06-19 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/scan-gram.l: Remove unused declaration of last_string_1 so the
+ build succeeds when configured with --enable-gcc-warnings.
+
+2006-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/parse-gram.y (char_name): New function.
+ (CHAR, STRING, string_content): For %printer, properly escape.
+ (ID): Prefer fputs to fprintf.
+ (id): Reindent to be consistent with other rules.
+ Properly quote char.
+
+ The Translation Project changed its way of publishing translations
+ to maintainers. I haven't received any responses to my request
+ for supporting the old way, or for documenting the new way. I
+ have modified 'bootstrap' to use screen scraping
+ (in this case, HTML scraping). This is unreliable and inelegant,
+ but I don't see any better way. Yuck.
+ * bootstrap (TP_URL, WGET_COMMAND): New vars.
+ (get_translations): New function, which uses HTML scraping to
+ deduce locations of latest translations.
+ Use this function to grab both bison and bison-runtime .po files.
+ Don't bother priming the pump for the runtime-po domain any more,
+ as it's now translated better than bison is.
+
+2006-06-19 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l: No longer "parse" things after `%union' until
+ `{'. Rather, return a single "%union" token.
+ No longer make symbols: return strings, and leave the conversion
+ to symbols to the parser.
+ (SC_PRE_CODE, token_type): Remove.
+ * src/parse-gram.y (%union): New field `character'.
+ Sort tokens.
+ (CHAR): New token.
+ (ID, ID_COLON): Now that the scanner no longer makes them
+ identifiers, adjust all uses to invoke symbol_get.
+ (id_colon): New, wraps the conversion from string to symbol.
+ (%union): Accept a possible union_name.
+ (symbol): Now can be a char.
+ * data/c.m4 (b4_union_name): Leave a default value.
+ * data/glr.c, data/yacc.c: Use it.
+
+2006-06-11 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For associating token numbers with token names for "yacc.c", don't use
+ #define statements unless `--yacc' is specified; always use enum
+ yytokentype. Most important discussions start at:
+ <http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00053.html>,
+ <http://lists.gnu.org/archive/html/bison-patches/2005-12/msg00052.html>,
+ and
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00043.html>.
+ * NEWS (2.3+): Mention.
+ * data/c.m4 (b4_yacc_if): New.
+ (b4_token_enums_defines): Use b4_yacc_if to decide whether to add the
+ token #define's.
+ * doc/bison.texinfo (Bison Options): Describe the effect of `--yacc'
+ on token name definitions.
+ * src/getargs.c (usage): Capitalize `Yacc' in English.
+ * src/output.c (prepare): Define b4_yacc_flag.
+ * tests/regression.at (Early token definitions): Test that tokens names
+ are defined before the pre-prologue not just before the post-prologue.
+ Remove this test case and copy to...
+ (Early token definitions with --yacc): ... this to test #define's.
+ (Early token definitions without --yacc): ... and this to test enums.
+
+2006-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Reword the post-2.3 change to not be so optimistic about
+ removing the old "look-ahead" spelling.
+ Update previous look-ahead/lookahead change reports.
+ * REFERENCES: look-ahead -> lookahead (since that's
+ what he actually wrote).
+ * doc/refcard.tex: look ahead -> lookahead,
+ look-ahead -> lookahead
+
+2006-06-09 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ For consistency, use `lookahead' instead of `look-ahead' or
+ `look_ahead'. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-01/msg00049.html>
+ and then at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00017.html>.
+ * NEWS: For the next release, note the change to `--report'.
+ * TODO, doc/bison.1: Update English.
+ * doc/bison.texinfo: Update English.
+ (Understanding Your Parser, Bison Options): Document as
+ `--report=lookahead' rather than `--report=look-ahead'.
+ * src/conflicts.c: Update English in comments.
+ (lookahead_set): Rename from look_ahead_set.
+ (flush_reduce): Rename argument look_ahead_tokens to lookahead_tokens.
+ (resolve_sr_conflict): Rename local look_ahead_tokens to
+ lookahead_tokens, and update other uses.
+ (flush_shift, set_conflicts, conflicts_solve, count_sr_conflicts,
+ count_rr_conflicts, conflicts_free): Update uses.
+ * src/getargs.c (report_args): Move "lookahead" before alternate
+ spellings.
+ (report_types): Update uses.
+ (usage): For `--report' usage description, state `lookahead' spelling
+ rather than `look-ahead'.
+ * src/getargs.h (report.report_lookahead_tokens): Rename from
+ report_look_ahead_tokens.
+ * src/lalr.c: Update English in comments.
+ (compute_lookahead_tokens): Rename from compute_look_ahead_tokens.
+ (state_lookahead_tokens_count): Rename from
+ state_look_ahead_tokens_count.
+ Rename local n_look_ahead_tokens to n_lookahead_tokens.
+ (lookahead_tokens_print): Rename from look_ahead_tokens_print.
+ Rename local n_look_ahead_tokens to n_lookahead_tokens.
+ Update other uses.
+ Update English in output.
+ (add_lookback_edge, initialize_LA, lalr, lalr_free): Update uses.
+ * src/print.c: Update English in comments.
+ (lookahead_set): Rename from look_ahead_set.
+ (print_reduction): Rename argument lookahead_token from
+ look_ahead_token.
+ (print_core, state_default_rule, print_reductions, print_results):
+ Update uses.
+ * src/print_graph.c: Update English in comments.
+ (print_core): Update uses.
+ * src/state.c: Update English in comments.
+ (reductions_new): Update uses.
+ (state_rule_lookahead_tokens_print): Rename from
+ state_rule_look_ahead_tokens_print, and update other uses.
+ * src/state.h: Update English in comments.
+ (reductions.lookahead_tokens): Rename from look_ahead_tokens.
+ (state_rule_lookahead_tokens_print): Rename from
+ state_rule_look_ahead_tokens_print.
+ * src/tables.c: Update English in comments.
+ (conflict_row, action_row): Update uses.
+ * tests/glr-regression.at
+ (Incorrect lookahead during deterministic GLR,
+ Incorrect lookahead during nondeterministic GLR): Rename
+ print_look_ahead to print_lookahead.
+ * tests/torture.at: Update English in comments.
+ (AT_DATA_LOOKAHEAD_TOKENS_GRAMMAR): Rename from
+ AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR.
+ (Many lookahead tokens): Update uses.
+ * data/glr.c: Update English in comments.
+ * lalr1.cc: Likewise.
+ * yacc.c: Likewise.
+ * src/conflicts.h: Likewise.
+ * src/lalr.h: Likewise.
+ * src/main.c: Likewise.
+ * src/output.c: Likewise.
+ * src/parse-gram.c: Likewise.
+ * src/tables.h: Likewise.
+ * tests/calc.at: Likewise.
+
+2006-06-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/flex-scanner.h (yytext): Remove stray `*/' in #define.
+
+2006-06-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ * TODO: Add request from Nelson H. F. Beebe to be able to install
+ Bison without installing the yacc script.
+
+2006-06-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/flex-scanner.h: For the sake of Flex 2.5.4, don't #define yyleng
+ and yytext if they're already #define'd.
+ * src/flex-scanner.h, src/location.h: Move #include "system.h" to...
+ * src/scan-code-c.c: ... here.
+ * src/scan-code.l, src/scan-gram.l: ... and here. Also #include
+ <config.h>.
+
+2006-06-07 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Get Bison to build again when configured with --enable-gcc-warnings.
+ * src/location.c, src/location.h, src/main.c, src/scan-code.l: Add some
+ missing #include's.
+ * src/scan-code.l (handle_action_dollar, handle_action_at): Rename
+ loc argument as it shadows a global.
+ * src/scan-gram.l: Remove stray comma that prevents boundary_set
+ invocation.
+
+ * src/.cvsignore: Add scan-code.c.
+
+2006-06-07 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l: Move the "add a trailing ; to actions" code
+ to...
+ * src/scan-code.l: here.
+ * tests/input.at (Torturing the Scanner): Fix another location
+ error.
+
+2006-06-07 Akim Demaille <akim@epita.fr>
+
+ * src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash.
+
+2006-06-06 Akim Demaille <akim@epita.fr>
+
+ Extract the parsing of user actions from the grammar scanner.
+ As a consequence, the relation between the grammar scanner and
+ parser is much simpler. We can also split "composite tokens" back
+ into simple tokens.
+ * src/gram.h (ITEM_NUMBER_MAX, RULE_NUMBER_MAX): New.
+ * src/scan-gram.l (add_column_width, adjust_location): Move to and
+ rename as...
+ * src/location.h, src/location.c (add_column_width)
+ (location_compute): these.
+ Fix the column count: the initial column is 0.
+ (location_print): Be robust to ending column being 0.
+ * src/location.h (boundary_set): New.
+ * src/main.c: Adjust to scanner_free being renamed as
+ gram_scanner_free.
+ * src/output.c: Include scan-code.h.
+ * src/parse-gram.y: Include scan-gram.h and scan-code.h.
+ Use boundary_set.
+ (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_INITIAL_ACTION)
+ (PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Remove the {...} part,
+ which is now, again, a separate token.
+ Adjust all dependencies.
+ Whereever actions with $ and @ are used, use translate_code.
+ (action): Remove this nonterminal which is now useless.
+ * src/reader.c: Include assert.h, scan-gram.h and scan-code.h.
+ (grammar_current_rule_action_append): Use translate_code.
+ (packgram): Bound check ruleno, itemno, and rule_length.
+ * src/reader.h (gram_in, gram__flex_debug, scanner_cursor)
+ (last_string, last_braced_code_loc, max_left_semantic_context)
+ (scanner_initialize, scanner_free, scanner_last_string_free)
+ (gram_out, gram_lineno, YY_DECL_): Move to...
+ * src/scan-gram.h: this new file.
+ (YY_DECL): Rename as...
+ (GRAM_DECL): this.
+ * src/scan-code.h, src/scan-code.l, src/scan-code-c.c: New.
+ * src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out):
+ (gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in):
+ (gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy):
+ Move these declarations, and...
+ (obstack_for_string, STRING_GROW, STRING_FINISH, STRING_FREE):
+ these to...
+ * src/flex-scanner.h: this new file.
+ * src/scan-gram.l (rule_length, rule_length_overflow)
+ (increment_rule_length): Remove.
+ (last_braced_code_loc): Rename as...
+ (gram_last_braced_code_loc): this.
+ Adjust to the changes of the parser.
+ Move all the handling of $ and @ into...
+ * src/scan-code.l: here.
+ * src/scan-gram.l (handle_dollar, handle_at): Remove.
+ (handle_action_dollar, handle_action_at): Move to...
+ * src/scan-code.l: here.
+ * src/Makefile.am (bison_SOURCES): Add flex-scanner.h,
+ scan-code.h, scan-code-c.c, scan-gram.h.
+ (EXTRA_bison_SOURCES): Add scan-code.l.
+ (BUILT_SOURCES): Add scan-code.c.
+ (yacc): Be robust to white spaces.
+
+ * tests/conflicts.at, tests/input.at, tests/reduce.at,
+ * tests/regression.at: Adjust the column numbers.
+ * tests/regression.at: Adjust the error message.
+
+2006-06-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+ Use Akim's wording from
+ <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00056.html>.
+
+2006-06-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Between Bison releases, manually append `+' to the previous Bison
+ release number, and use that as a signal to automatically print the
+ ChangeLog's CVS Id keyword from --version. Discussed starting at
+ <http://lists.gnu.org/archive/html/bison-patches/2006-05/msg00028.html>.
+ * ChangeLog: Add Id header.
+ * configure.ac (AC_INIT): Append `+' to `2.3'.
+ * src/.cvsignore: Add revision.c.
+ * src/Makefile.am (bison_SOURCES): Add revision.c and revision.h.
+ (BUILT_SOURCES): Add revision.c.
+ (revision.c): New target rule. This file defines a new global variable
+ named revision. It initializes it with either the Id from ChangeLog
+ or, if VERSION doesn't contain `+', with the empty string.
+ * src/getargs.c (version): Print the value of revision.
+ * src/revision.h: Extern revision.
+
+2006-06-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.3.
+ * configure.ac (AC_INIT): Likewise.
+
+2006-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (YYRECOVERING): Define to be a function-like macro
+ with no arguments, not as an object-like macro. This is for
+ compatibility with data/yacc.c. Problem reported by John P. Hartmann in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00059.html>.
+ * doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols):
+ Document this.
+
+2006-05-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Back out yesterday's modification of the
+ --help output so that we don't have to wait for translation before
+ releasing 2.3.
+
+2006-05-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Introduction): Don't say "GLR grammar".
+ Problem reported by Akim Demaille.
+
+2006-05-29 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output.
+
+2006-05-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c (yy_reduce_print): Omit trailing white space in
+ generated source code. Problem reported by Frans Englich in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00049.html>.
+
+2006-05-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint (gzip_rsyncable, GZIP_ENV): Compute within the
+ shell, not within 'make', so that 'make' by an ordinary builder
+ (using GNU make) does not worry about configuring gzip. This also
+ works around a bug reported independently by Keith Thompson and by
+ Georg Schwarz, whereby gzip 1.2.4 --help would output usage on
+ stderr rather than stdout, messing up the build logs.
+
+2006-05-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/yacc.c (yyparse): Wrap the final return from yyparse inside YYID
+ to make sure that YYID will never be unused. This fixes a 'make
+ maintainer-check' failure caused by the recent changes to the 'Trivial
+ grammars' test case, which caused g++ 4.1.0 to complain that YYID was
+ not used.
+ * data/glr.c (yyparse): Wrap yyparse's return inside YYID just in case.
+
+2006-05-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyresolveLocations): Remove bogus YYASSERT that the
+ state before an empty RHS is always resolved here. Only the location
+ of that state is guaranteed to be resolved, and that's enough. This
+ fixes the remaining bug reported by Derek M. Jones in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+ * tests/glr-regression.at (Uninitialized location when reporting
+ ambiguity): Test the above case.
+ Also, the embedded comments in this test case claim it checks the case
+ of an empty RHS that has inherited the initial location. However, the
+ corresponding LHS was already resolved, so yyresolveLocations didn't
+ actually have reason to modify it. Fix this by forcing
+ nondeterministic operation at the beginning of the parse.
+
+2006-05-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_yy_symbol_print_generate):
+ (b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
+ 'const YYSTYPE', and similarly for YYLTYPE. This fixes one
+ of the bugs reported today by Derek M Jones in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
+ * doc/bison.texinfo (Value Type): Document that YYSTYPE must be
+ defined to be a type name without parens or brackets.
+ (Location Type): Similarly for YYLTYPE.
+ * tests/regression.at (Trivial grammars): Put in a test for this
+ bug that will be caught by 'make maintainer-check' (though not,
+ alas, by 'make check' unless your compiler is picky).
+
+2006-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.2.
+ * configure.ac (AC_INIT): Likewise.
+
+2006-05-17 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyreportTree): Make room in yystates for the state
+ preceding the RHS. This fixes the segmentation fault reported by Derek
+ M. Jones in
+ <http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
+ (yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
+ to the user. Reported for yyreportTree by Derek M. Jones later in the
+ same thread.
+ * THANKS: Add Derek M. Jones.
+ Update my email address.
+ Fix typo in Steve Murphy's name.
+
+2006-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyreportSyntaxError): Fix off-by-one error in
+ checking against YYLAST that caused the parser to miss a potential
+ alternative in its diagnostic.
+ Problem reported by Maria Jose Moron Fernandez in
+ <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
+ * data/lalr1.cc (yysyntax_error_): Likewise.
+ * data/yacc.c (yysyntax_error): Likewise.
+ * tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
+ tokens, in case we run into an older C compiler.
+ (_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
+ Use them to check for the off-by-one error fixed above.
+
+ * data/yacc.c (yytnamerr): Fix typo: local var should be of type
+ YYSIZE_T, not size_t.
+ * tests/regression.at (Trivial grammars): New test, to catch
+ the error fixed by the above patch.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/bison.texinfo (C++ Bison Interface): Clarify the naming
+ scheme.
+ Reported by Steve Murphy.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/glr.cc, data/lalr1.cc: Using %defines is mandatory.
+ * data/glr.cc: b4_location_flag is now b4_locations_flag.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ Implement --trace=m4.
+ * src/getargs.c (trace_types, trace_args): Accept trace_m4.
+ * src/output.c (output_skeleton): When set, pass -dV to m4.
+
+ Factor the handling of flags in m4.
+ * src/output.c (prepare): Rename the muscle names debug, defines,
+ error_verbose to debug_flag, defines_flag, error_verbose_flag.
+ * data/c.m4: Adjust.
+ (_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
+ Use b4_define_flag_if to define other b4_FLAG_if macros.
+ (b4_location_if): As a consequence, rename as...
+ (b4_locations_if): this, for consistency.
+ Adjust all the skeletons.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * etc/bench.pm: Shorten bench names.
+
+2006-05-14 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/output.h, src/output.c (error_verbose): Move to...
+ * src/getargs.h, src/getargs.c: here.
+ Sort the flags.
+ Adjust dependencies.
+
+2006-05-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_copyright): Put the special exception for Bison
+ skeletons here, so we don't have to put it in each skeleton. All
+ uses changed. Suggested by Akim Demaille. Also, wrap the
+ copyright notice, in case it is longer than 80 columns. Replace
+ comma by newline after title.
+
+2006-05-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Calc++ Scanner): The flex behavior is an
+ incompatibility, not a bug. Mention that it wasn't fixed as of
+ flex 2.5.33.
+
+2006-05-11 Akim Demaille <akim@lrde.epita.fr>
+
+ * examples/extexi: Enforce the precedence of concatenation over
+ >>.
+ Reported by Tommy Nordgren.
+
+2006-05-11 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes
+ with the member "token".
+ Reported by Martin Nylin.
+
+2006-05-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c: Switch to Bison 2.2 special-exception language in
+ the copyright notice. Use more-regular format for titles and
+ copyright notices.
+ * data/glr.cc: Likewise.
+ * data/location.cc: Likewise.
+ * data/yacc.cc: Likewise.
+ * doc/bison.texinfo (Conditions): Document this.
+ * NEWS: likewise. Upgrade version to 2.2.
+
+2006-04-27 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/glr.cc: Remove dead code.
+
+2006-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * bootstrap: Comment out the AM_CPPFLAGS line, since we don't use
+ that variable and the line breaks the bootstrap. Problem reported
+ by Juan M. Guerrero.
+
+2006-04-24 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/bison.texinfo (Multiple start-symbols): New.
+
+2006-04-24 Akim Demaille <akim@lrde.epita.fr>
+
+ * etc/README, etc/bench.pl: New.
+
+2006-04-03 Akim Demaille <akim@lrde.epita.fr>
+
+ * src/scan-gram.l: Be robust to BRACED_CODE appearing before any
+ rule.
+ Reported by Mickael Labau.
+ * tests/input.at (Torturing the Scanner): Test it.
+
+2006-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Decl Summary): Don't mention yylloc twice.
+ Problem reported by Bob Rossi.
+
+2006-03-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo: Remove @shorttitlepage stuff; it wasn't used
+ and didn't really work.
+ For the index, use @ifnotinfo, not @iftex.
+ Minor cleanups of spacing and terminology.
+
+2006-03-12 Akim Demaille <akim@lrde.epita.fr>
+
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Fix the definition
+ of AT_NAME_PREFIX when %name-prefix is not used.
+
+2006-03-12 Akim Demaille <akim@lrde.epita.fr>
+
+ Apply --prefix to C++ skeletons too: they change the namespace.
+ The test suite already exercize these cases.
+ * data/c++.m4 (b4_namespace): New.
+ * data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
+ * data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
+ * data/yacc.c, data/glr.c: Remove a useless `[]'.
+ * doc/bison.texinfo: Document it.
+ (Option Cross Key): Use @multitable in all formats. It looks
+ nicer, even in TeX outputs.
+ (Rules): Use the same code whatever the output type is.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
+ (_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
+ * tests/calc.at: Use it, instead of hard coding `yy'.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * TODO: Remove dead items.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * doc/FAQ: Remove, merged into...
+ * doc/bison.texinfo (FAQ): this.
+ * doc/Makefile.am (EXTRA_DIST): Adjust.
+
+2006-03-10 Akim Demaille <akim@lrde.epita.fr>
+
+ * data/c.m4 (b4_token_enum): Always define the enum of tokens,
+ even if empty.
+ * data/lalrl1.cc, data/glr.cc (parser::token_type): New.
+ * doc/bison.texinfo (Calc++ Scanner): Use it.
+
+2006-03-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix two nits reported by twlevo, plus one more that I discovered.
+
+ * src/assoc.h (assoc_to_string): Give a name to the arg, as
+ this is the usual Bison style.
+ * src/location.h (location_print): Likewise.
+
+ * src/reader.h (token_name): Likewise.
+
+2006-03-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some nits reported by twlevo.
+ * doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
+ and "POSIX". Use more-modern syntax for URLs. Mention C++
+ and ask for Java. Don't hardwire OS version numbers. Add
+ copyright notice.
+ * m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
+ * src/conflicts.c (solved_conflicts_obstack): Now static.
+
+2006-03-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Introduction): Mention GLR and C++ as on the web
+ page. Say "you can use it" not "you may use it" as on the web page;
+ we're describing capabilities not granting permission.
+
+2006-03-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyresolveLocations): Rename local variables to avoid
+ shadowing warnings. Use usual patter for iterating through RHS.
+ * tests/glr-regression.at
+ (Uninitialized location when reporting ambiguity):
+ Modify yylex so that it uses its argument, rather than trying
+ to rely on ARGSUSED (which doesn't work for gcc with warnings).
+ const char -> char const.
+
+ * tests/Makefile.am ($(srcdir)/package.m4, maintainer-check-valgrind):
+ Don't use tabs inside commands; it messes up 'ps'.
+ Problem reported by twlevo.
+
+2006-03-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at (Uninitialized location when reporting
+ ambiguity): New test case.
+ * data/glr.c (yyresolveLocations): New function, which uses
+ YYLLOC_DEFAULT.
+ (yyresolveValue): Invoke yyresolveLocations before reporting an
+ ambiguity.
+ * doc/bison.texinfo (Default Action for Locations): Note
+ YYLLOC_DEFAULT's usage for ambiguity locations.
+ (GLR Semantic Actions): Cross-reference those notes.
+
+2006-03-04 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at (Leaked semantic values when reporting
+ ambiguity): Remove unnecessary union and type declarations.
+ (Leaked lookahead after nondeterministic parse syntax error): New test
+ case.
+ * data/glr.c (yyparse): Check for zero stacks remaining before
+ attempting to shift the lookahead so that you don't lose it.
+
+2006-03-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Avoid memory leaks by not invoking longjmp in yyreportAmbiguity.
+ * tests/glr-regression.at (Leaked semantic values when reporting
+ ambiguity): New test case.
+ * data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
+ yyabort rather than invoking yyFail, which invokes longjmp. Remove the
+ now unnecessary yystackp parameter.
+ (yyresolveValue): Return yyreportAmbiguity's result. Now the necessary
+ destructors can be called.
+
+ * tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
+ in existing testcases.
+
+2006-03-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ Don't leak semantic values for parent RHS when a user action cuts the
+ parser, and clean up related code a bit.
+ * tests/glr-regression.at (Leaked merged semantic value if user action
+ cuts parse): Rename to...
+ (Leaked semantic values if user action cuts parse): ... this. Add check
+ for leaked parent RHS values.
+ * data/glr.c (yydestroyGLRState): In debugging output, distinguish
+ between an unresolved state (non-empty chain of semantic options) and
+ an incomplete one (signaled by an empty chain).
+ (yyresolveStates): Document the interface. Move all manipulation of a
+ successfully or unsuccessfully resolved yyGLRState to...
+ (yyresolveValue): ... here so that yyresolveValue always leaves a
+ yyGLRState with consistent data and thus is easier to understand.
+ Remove the yyvalp and yylocp parameters since they are always just
+ taken from the yys parameter. When reporting a discarded merged value
+ in debugging output, note that it is incompletely merged. Document the
+ interface.
+ (yyresolveAction): If resolving any of the RHS states fails, destroy
+ them all rather than leaking them. Thus, as long as user actions are
+ written to clean up the RHS correctly, yyresolveAction always cleans up
+ the RHS of a semantic option. Document the interface.
+
+2006-02-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/glr.c (yyexpandGLRStack): Catch an off-by-one error that
+ led to a segmentation fault in GNU Pascal. Problem reported
+ by Waldek Hebisch.
+
+2006-02-21 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo (Mid-Rule Actions): Explain how to bury a
+ mid-rule action inside a nonterminal symbol in order to declare a
+ destructor for its semantic value.
+
+2006-02-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/yacc.c [(! defined yyoverflow || YYERROR_VERBOSE) && !
+ YYSTACK_USE_ALLOCA && ! defined YYSTACK_ALLOC && defined
+ __cplusplus && ! defined _STDLIB_H && !
+ ((defined YYMALLOC || defined malloc) && (defined YYFREE ||
+ defined free))]: Include <stdlib.h> rather than rolling our own
+ declarations of malloc and free, to avoid problems with
+ incompatible declarations (using 'throw') C++'s stdlib.h. This
+ should fix Debian bug 340012
+ <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340012>,
+ reported by Guillaume Melquiond.
+
+2006-02-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Clarify symbols versus types in unused-value warnings.
+
+ * configure.ac (AC_INIT): Bump version number.
+
+2006-02-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Version 2.1a.
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
+ since C99 requires this.
+
+2006-02-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * m4/c-working.m4: New file.
+ * configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it.
+
+2006-02-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.maint: Merge from coreutils.
+
+2006-02-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Catch a
+ configuration screwup "./configure CC=/opt/SUNWspro/bin/c89
+ CFLAGS="-xarch=generic64" CXX=/opt/SUNWspro/bin/CC
+ LDFLAGS="-xarch=generic64" with Sun C 5.7 on Solaris 10; this
+ messes up because C++ code is compiled in 32-bit mode but linked
+ in 64-bit mode.
+
+2006-02-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * doc/bison.texinfo (Calc++ Scanner): Work around a bug in flex
+ 2.5.31. This resembles the 2005-10-10 patch to src/scan-skel.l.
+
+ * examples/calc++/Makefile.am (check_PROGRAMS): Renamed from
+ nodist_PROGRAMS, since we don't need to actually compile the
+ example if we're just doing a plain 'make'. This avoids bothering
+ the installer unnecessarily about problems due to weird C++
+ compilers.
+
+2006-02-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Use #include <...> rather
+ than #include "...", and compile with -I'.'. The old method was
+ not portable, according to Posix and the C standard, and it does
+ not work with Sun C 5.7, where previous #line directives affect
+ the working directory used in later #include "..." directives.
+
+2006-02-06 Juan Manuel Guerrero <juan.guerrero@gmx.de>
+
+ Various DJGGP specific issues in /djgpp
+
+2006-02-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ More portability fixes for problems summarized by Nelson H. F. Beebe.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
+ '#include <map>' works and that you can apply ++ to iterators.
+
+2006-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around portability problems summarized by Nelson H. F. Beebe in
+ <http://lists.gnu.org/archive/html/bug-bison/2005-09/msg00021.html>.
+
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+ that '#include <string>' works.
+
+ * data/lalr1.cc (yytranslate_): No longer inline, to work around a
+ porting problem to g++ 3.4.3 on Darwin 7.9.0, where g++ complained
+ "warning: sorry: semantics of inline function static data `const
+ unsigned char translate_table[262]' are wrong (you'll wind up with
+ multiple copies)".
+
+ * lib/bbitset.h (struct bitset_vtable): Rename members not, and,
+ or, xor to not_, and_, or_, and xor_, respectively. This works
+ around a bug in GCC 3.4.3 on Irix 6.5, which apparently has a
+ random system header somewhere that includes the equivalent of
+ <iso646.h>.
+
+ * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that "$CC
+ -E" works; it apparently doesn't work with PathScale EKO Compiler
+ Suite Version 2.0.
+
+2006-01-30 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ During deterministic GLR operation, user actions should be able to
+ influence the parse by changing yychar. To make this easier to fix and
+ to make glr.c easier to evolve in general, don't maintain yytoken in
+ parallel with yychar; just compute yytoken when needed.
+ * tests/glr-regression.at (Incorrect lookahead during deterministic
+ GLR): Check that setting yychar in a user action has the intended
+ effect.
+ * data/glr.c (yyGLRStack): Remove yytokenp member.
+ (yyclearin): Don't set *yytokenp.
+ (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Examine
+ yychar rather than *yytokenp to determine the current lookahead.
+ Compute yytoken locally when needed.
+ (yyparse): Likewise. Remove the local yytoken that yytokenp used to
+ point to.
+
+ * doc/bison.texinfo (Bison Options): Remove stray sentence fragment
+ after `--report' documentation.
+
+2006-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/parse-gram.y (grammar_declaration): Location of printer
+ symbol is @1, not list->location. Bug reported by twlevo.
+ * tests/input.at (Incompatible Aliases): Adjust to above change.
+
+2006-01-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Remove. Instead, do
+ all the test at once. This makes the output easier to read in the
+ normal case.
+
+ Fix a longstanding bug uncovered by bro-0.9a9/src/parse.y, which I
+ got from <http://bro-ids.org/download.html>. The bug is that
+ when two actions appeared in succession, the second one was
+ scanned before the first one was added to the grammar rule
+ as a midrule action. Bison then output the incorrect warning
+ "parse.y:905.17-906.36: warning: unused value: $3".
+ * src/parse-gram.y (BRACED_CODE, action): These are no longer
+ associated with a value.
+ (rhs): Don't invoke grammar_current_rule_action_append.
+ (action): Invoke it here instead.
+ * src/reader.c (grammar_midrule_action): Now extern.
+ (grammar_current_rule_action_append): Don't invoke
+ grammar_midrule_action; that is now the scanner's job.
+ * src/reader.h (last_string, last_braced_code_loc):
+ (grammar_midrule_action): New decls.
+ * src/scan-gram.l (last_string): Now extern, sigh.
+ (last_braced_code_loc): New extern variable.
+ (<INITIAL>"{"): Invoke grammar_midrule_action if the current
+ rule already has an action.
+ (<SC_BRACED_CODE>"}"): Set last_braced_code_loc before returning.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES):
+ Add some tests to check that the above changes fixed the bug.
+
+2006-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/reader.c (symbol_should_be_used): Renamed from symbol_typed_p.
+ All used changed. Check whether the symbol has a destructor,
+ not whether it is typed.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): Add a destructor, so
+ that the values are still reported as unused. All line numbers
+ adjusted.
+
+2006-01-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around a bug in bro 0.8, which underparenthesizes its
+ definition of YYLLOC_DEFAULT.
+ * data/glr.c: Change all uses of YYLLOC_DEFAULT to parenthesize
+ their arguments.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.cc: Likewise.
+
+2006-01-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ Work around a bug in Pike 7.0, and give the Pike folks a
+ better way to override the usual int widths.
+ * data/yacc.c (b4_int_type): Use yytype_uint8, etc., so that the
+ user can override the types.
+ (short): #undef, to work around a bug in Pike 7.0.
+ (yytype_uint8, yytype_int8, yytype_uint16, yytype_int16): New types.
+ (union yyalloc.yyss): Use yytype_int16 rather than short.
+ All uses changed.
+ (yysigned_char): Remove.
+ * src/parse-gram.y (YYTYPE_UINT8, YYTYPE_INT8, YYTYPE_UINT16):
+ (YYTYPE_INT16): New macros, to test the new facility in yacc.c.
+ * tests/regression.at (Web2c Actions): Adjust to above changes.
+
+ * src/reader.c (check_and_convert_grammar): New function.
+ (reader): Close the input file even if something went wrong during
+ parsing. Minor file descriptor leak reported by twlevo.
+
+ * src/assoc.c (assoc_to_string): Use a default: abort (); case
+ to pacify gcc -Wswitch-default.
+ * src/scan-gram.l (adjust_location): Use a default: break; case
+ to pacify gcc -Wswitch-default.
+ * src/scan-skel.h (skel_get_lineno, skel_get_in, skel_get_out):
+ (skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in):
+ (skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy):
+ Move these decls to scan-skel.l, since they don't need to be
+ visible elsewhere.
+ * src/scan-skel.l: Accept the above decls.
+ (skel_lex): New decl, to pacify GCC when unpatched flex 2.5.31
+ is used.
+
+2006-01-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * Makefile.cfg (local-checks-to-skip): Add changelog-check,
+ since we don't want to insist on a version number at the start
+ of the changelog every time.
+ * Makefile.maint: Sync from coreutils a bit better.
+ (sc_trailing_blank): Renamed from sc_trailing_space.
+ All uses changed.
+ (sc_no_if_have_config_h, sc_require_config_h):
+ (sc_prohibit_assert_without_use): New rules.
+ (sc_obsolete_symbols): Don't catch Makefile.maint itself.
+ (sc_dd_max_sym_length): Fix leading spaces in rule.
+ (sc_system_h_headers): Prefix with @.
+ (sc_useless_cpp_parens, m4-check): Output line numbers.
+ (changelog-check): Allow version only in head.
+ * data/c.m4: Use "defined FOO" instead of "defined (FOO)", to
+ satisfy new Makefile.maint rule.
+ * data/glr.c: Likewise.
+ * data/glr.cc: Likewise.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+ * lib/ebitsetv.c: Likewise.
+ * lib/lbitset.c: Likewise.
+ * lib/subpipe.c: Likewise.
+ * lib/timevar.c: Likewise.
+ * src/system.h: Likewise.
+ * data/yacc.c (YYSTYPE): Don't generate trailing spaces in output.
+ * djgpp/Makefile.maint: Add copyright notice.
+ * djgpp/README.in: Likewise.
+ * djgpp/config.bat: Likewise.
+ * djgpp/config.site: Likewise.
+ * djgpp/config_h.sed: Likewise.
+ * djgpp/djunpack.bat: Likewise.
+ * djgpp/config.sed: Fix copyright notice to match standard format.
+ * djgpp/subpipe.h: Likewise.
+ * lib/bitsetv-print.c: Likewise.
+ * lib/bitsetv.c: Likewise.
+ * lib/subpipe.h: Likewise.
+ * lib/timevar.c: Likewise.
+ * lib/timevar.h: Likewise.
+ * djgpp/subpipe.c: Use standard recipe for config.h.
+ * lib/abitset.c: Likewise.
+ * lib/bitset.c: Likewise.
+ * lib/bitset_stats.c: Likewise.
+ * lib/bitsetv-print.c: Likewise.
+ * lib/bitsetv.c: Likewise.
+ * lib/ebitsetv.c: Likewise.
+ * lib/get-errno.c: Likewise.
+ * lib/lbitset.c: Likewise.
+ * lib/subpipe.c: Likewise.
+ * lib/timevar.c: Likewise.
+ * lib/vbitset.c: Likewise.
+ * tests/local.at: Likewise.
+ * src/scan-gram.l: Don't include verify.h, since system.h does
+ that for us.
+ * .x-sc_require_config_h: New file.
+ * .x-sc_unmarked_diagnostics: New file.
+
+2006-01-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Be a bit more systematic about using 'abort'.
+ * lib/abitset.c (abitset_test): Remove ATTRIBUTE_UNUSED; not needed.
+ * lib/bitset.c (bitset_bytes, bitset_init, bitset_op4_cmp):
+ Put 'default: abort ();' before some other case, to satisfy older
+ pedantic compilers.
+ * lib/bitset_stats.c (bitset_stats_init): Likewise.
+ * lib/ebitset.c (ebitset_elt_find, ebitset_op3_cmp): Likewise.
+ * lib/lbitset.c (lbitset_elt_find, lbitset_op3_cmp): Likewise.
+ * src/conflicts.c (resolve_sr_conflict): Likewise.
+ * src/vcg.c (get_color_str, get_textmode_str, get_shape_str):
+ (get_decision_str, get_orientation_str, get_node_alignment_str):
+ (get_arrow_mode_str, get_crossing_type_str, get_view_str):
+ (get_linestyle_str, get_arrowstyle_str): Likewise.
+ * src/conflicts.c (resolve_sr_conflict):
+ Use a default case rather than one for the one remaining enum
+ value, to catch invalid enum values as well.
+ * src/lalr.c (set_goto_map, map_goto):
+ Prefer "assert (FOO);" to "if (!FOO) abort ();".
+ * src/nullable.c (nullable_compute, token_definitions_output):
+ Likewise.
+ * src/reader.c (packgram, reader): Likewise.
+ * src/state.c (transitions_to, state_new, state_reduction_find):
+ Likewise.
+ * src/symtab.c (symbol_user_token_number_set, symbol_make_alias):
+ (symbol_pack): Likewise.
+ * src/tables.c (conflict_row, pack_vector): Likewise.
+ * src/scan-skel.l (QPUTS): Remove unnecessary parens.
+ (BASE_QPUTS, "@output ".*\n): Remove unnecessary asserts.
+ * src/system.h: Don't include <assert.h>.
+ (assert): New macro.
+
+ * doc/bison.texinfo (Prologue, Rules, Actions, Union Decl, Action Decl):
+ (Destructor Decl, Parser Function, Pure Calling):
+ Describe rules for braces inside C code more carefully.
+
+2006-01-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some porting glitches found by Nelson H. F. Beebe.
+ * lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
+ compilers that don't understand that abort () does not return.
+ * src/state.c (transitions_to): Likewise.
+ * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
+ that '#include <cstdlib>' works.
+ * src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
+ (INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
+ #undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
+ for the benefit of some pre-C99 compilers.
+
+ * bootstrap: Undo changes to gnulib files that autoreconf made.
+
+ Minor fixups to get 'make maintainer-check' to work.
+ * configure.ac: Don't use -Wnested-externs, as it's incompatible
+ with the new verify.h implementation.
+ * data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
+ * data/glr.c (YYUSE): Depend on __GNUC__ as well.
+ * data/yacc.c (YYUSE): Likewise.
+ * data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
+ * lib/subpipe.c (end_of_output_subpipe): The args are unused.
+ * src/parse-gram.y (declaration): Don't pass a string constant
+ to a function that expects char *, since GCC might complain
+ about the constant value.
+ * src/reader.c (symbol_typed_p): Add parens to pacify GCC.
+ * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
+ before #defining them.
+ * tests/glr-regression.at
+ (Incorrectly initialized location for empty right-hand side in GLR):
+ In yyerror, use the msg arg.
+ (Corrupted semantic options if user action cuts parse):
+ (Incorrect lookahead during deterministic GLR):
+ (Incorrect lookahead during nondeterministic GLR):
+ Don't name a local var 'index'; it shadows string.h's 'index'.
+
+2006-01-19 Akim Demaille <akim@epita.fr>
+
+ * tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial
+ location, not just parts of it.
+
+2006-01-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Document the fact that multiple %unions are now allowed.
+ * doc/bison.texinfo (Union Decl): Likewise.
+ * TODO: This feature is now implemented, so remove it from
+ the wishlist.
+
+ * Makefile.maint: Merge with coreutils Makefile.maint.
+ (CVS_LIST): Use build-aux version if available.
+ (VERSION_REGEXP): New macro.
+ (syntax-check-rules): Add sc_no_if_have_config_h,
+ sc_prohibit_assert_without_use, sc_require_config_h,
+ sc_useless_cpp_parens.
+ (sc_obsolete_symbols): Check for O_NDELAY.
+ (sc_dd_max_sym_length): Track coreutils.
+ (sc_unmarked_diagnostics): Look in all files, not just *.c.
+ (sc_useless_cpp_parens): New rule.
+ (news-date-check): Look for version or today's date.
+ (changelog-check): Don't require version number near head.
+ (copyright-check): Use current year instead of hardwiring 2005.
+ (my-distcheck): Depend on $(release_archive_dir)/$(prev-tgz).
+ (announcement): Add --gpg-key-ID.
+
+ * djgpp/config.sed: Add copyright notice, and replace "filesystem"
+ with "file system".
+
+ Avoid undefined behavior that addressed just before the start of an
+ array. Problem reported by twlevo.
+ * src/reader.c (packgram): Prepend a new sentinel before ritem.
+ * src/lalr.c (build_relations): Rely on new sentinel.
+ * src/gram.c (gram_free): Adjust to new sentinel.
+
+2006-01-12 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to
+ yylookaheadNeeds. All uses updated.
+ (yysplitStack): Rename local yynewLookaheadStatuses to
+ yynewLookaheadNeeds.
+ * data/glr-regression.at (Incorrect lookahead during nondeterministic
+ GLR): In comments, change `lookahead status' to `lookahead need'.
+
+2006-01-11 Paul Hilfinger <hilfingr@tully.CS.Berkeley.EDU>
+
+ * data/glr.c (yysplitStack): A little stylistic rewrite.
+
+2006-01-11 Paul Hilfinger <hilfingr@tully.CS.Berkeley.EDU>
+
+ * data/glr.c (yyaddDeferredAction): Flesh out the comment.
+
+2006-01-11 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * doc/bison.texinfo: Fix some typos.
+ (GLR Semantic Actions): New subsection discussing special
+ considerations because GLR semantic actions might be deferred.
+ (Actions): Mention look-ahead usage of yylval.
+ (Actions and Locations): Mention look-ahead usage of yylloc.
+ (Special Features for Use in Actions): Add YYEOF entry and mention it
+ in the yychar entry.
+ In the yychar entry, remove mention of the local yychar case (pure
+ parser) since this is irrelevant information when writing semantic
+ actions and since it's already discussed in `Bison Symbols' where
+ yychar is otherwise described as an external variable.
+ In the yychar entry, don't call it the `current' look-ahead since it
+ isn't when semantic actions are deferred.
+ In the yychar and yyclearin entries, add note about deferred semantic
+ actions.
+ Add yylloc and yylval entries discussing look-ahead usage.
+ (Look-Ahead Tokens): When discussing yychar, don't call it the
+ `current' look-ahead, and do mention yylval and yylloc.
+ (Error Recovery): Cross-reference `Action Features' when mentioning
+ yyclearin.
+ (Bison Symbols): In the yychar entry, don't call it the `current'
+ look-ahead.
+ In the yylloc and yylval entries, mention look-ahead usage.
+
+2006-01-08 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at: Update copyright year to 2006.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyGLRStateSet): Add yybool* yylookaheadStatuses member to
+ use during nondeterministic operation to track which stacks have
+ actually needed the current lookahead.
+ (yyinitStateSet, yyfreeStateSet, yyremoveDeletes, yysplitStack):
+ Allocate, deallocate, resize, and otherwise shuffle space for
+ yylookaheadStatuses in parallel with yystates member of yyGLRStateSet.
+ (yysplitStack, yyprocessOneStack, yyparse): Set lookahead status
+ appropriately during nondeterministic operation.
+ (yySemanticOption): Add int yyrawchar, YYSTYPE yyval, and YYLTYPE yyloc
+ members to store the current lookahead to be used by the deferred
+ user action.
+ (yyaddDeferredAction): Add size_t yyk parameter specifying the stack
+ from which the RHS is taken. Set the lookahead members of the new
+ yySemanticOption according to the lookahead status for stack yyk.
+ (yyglrShiftDefer, yyglrReduce): Pass yyk parameter on to
+ yyaddDeferredAction.
+ (yyresolveAction): Set yychar, yylval, and yylloc to the lookahead
+ members of yySemanticOption before invoking yyuserAction, and then set
+ them back to their current values afterward.
+ (yyparse): Set yychar = YYEMPTY where yytoken = YYEMPTY.
+ (yyreportAmbiguity): Add /*ARGSUSED*/ to pacify lint.
+ * tests/glr-regression.at: Remove `.' from the ends of recent test case
+ titles for consistency.
+ (Leaked merged semantic value if user action cuts parse): In order to
+ suppress lint warnings, use arguments in merge function, and assign
+ char value < 128 in main.
+ (Incorrect lookahead during deterministic GLR): New test case.
+ (Incorrect lookahead during nondeterministic GLR): New test case.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/c.m4 (b4_yy_symbol_print_generate): In yy_symbol_print, accept
+ !yyvaluep as signal that no semantic value is available to print.
+ * data/glr.c (yydestroyGLRState): If state is not resolved, don't try
+ to print a semantic value.
+
+2006-01-06 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * tests/glr-regression.at: For consistency with my newer test cases,
+ don't thank myself.
+
+2006-01-05 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c (yyresolveValue): When merging semantic options, if at
+ least one user action succeeds but a later one cuts the parse, then
+ destroy the semantic value before returning rather than leaking it.
+ (yyresolveStates): If a user action cuts the parse and thus
+ yyresolveValue fails, ignore the (unset) semantic value rather than
+ corrupting the yyGLRState, and empty the semantic options list since
+ the user actions should have called all necessary destructors.
+ Simplify code with YYCHK.
+ * tests/glr-regression.at (Corrupted semantic options if user action
+ cuts parse): New test case.
+ (Undesirable destructors if user action cuts parse): New test case.
+ Before applying any of this patch, this test case never actually failed
+ for me... but only because the corrupted semantic options usually
+ masked this bug.
+ (Leaked merged semantic value if user action cuts parse): New test
+ case.
+
+2006-01-05 Akim Demaille <akim@epita.fr>
+
+ * src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/.
+
+2006-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ * data/c.m4 (b4_c_modern): New macro, with a new provision for
+ _MSC_VER. Problem reported by Cenzato Marco.
+ (b4_c_function_def): Use it.
+ * data/yacc.c (YYMODERN_C): Remove. All uses replaced by
+ b4_c_modern.
+ (yystrlen, yystpcpy, yyparse): Use b4_c_function... macros rather
+ than rolling our own.
+
+2006-01-04 Akim Demaille <akim@epita.fr>
+
+ Also warn about non-used mid-rule values.
+ * src/symlist.h, src/symlist.c (symbol_list): Add a mid_rule
+ member.
+ (symbol_list_new): Adjust.
+ * src/reader.c (symbol_typed_p): New.
+ (grammar_rule_check): Use it.
+ (grammar_midrule_action): Bind a mid-rule LHS to its rule.
+ Check its rule.
+ * tests/input.at (AT_CHECK_UNUSED_VALUES): New.
+ Use it.
+ * tests/actions.at (Exotic Dollars): Adjust.
+
+2006-01-04 Akim Demaille <akim@epita.fr>
+
+ * src/reader.c (grammar_midrule_action): If $$ is set in a
+ mid-rule, move the `used' bit to its lhs.
+ * tests/input.at (Unused values): New.
+ * tests/actions.at (Exotic Dollars): Adjust: exp is not typed.
+
+2006-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * doc/bison.texinfo (Bison Options): Say more accurately what
+ --yacc does.
+ * src/parse-gram.y (rules_or_grammar_declaration): Don't complain
+ about declarations in the grammar when in Yacc mode, as POSIX does
+ not require a diagnostic when the grammar uses extensions.
+
+ * src/reduce.c (reduce_grammar): Remove unnecessary cast to bool.
+
+ Warn about dubious constructions like "%token T T".
+ Reported by twlevo.
+ * src/symtab.h (struct symbol.declared): New member.
+ * src/symtab.c (symbol_new): Initialize it to false.
+ (symbol_class_set): New arg DECLARING, specifying whether
+ this is a declaration that we want to warn about, if there
+ is more than one of them. All uses changed.
+
+ * data/glr.c, data/glr.cc, data/lalr1.cc, data/yacc.c:
+ Allow multiple %union directives, whose contents concatenate.
+ * src/parse-gram.y (grammar_declaration): Likewise.
+ Use muscle_code_grow, so that we don't need stype_line any more.
+ All uses changed.
+
+ * src/muscle_tab.c (muscle_grow): Fix comment.
+
+ * ChangeLog, data/c.m4, data/glr.c, data/glr.cc, data/location.cc:
+ * data/yacc.c, src/getargs.c, src/output.c, tests/cxx-type.at:
+ Update copyright year to 2006.
+
+2006-01-03 Akim Demaille <akim@epita.fr>
+
+ Have glr.cc pass (some of) the calc.at tests.
+ * data/glr.cc (b4_parse_param_orig): New.
+ (b4_parse_param): Improve its definition, and bound it more
+ clearly in the skeleton.
+ (b4_epilogue): Append, instead of prepending, in order to keep
+ #line consistency.
+ Simplify the generation of auxiliary functions: locations and
+ purity are mandated.
+ (b4_global_tokens_and_yystype): Honor it.
+ * data/location.cc (c++.m4): Don't include it.
+ * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Define AT_GLR_CC_IF
+ and AT_SKEL_CC_IF.
+ * tests/calc.at (AT_CHECK_CALC): Rely on AT_SKEL_CC_IF instead of
+ AT_LALR1_CC_IF.
+ Be sure to initialize the first position's filename.
+ (AT_CHECK_CALC_LALR1_CC): Add %location and %defines, they are
+ mandated anyway.
+ (AT_CHECK_CALC_GLR_CC): New.
+ Use it to exercise glr.cc as a lalr1.cc drop-in replacement.
+
+2006-01-02 Akim Demaille <akim@epita.fr>
+
+ * src/output.c (output_skeleton): Don't hard wire the inclusion of
+ c.m4.
+ * data/c++.m4, data/glr.c, data/yacc.c: Include c.m4.
+ * data/glr.cc: Do not include stack.hh.
+
+2006-01-02 Joel E. Denny <jdenny@ces.clemson.edu>
+
+ * data/glr.c: Reformat whitespace with tabs.
+ (b4_lpure_formals): Remove this unused m4 macro.
+ * tests/cxx-type.at: Reformat whitespace with tabs.
+ (_AT_TEST_GLR_CXXTYPES): In union Node, rename node_info to nodeInfo
+ since it's a member. Rename type to isNterm for clarity.
+