X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/72731bb70bdbd8fe7cc178214b255e6425a04c6d..5a2baae7b396f0926116967ca9492f74aae77fc7:/ChangeLog?ds=inline diff --git a/ChangeLog b/ChangeLog index 27448385..a7022679 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3298 @@ +2006-06-19 Paul Eggert + + 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 + + * 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 + + 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: + , + , + and + . + * 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 + + * 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 + + For consistency, use `lookahead' instead of `look-ahead' or + `look_ahead'. Discussed starting at + + and then at + . + * 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 + + * src/flex-scanner.h (yytext): Remove stray `*/' in #define. + +2006-06-07 Paul Eggert + + * 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 + + * 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 + . + +2006-06-07 Joel E. Denny + + 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 + + * 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 + + * src/Makefile.am (BUILT_SOURCES): Fix the trailing backslash. + +2006-06-06 Akim Demaille + + 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 + + * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output. + Use Akim's wording from + . + +2006-06-06 Joel E. Denny + + 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 + . + * 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 + + * NEWS: Version 2.3. + * configure.ac (AC_INIT): Likewise. + +2006-05-30 Paul Eggert + + * 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 + . + * doc/bison.texinfo (Action Features, Error Recovery, Table of Symbols): + Document this. + +2006-05-30 Joel E. Denny + + * 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 + + * doc/bison.texinfo (Introduction): Don't say "GLR grammar". + Problem reported by Akim Demaille. + +2006-05-29 Joel E. Denny + + * src/getargs.c (usage): Mention GLR not just LALR(1) in --help output. + +2006-05-26 Paul Eggert + + * data/yacc.c (yy_reduce_print): Omit trailing white space in + generated source code. Problem reported by Frans Englich in + . + +2006-05-22 Paul Eggert + + * 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 + + * 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 + + * 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 + . + * 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 + + * 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 + . + * 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 + + * NEWS: Version 2.2. + * configure.ac (AC_INIT): Likewise. + +2006-05-17 Joel E. Denny + + * 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 + . + (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 + + * 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 + . + * 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 + + * doc/bison.texinfo (C++ Bison Interface): Clarify the naming + scheme. + Reported by Steve Murphy. + +2006-05-14 Akim Demaille + + * 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 + + 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 + + * etc/bench.pm: Shorten bench names. + +2006-05-14 Akim Demaille + + * 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 + + * 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 + + * 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 + + * examples/extexi: Enforce the precedence of concatenation over + >>. + Reported by Tommy Nordgren. + +2006-05-11 Akim Demaille + + * data/lalr1.cc (yytranslate_): Rename token as t to avoid clashes + with the member "token". + Reported by Martin Nylin. + +2006-05-08 Paul Eggert + + * 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 + + * data/glr.cc: Remove dead code. + +2006-04-25 Paul Eggert + + * 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 + + * doc/bison.texinfo (Multiple start-symbols): New. + +2006-04-24 Akim Demaille + + * etc/README, etc/bench.pl: New. + +2006-04-03 Akim Demaille + + * 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 + + * doc/bison.texinfo (Decl Summary): Don't mention yylloc twice. + Problem reported by Bob Rossi. + +2006-03-13 Paul Eggert + + * 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 + + * 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 + + 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 + + * TODO: Remove dead items. + +2006-03-10 Akim Demaille + + * doc/FAQ: Remove, merged into... + * doc/bison.texinfo (FAQ): this. + * doc/Makefile.am (EXTRA_DIST): Adjust. + +2006-03-10 Akim Demaille + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 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 + , + reported by Guillaume Melquiond. + +2006-02-13 Paul Eggert + + * NEWS: Clarify symbols versus types in unused-value warnings. + + * configure.ac (AC_INIT): Bump version number. + +2006-02-13 Paul Eggert + + * 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 + + * m4/c-working.m4: New file. + * configure.ac (BISON_TEST_FOR_WORKING_C_COMPILER): Use it. + +2006-02-10 Paul Eggert + + * Makefile.maint: Merge from coreutils. + +2006-02-09 Paul Eggert + + 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 + + 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 + + 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 + + Various DJGGP specific issues in /djgpp + +2006-02-02 Paul Eggert + + More portability fixes for problems summarized by Nelson H. F. Beebe. + + * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that + '#include ' works and that you can apply ++ to iterators. + +2006-02-01 Paul Eggert + + Work around portability problems summarized by Nelson H. F. Beebe in + . + + * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check + that '#include ' 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 + . + + * 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 + + 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 + + * 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 + + * 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 . 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. + ("{"): Invoke grammar_midrule_action if the current + rule already has an action. + ("}"): 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 + + * 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 + + 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 + + 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 + + * 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 + + 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): 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 + + 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 ' 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 + + * tests/calc.at (_AT_DATA_CALC_Y): Initialize the whole initial + location, not just parts of it. + +2006-01-18 Paul Eggert + + * 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 + + * 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 + + * data/glr.c (yysplitStack): A little stylistic rewrite. + +2006-01-11 Paul Hilfinger + + * data/glr.c (yyaddDeferredAction): Flesh out the comment. + +2006-01-11 Joel E. Denny + + * 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 + + * tests/glr-regression.at: Update copyright year to 2006. + +2006-01-06 Joel E. Denny + + * 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 + + * 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 + + * tests/glr-regression.at: For consistency with my newer test cases, + don't thank myself. + +2006-01-05 Joel E. Denny + + * 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 + + * src/reader.c, src/symlist.h, src/symlist.c: s/mid_rule/midrule/. + +2006-01-04 Paul Eggert + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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. + +2005-12-29 Akim + + Let glr.cc catch up with symbol_value_print. + * data/glr.cc (b4_yysymprint_generate): Replace by... + (b4_yy_symbol_print_generate): this. + (yy_symbol_print, yy_symbol_value_print): Declare them. + +2005-12-28 Paul Eggert + + * src/location.h (boundary): Note that a line or column equal + to INT_MAX indicates an overflow. + * src/scan-gram.l: Include verify.h. Don't include get-errno.h. + (rule_length_overflow, increment_rule_length, add_column_width): + New functions. + ({id}, "\"", "'"): + ("}"): + Use increment_rule_length rather than incrementing it by hand. + (adjust_location, handle_syncline): Diagnose overflow. + (handle_action_dollar, handle_action_at): + Fix bug with monstrosities like $-2147483648. + Remove now-unnecessary checks. + (scan_integer): Verify assumptions and remove now-unnecessary checks. + (convert_ucn_to_byte): Verify assumptions. + (handle_syncline): New arg LOC. All callers changed. + Don't store through a value derived from char const * pointer. + + * src/reader.c (grammar_rule_check): Rewrite slightly to avoid + GCC warnings. + +2005-12-27 Paul Eggert + + * src/reader.c (grammar_midrule_action, grammar_symbol_append): + Remove unnecessary forward static decls. + +2005-12-27 Akim Demaille + + * src/reader.c (grammar_current_rule_check): Also check that $$ + is used. + Take the rule to check as argument, hence rename as... + (grammar_rule_check): this. + * src/reader.h, src/reader.c (grammar_rule_begin, grammar_rule_end): + Rename as... + (grammar_rule_begin, grammar_rule_end): these, for consistency. + (grammar_midrule_action, grammar_symbol_append): Now static. + * tests/torture.at (input): Don't rely on the default action + being always performed. + * tests/calc.at: "Set" $$ even when the action is "cut" with + YYERROR or other. + * tests/actions.at (Exotic Dollars): Instead of using unused + values, check that the warning is issued. + +2005-12-22 Paul Eggert + + * NEWS: Improve wording for unused-value warnings. + +2005-12-22 Akim Demaille + + * data/lalr1.cc, data/yacc.c, data/glr.c, data/c.m4 + (b4_yysymprint_generate): Rename as... + (b4_yy_symbol_print_generate): this. + Generate yy_symbol_print instead of yysymprint. + Generate also yy_symbol_value_print, and use it. + +2005-12-22 Akim Demaille + + * NEWS: Warn about unused values. + * src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add + a `used' member. + (symbol_list_n_get, symbol_list_n_used_set): New. + (symbol_list_n_type_name_get): Use symbol_list_n_get. + * src/scan-gram.l (handle_action_dollar): Flag used symbols. + * src/reader.c (grammar_current_rule_check): Check that values are + used. + * src/symtab.c (symbol_print): Accept 0. + * tests/existing.at: Remove the type information. + Empty the actions. + Remove useless actions (beware of mid-rule actions: perl -000 + -pi -e 's/\s*\{\}(?=[\n\s]*[|;])//g'). + * tests/actions.at (Exotic Dollars): Use unused values. + * tests/calc.at: Likewise. + * tests/glr-regression.at (No users destructors if stack 0 deleted): + Likewise. + + * src/gram.c (rule_useful_p, rule_never_reduced_p): Use + rule_useful_p. + +2005-12-21 Paul Eggert + + Undo 2005-12-01 tentative license wording change. The wording is + still being reviewed by the lawyers, and we don't want to wait for + them before publishing a test release. For now, revert to the + previous wording. + * NEWS: Undo 2005-12-01 change. + * data/glr.c: Revert to previous license wording. + * data/glr.cc: Likewise. + * data/lalr1.cc: Likewise. + * data/location.cc: Likewise. + * data/yacc.c: Likewise. + + * NEWS: Reword %destructor vs YYABORT etc. + * data/glr.c: Use American spacing, for consistency. + * data/glr.cc: Likewise. + * data/lalr1.cc: Likewise. + * data/yacc.c: Likewise. + * data/yacc.c: Reformat comments slightly. + * doc/bison.texinfo: Replace "non-" with "non" when that makes sense, + for consistency. Fix some spelling errors and reword recently-included + text slightly. + * tests/cxx-type.at: Cast results of malloc, for C++. + +2005-12-21 Joel E. Denny + + * tests/cxx-type.at: Construct a tree, count the parents of shared + nodes, and free each node once and only once. Previously, the memory + for semantic values was leaked instead. + +2005-12-21 Joel E. Denny + + * data/glr.c (struct yyGLRStack): If pure, add yyval and yyloc members. + (yylval, yylloc): If pure, #define to yystackp->yyval and + yystackp->yyloc similar to yychar and yynerrs. + (yyparse): If pure, remove local yylval and yylloc. Add local + yystackp to accommodate pure definitions of yylval and yylloc. + (b4_lex_param, b4_lyyerror_args, b4_lpure_args): If pure, change + yylvalp and yyllocp to &yylval and &yylloc. + (nerrs, char, lval, lloc): If pure, add #define's for b4_prefix[] + namespace. Previously, nerrs and char were missing, but lval and lloc + weren't necessary. + (yyprocessOneStack, yyreportSyntaxError, yyrecoverSyntaxError): Remove + yylvalp and yyllocp parameters since, if pure, these are now always + accessible through yystackp. If not pure, they are still accessible + globally. + * data/glr.c, data/yacc.c (YYLLOC_DEFAULT): Change `if (N)' to + `if (YYID (N))' to pacify lint. + +2005-12-21 Akim Demaille + + YYACCEPT, YYERROR, and YYABORT, as user actions, should not + destroy the RHS symbols of a rule. + * data/yacc.c (yylen): Initialize to 0. + Keep its value to the number of items to possibly shift. + In particular, a regular successful parse that ends on YYFINAL by + a (internal) YYACCEPT must not have yylen != 0. + (yyerrorlab, yyreturn): Pop the RHS. + Reorder a bit to emphasize the `shifting' bits of code. + (YYPOPSTACK): Now accept a number of items to pop. + * data/lalr1.cc: Likewise. + * data/glr.c: Formatting changes. + Use goto instead of fall through. + * doc/bison.texinfo (Destructor Decl): Complete. + +2005-12-20 Juan Manuel Guerrero + + * Makefile.am: DJGPP specific files added to EXTRA_DIST. + * djgpp/Makefile.maint: Fix PACKAGE variable computation. + * djgpp/config.bat: Replace every occurence of the file name + scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with + c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS. + * djgpp/config.sed: Replace every occurence of the file name + scan-gram-c.c with c-scan-gram.c. The same for scan-skel-c.c with + c-scan-skel.c to conform with the 8.3 file name restriction on MSDOS. + * djgpp/djunpack.bat: DJGPP specific file. + * djgpp/fnchange.lst: DJGPP specific file. + * djgpp/README.in: Add new information about how to unpack the bison + source on MSDOS and other systems which have 8.3 file name restrictions + using djunpack.bat and fnchange.lst. + +2005-12-12 Paul Eggert + + * bootstrap (build_cvs_prefix): Remove; unused. + (CVS_PREFIX): Adjust to yesterday's Savannah reorganization + when getting gnulib. + +2005-12-12 "Joel E. Denny" + + * data/glr.c: Reorder typedef declarations for structs to match order + of struct declarations. + Rename yystack everywhere to yystackp except in yyparse where it's not + a pointer. + (yyglrShift): Change parameter YYSTYPE yysval to YYSTYPE* yyvalp for + consistency. + (yyis_table_ninf): Change 0 to YYID (0) to pacify lint. + (yyreportSyntaxError): Add /*ARGSUSED*/ to pacify lint. + (yyparse): Change while (yytrue) to while ( YYID (yytrue)) to pacify + lint. + +2005-12-09 Paul Eggert + + * tests/sets.at (Accept): Fix typos in regular expression used to + sed out the final state number. + + Work around portability problem on Solaris 10: flex-generated + files include before , which messes up + because the latter defines __EXTENSIONS__. Address the problem + by creating two new little files that include first, + then include the flex-generated files. Rewrite everyone else + to include first, as well. + * lib/timevar.c: Always include "config.h". + * src/Makefile.am (bison_SOURCES): Replace scan-gram.l with + scan-gram-c.c, and scan-skel.l with scan-skel-c.c. + (EXTRA_bison_SOURCES): New macro. + * src/scan-gram-c.c, src/scan-skel-c.c: New files. + * src/system.h: Don't include config.h. + * src/LR0.c: Include first. + * src/assoc.c: Likewise. + * src/closure.c: Likewise. + * src/complain.c: Likewise. + * src/conflicts.c: Likewise. + * src/derives.c: Likewise. + * src/files.c: Likewise. + * src/getargs.c: Likewise. + * src/gram.c: Likewise. + * src/lalr.c: Likewise. + * src/location.c: Likewise. + * src/main.c: Likewise. + * src/muscle_tab.c: Likewise. + * src/nullable.c: Likewise. + * src/output.c: Likewise. + * src/parse-gram.y: Likewise. + * src/print.c: Likewise. + * src/print_graph.c: Likewise. + * src/reader.c: Likewise. + * src/reduce.c: Likewise. + * src/relation.c: Likewise. + * src/state.c: Likewise. + * src/symlist.c: Likewise. + * src/symtab.c: Likewise. + * src/tables.c: Likewise. + * src/uniqstr.c: Likewise. + * src/vcg.c: Likewise. + + * src/parse-gram.y: Fix minor problems uncovered by lint. + (current_lhs, current_lhs_location): Now static. + (current_assoc): Remove unused variable. + + Cleanups so that Bison-generated parsers have less lint. + * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): + Prepend /*ARGSUSED*/, for lint's sake. + * data/glr.c (YYUSE): Properly parenthesize, and use an alternate + definition if 'lint' is defined. + (YYID): New macro (or function, if lint). + All uses of /*CONSTCOND*/0 replaced by YYID(0). + * data/yacc.c: Likewise. + * data/glr.c (yyuserAction, yyuserMerge, yy_reduce_print): + (yyrecoverSyntaxError): Prepend /*ARGSUSED*/. + * data/glr.cc (YYLLOC_DEFAULT): Omit /*CONSTCOND*/ since this code + is C++ only. + * data/lalr1.cc (YYUSE): Just use a cast, since this code is C++ only. + * data/yacc.c (YYSTACK_FREE) [defined YYSTACK_ALLOC]: + Use YYID(0) rather than 0, for lint. + (yystrlen): Rewrite to avoid lint warning about ptrdiff_t overflow. + (yysyntax_error): Rewrite to avoid lint warnings about parenthesization. + +2005-12-07 Paul Eggert + + * tests/glr-regression.at + (Improper handling of embedded actions and dollar(-N) in GLR parsers): + Close memory leak reported by twlevo. + +2005-12-06 "Joel E. Denny" + + * data/glr.c (yyprocessOneStack, yyparse): Synchronize the shift for + all stacks. + (yyparse): Iterate another stack in order to call user destructors. + * tests/glr-regression.at (No users destructors if stack 0 deleted): + New test case. + (Duplicated user destructor for lookahead): This test now is expected + to succeed. + +2005-12-01 Paul Eggert + + * NEWS: Document the following change. + * data/yacc.c: Say "parser skeleton" rather than "file", since + it's no longer just a file. + * data/glr.c: Grant a special exception for C GLR parsers, that + reads like the already-existing exception for C LALR(1) parsers. + * data/glr.cc: Likewise. + * data/lalr1.cc: Likewise. + * data/location.cc: Likewise. + * data/yacc.c: Reword the "written by" statement to clarify that + it was the parser skeleton, not the entire output file. + * data/glr.c: Written by Paul Hilfinger. + * data/glr.cc: Written by Akim Demaille. + * data/lalr1.cc: Likewise. + +2005-11-18 Paul Eggert + + * data/yacc.c (yy_reduce_print, YY_REDUCE_PRINT): + Fix typos in previous change that broke 'make check'. + YY_REDUCE_PRINT cannot be a pseudo-varargs macro; that isn't + supported in C. + * tests/calc.at (_AT_CHECK_CALC,_AT_CHECK_CALC_ERROR): + Don't check NUM-STDERR-LINES, since the output format is fluctuating. + We can revert this once things settle down. + + * src/conflicts.c (conflicts_print): Don't print file name twice + when %expect fails because there were no conflicts. + * doc/bison.texinfo (Expect Decl): Tighten up wording in previous + change. + * tests/conflicts.at (%expect not enough, %expect too much): + (%expect with reduce conflicts): Adjust to new behavior. + +2005-11-18 Akim Demaille + + * src/conflicts.c (conflicts_print): Unsatisfied %expectation are + errors. + * NEWS: Document this. + * doc/bison.texinfo (Expect Decl): Likewise. + +2005-11-16 Akim Demaille + + Generalize the display of semantic values and locations in traces. + * data/glr.c (yy_reduce_print): Fix indices (again). + * data/c++.m4 (b4_rhs_value, b4_rhs_location): Don't expect + literal integers. + * data/lalr1.cc (yyreduce_print): Rename as... + (yy_reduce_print): this. + Display values and locations. + * data/yacc.c (yy_reduce_print): Likewise. + (YY_REDUCE_PRINT): Adjust to pass the required arguments. + (yysymprint): Move higher to be visible from yy_reduce_print). + (yyparse): Adjust. + * tests/calc.at: Adjust the expected length of the traces. + +2005-11-14 Akim Demaille + + * data/glr.c (yy_reduce_print): The loop was quite wrong: type are + from 1 to N, while values and location start at 0. + (b4_rhs_location, b4_rhs_value): Add parens around $1 and $2. + +2005-11-14 Akim Demaille + + * data/glr.c (yy_reduce_print): Fix the $ number. + +2005-11-14 Akim Demaille + + "Use" parse parameters. + * data/c.m4 (b4_parse_param_for, b4_parse_param_use): New. + * data/glr.c, data/glr.cc: Use them. + * data/glr.c (YYUSE): Have a C++ definition that supports + non-pointer types. + +2005-11-14 Akim Demaille + + * data/glr.c (yyexpandGLRStack): Declare only if defined. + +2005-11-14 Akim Demaille + + * data/glr.cc: New. + * data/m4sugar/m4sugar.m4 (m4_prepend): New. + +2005-11-12 Akim Demaille + + Let position and location be PODs. + * data/location.cc (position::initialize, location::initialize): New. + (position::position, location::location): Define only if + b4_location_constructors is defined. + * data/lalr1.cc (b4_location_constructors): Define it for backward + compatibility. + * doc/bison.texinfo (Initial Action Decl): Use initialize. + +2005-11-12 Akim Demaille + + * data/lalr1.cc: Move the body of the ctor and dtor into the + parser file (instead of the header). + Wrap the implementations in a "namespace yy". + +2005-11-12 Akim Demaille + + Have glr.c include its header file when created. + * data/glr.c (b4_shared_declarations): New. + Output them verbatim in the parser if !%defines, otherwise + output then in the header file, and include it instead. + +2005-11-11 Akim Demaille + + * data/glr.c: Comment changes. + +2005-11-11 Akim Demaille + + When yydebug, report semantic and location values for reductions. + * data/glr.c (yy_reduce_print): Report the semantic values and the + locations. + (YY_REDUCE_PRINT): Adjust. + (yyglrReduce): Use them. + (b4_rhs_value, b4_rhs_location): Remove m4_eval invocations. + * data/c.m4 (b4_yysymprint_generate): Specify the const arguments. + * tests/calc.at (_AT_CHECK_CALC_ERROR): Remove the reduction + traces. + +2005-11-10 Akim Demaille + + * data/glr.c (yynewGLRStackItem, YY_RESERVE_GLRSTACK): New. + (yyaddDeferredAction, yyglrShift, yyglrShiftDefer): Use them. + (yyexpandGLRStack, YYRELOC): Define only when YYSTACKEXPANDABLE. + +2005-11-09 Albert Chin-A-Young + + * m4/cxx.m4, examples/Makefile.am: Don't build + examples/calc++ if no C++ compiler is available. (trivial change) + +2005-11-09 Akim Demaille + + * src/scan-skel.l: Use a couple of asserts. + +2005-11-03 Akim Demaille + + In some (weird) cases, the final state number is incorrect. + Reported by Alexandre Duret-Lutz. + * src/LR0.c (state_list_append): Remove the computation of + final_state. + (save_reductions): Do it here. + (get_state): Alpha conversion. + (generate_states): Use a for loop. + * src/gram.h (item_number_is_rule_number) + (item_number_is_symbol_number): New. + * src/state.c: Use assert. + * src/system.h: Include assert.h. + * tests/sets.at (Accept): New. + +2005-10-30 Paul Hilfinger + + * data/glr.c (yyfill): Adjust comment. + (yyresolveAction): Initialize default location properly + for empty right-hand sides. + (yydoAction): Ditto. + Add comment explaining apparently dead code. + * tests/glr-regression.at + (Incorrectly initialized location for empty right-hand side in GLR): + New test. + +2005-10-30 Paul Eggert + + * bootstrap (cleanup_gnulib): New function. Use it to clean up + gnulib when interrupted. This fixes some race conditions and + works around some portability problems (one noted by Paul + Hilfinger). + +2005-10-22 Akim + + * Makefile.cfg: Adjust to config -> build-aux. + Reported by twledo. + +2005-10-21 Akim Demaille + + * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Pass + the %parse-params. + * data/glr.c (YY_SYMBOL_PRINT, yydestroyGLRState): Adjust. + * data/yacc.c (b4_Pure_if): Rename as... + (b4_yacc_pure_if): this. + (YY_SYMBOL_PRINT, yyparse): Adjust. + * doc/bison.texinfo: Formatting changes. + +2005-10-21 Akim Demaille + + Finish the transition config -> build-aux. + * configure.ac, Makefile.am: Use build-aux. + * config/prev-version, config/announce-gen, config/Makefile.am: + Move to... + * build-aux/prev-version, build-aux/announce-gen, + * build-aux/Makefile.am: here. + +2005-10-14 Akim Demaille + + * examples/calc++/test: Use set -x only when VERBOSE. + +2005-10-13 Paul Eggert + + * NEWS: Bison now warns if it finds a stray `$' or `@' in an action. + * src/scan-gram.l ([$@]): Implement this. + +2005-10-13 Akim Demaille + + * src/scan-skel.l: Output the base name parts of the parser and + header file names. + * tests/output.at (AT_CHECK_OUTPUT): Support subdirectories, and + additional checks. + Use this to exercise C++ outputs in subdirs. + Reported by Oleg Smolsky. + +2005-10-12 Paul Eggert + + * data/c.m4 (b4_c_function_def): Look at __C99_FUNC__, not at + __STDC_VERSION__, as IBM cc 7.0 doesn't define the latter either. + Problem reported by John P. Hartmann. + * data/yacc.c (YYMODERN_C): Likewise. Don't define if the user has + already defined it. + +2005-10-12 Akim Demaille + + * src/parse-gram.y (version_check): Exit 63 to please missing + (stands for "version mismatch). + * tests/input.at, doc/bison.texinfo: Adjust. + +2005-10-10 Paul Eggert + + Work around portability problems with Visual Age C compiler + (xlc and xlC_r) reported by John P. Hartmann. + * data/location.cc (initial_column, initial_line): Remove. + All uses replaced by 0 and 1. + * src/scan-gram.l (gram_wrap): Redefine to avoid bug in flex 2.5.31 + that xlc complains about. + * src/scan-skel.l (skel_wrap): Likewise. + * data/c.m4 (b4_c_function_def): Look at __STDC_VERSION__ as well + as __STDC__. + * data/yacc.c (YYMODERN_C): New macro, which also looks at + __STDC_VERSION__. Use it everywhere instead of looking at + __STDC__ and __cplusplus. + +2005-10-10 Akim Demaille + + * examples/calc++/test: Be quiet unless VERBOSE. + +2005-10-05 Paul Eggert + + * data/c.m4 (yydestruct, yysymprint): + Use YYUSE instead of casting to void. + * data/glr.c (YYUSE): New macro. + (yyuserMerge, yyreportAmbiguity, yyreportSyntaxError): + Use it instead of rolling our own. + (YYLLOC_DEFAULT, YYCHK, YYDPRINTF, YY_SYMBOL_PRINT, YY_REDUCE_PRINT): + (YYCHK1): + Use /*CONSTCOND*/ to suppress lint warnings. + * data/lalr1.cc (YYLLOC_DEFAULT, YY_SYMBOL_PRINT, YY_REDUCE_PRINT): + (YY_STACK_PRINT): Use 'false' not '0'. + (YYUSE): New macro. + (yysymprint_, yydestruct_): Use it instead of rolling our own. + * data/yacc.c (YYUSE): New macro. + (YYCOPY, YYSTACK_RELOCATE, YYBACKUP, YYLLOC_DEFAULT): + (YYDPRINTF, YY_SYMBOL_PRINT, YY_STACK_PRINT, YY_REDUCE_PRINT): + (yyerrorlab): Use /*CONSTCOND*/ to suppress lint warnings. + + + * data/m4sugar/m4sugar.m4 (_m4_map): New macro. + (m4_map, m4_map_sep): Use it. Handle the empty list correctly. + +2005-10-04 Paul Eggert + + Undo the parts of the unlocked-I/O change that substituted + putc or puts for printf. This might hurt performance a bit, + but some people prefer the printf style. + * data/c.m4 (yysymprint): Prefer printf to puts and putc. + * data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): Remove. + All uses replaced by YYFPRINTF and YYDPRINTF. + * data/yacc.c: Likewise. + * lib/bitset.c (bitset_print): Likewise. + * lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer printf to + putc and puts. + * lib/lbitset.c (debug_lbitset): Likewise. + * src/closure.c (print_firsts, print_fderives): Likewise. + * src/gram.c (grammar_dump): Likewise. + * src/lalr.c (look_ahead_tokens_print): Likewise. + * src/output.c (escaped_output): Likewise. + (user_actions_output): Break apart two printfs. + * src/parse-gram.y (%printer): Prefer printf to putc and puts. + * src/reduce.c (reduce_print): Likewise. + * src/state.c (state_rule_look_ahead_tokens_print): Likewise. + * src/system.h: Include unlocked-io.h rathe than stdio.h. + + * data/glr.c (yyuserMerge, yyreportAmbiguity, yyreportSyntaxError): + Use assignments rather than casts-to-void to suppress + unused-variable warnings. This pacifies 'lint'. + * data/lalr1.cc (yysymprint_, yydestruct_): Use a call to suppress + unused-variable warnings. + +2005-10-03 Juan Manuel Guerrero + + * Makefile.am: DJGPP specific files added to EXTRA_DIST. + +2005-10-02 Paul Eggert + + Use unlocked I/O for a minor performance improvement on hosts like + GNU/Linux and Solaris that support unlocked I/O. The basic idea + is to use the gnlib unlocked-io module, and to prefer putc and + puts to printf when either will work (since the latter doesn't + come in an unlocked flavor). + * bootstrap (gnulib_modules): Add unlocked-io. + * data/c.m4 (yysymprint): Prefer puts and putc to printf. + * data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): New macros. + Prefer them to YYFPRINTF and YYDPRINTF if either will do, + and similarly for puts and putc and printf. + * data/yacc.c: Likewise. + * lib/bitset.c (bitset_print): Likewise. + * lib/bitset.h [USE_UNLOCKED_IO]: Include unlocked-io.h. + * lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer putc and puts + to printf. + * lib/lbitset.c (debug_lbitset): Likewise. + * src/closure.c (print_firsts, print_fderives): Likewise. + * src/gram.c (grammar_dump): Likewise. + * src/lalr.c (look_ahead_tokens_print): Likewise. + * src/output.c (escaped_output): Likewise. + (user_actions_output): Coalesce two printfs. + * src/parse-gram.y (%printer): Prefer putc and puts to printf. + * src/reduce.c (reduce_print): Likewise. + * src/state.c (state_rule_look_ahead_tokens_print): Likewise. + * src/system.h: Include unlocked-io.h rather than stdio.h. + + * data/lalr1.cc: Don't put an unmatched ' in a dnl comment, as + this confuses xgettext. + +2005-10-02 Akim Demaille + + * bootstrap (gnulib_modules): Add strverscmp. + * lib/.cvsignore: Add strverscmp.c, strverscmp.h. + * m4/.cvsignore: Add strverscmp.m4. + * src/parse-gram.y (%require): New token, new rule. + (version_check): New. + * src/scan-gram.l (%require): Adjust. + * tests/input.at (AT_REQUIRE): New. + Use it. + * doc/bison.texinfo (Require Decl): New. + (Calc++ Parser): Use %require. + +2005-10-02 Akim Demaille + + * data/location.cc: New. + +2005-10-02 Paul Eggert , + Akim Demaille + + Make sure -odir/foo.cc creates dir/location.hh etc. + * src/files.h (spec_outfile, parser_file_name, spec_name_prefix) + (spec_file_prefix, spec_verbose_file, spec_graph_file) + (spec_defines_file): Now const. + (dir_prefix): New. + (short_base_name): Remove. + * src/files.c: Adjust. + (dirname.h): Include. + (base_name): Don't prototype it. + (finput): Remove, duplicates gram_in. + (full_base_name, short_base_name): Replace by... + (all_but_ext, all_but_tab_ext): these. + (compute_base_names): Rename as... + (compute_file_name_parts): this. + Update to compute the new variables, including dir_prefix. + Adjust dependencies. + * src/output.c (prepare): Output them. + * src/reader.c: Adjust to use gram_in, not finput. + * src/scan-skel.l (@dir_prefix@): New. + +2005-10-02 Juan Manuel Guerrero + + * lib/subpipe.c: New function end_of_output_subpipe() added + to allow support for non-posix systems. This is a no-op function + for posix systems. + + * lib/subpipe.h: New function end_of_output_subpipe() added + to allow support for non-posix systems. This is a no-op function + for posix systems. + + * src/output.c (output_skeleton): Use end_of_output_subpipe() to + handle the lack of pipe/fork functionality on non-posix systems. + + * djgpp/Makefile.maint: DJGPP specific file. + + * djgpp/README.in: DJGPP specific file. + + * djgpp/config.bat: DJGPP specific configuration file. + + * djgpp/config.sed: DJGPP specific configuration file. + + * djgpp/config.site: DJGPP specific configuration file. + + * djgpp/config_h.sed: DJGPP specific configuration file. + + * djgpp/subpipe.c: DJGPP specific replacement file for lib/subpipe.c. + + * djgpp/subpipe.h: DJGPP specific replacement file for lib/subpipe.h. + +2005-10-02 Akim Demaille + + * data/location.cc: New, extract from... + * data/lalr1.cc: here. + (location.hh): Include it after the user prologue, in case the + filename type is defined by the user. + Forward declation location and position before the pre-prologue. + (yyresult_): Rename as... + (yyresult): this, it's a local variable, not an attribute. + * data/Makefile.am (dist_pkgdata_DATA): Adjust. + +2005-10-01 Akim Demaille + + * examples/extexi: Restore the #line generation. + +2005-09-30 Akim Demaille , + Alexandre Duret-Lutz + + Move the token type and YYSTYPE in the parser class. + * data/lalr1.cc (stack.hh, location.hh): Include earlier. + (parser::token): New, from the moved free definition of tokens. + (parser::semantic_value): Now a full definition instead of an + indirection to YYSTYPE. + (b4_post_prologue): No longer included in the header file, but + in the implementation file. + * doc/bison.texi (C+ Language Interface): Update. + * src/parse-gram.y: Support unary %define. + * tests/actions.at: Define global_tokens_and_yystype for backward + compatibility until we update the tests. + * tests/calc.at: Idem. + (first_line, first_column, last_line, last_column): Define for lalr1.cc + to simplify the code. + +2005-09-29 Paul Eggert + + Port to SunOS 4.1.4, which lacks strtoul and strerror. + Ah, the good old days! Problem reported by Peter Klein. + * bootstrap (gnulib_modules): Add strerror, strtoul. + * lib/.cvsignore: Add strerror.c, strtol.c, strtoul.c + * m4/.cvsignore: Add strerror.m4, strtol.m4, strtoul.m4. + +2005-09-29 Akim Demaille + + * data/c.m4 (b4_error_verbose_if): New. + * data/lalr1.cc: Use it. + (YYERROR_VERBOSE_IF): Remove. + (yyn_, yylen_, yystate_, yynerrs_, yyerrstatus_): Remove as + parser members, replaced by... + (yyn, yylen, yystate, yynerss, yyerrstatus): these parser::parse + local variables. + (yysyntax_error_): Takes the state number as argument. + (yyreduce_print_): Use the argument yyrule, not the former + attribute yyn_. + +2005-09-26 Paul Eggert + + * bootstrap (gnulib_modules): Add verify. + * lib/.cvsignore: Add verify.h. + * src/getargs.c: Use ARGMATCH_VERIFY rather than verify. + * src/system.h (verify): Remove. + Include verify.h instead. + * src/tables.c (tables_generate): Use new API for 'verify'. + +2005-09-21 Paul Eggert + + * tests/local.at (_AT_BISON_OPTION_PUSHDEFS): Do not use + local variables whose names begin with 'yy'. + * tests/calc.at (_AT_DATA_CALC_Y): Likewise. + Trivial changes from Joel E. Denny. + + * bootstrap (gnulib_modules): Remove alloca. Bison doesn't need + it itself. + * src/main.c (main) [C_ALLOCA]: Don't flush alloca'ed memory; we + don't use alloca any more. + + * data/yacc.c [YYSTACK_USE_ALLOCA && !defined __GNUC__ && ! defined + __BUILTIN_VA_ARG_INCR && ! defined _AIX && ! defined _MSC_VER && + defined _ALLOCA_H]: Don't include ; not needed in this case. + * tests/torture.at (Exploding the Stack Size with Alloca): Adjust + to match yacc.c, to test more hosts. + +2005-09-20 Paul Eggert + + * data/yacc.c (YYSIZE_T): Reindent to make it clearer. This + doesn't affect behavior. + (YYSTACK_ALLOC) [YYSTACK_USE_ALLOCA]: Improve support for + Solaris, AIX, MSC. + (_STDLIB_H): Renamed from YYINCLUDED_STDLIB_H. All uses changed. + This works a bit better with glibc, if user code has already included + stdlib.h. + * doc/bison.texinfo (Bison Parser): Document that users can't + arbitrarily use malloc and free for other purposes. Document + that and might be included. + (Table of Symbols): Under YYSTACK_USE_ALLOCA, Don't claim that the + user must declare alloca. + + * HACKING (release): Forwarn the Translation Project about + stable releses. + +2005-09-20 Akim Demaille + + * data/glr.c: Use b4_token_enums, not b4_token_enums_defines. + +2005-09-19 Paul Eggert + + * data/yacc.c (YYSIZE_MAXIMUM): New macro. + (YYSTACK_ALLOC_MAXIMUM): Use it. + (yysyntax_error): New function. + (yyparse) [YYERROR_VERBOSE]: Don't leak memory indefinitely if + multiple syntax errors are reported, and alloca is being used. + Instead, reallocate buffers twice as big each time, so that + we waste at most half the allocated memory. Start with a small + (128-byte) buffer that will suffice in most cases anyway. + Use yysyntax_error to do most of the work. + + * doc/bison.texinfo (Error Reporting, Table of Symbols): + yynerrs is the number of errors reported, not the number of + errors encountered. + + * tests/glr-regression.at (Duplicated user destructor for lookahead): + Mark it as expected to fail. + Cast result of malloc; problem reported by twlevo@xs4all.nl. + * tests/actions.at, tests/calc.at, tests/glr-regression.at: + Don't start user-code symbols with "yy", to avoid name space problems. + +2005-09-19 Akim Demaille + + Remove the traits, failed experiment. + It never proved useful, and anyway because of the current + definition, it was not possible to have several specialization of + this traits, making it useless. + * data/lalr1.cc (yy:traits): Remove. + Inline its definitions in the parser class. + +2005-09-19 Akim Demaille + + * tests/atlocal.in (LIBS): Pass INTLLIBS to address failures on at + least Mac OSX with a /usr/local install of gettext. + +2005-09-19 Akim Demaille + + * data/lalr1.cc (yyparse): Rename yylooka and yyilooka as yychar + and yytoken for similarity with the other skeletons. + +2005-09-19 Akim Demaille + + * NEWS, configure.ac: update version number to 2.1a. + +2005-09-16 Paul Eggert + + * NEWS: Version 2.1. + + * NEWS: Remove notice of yytname change, since it was never in an + official release. + * data/glr.c (yydestroyGLRState): Rename local var to avoid shadowing + diagnostic. + * src/output.c (prepare): Likewise. + * data/lalr1.cc (YYERROR_VERBOSE_IF): New macro. + (yysyntax_error_): Use it to avoid GCC warning when YYERROR_VERBOSE + is not defined. This is an awful hack, but it's enough for now. + All callers changed. + * tests/glr-regression-at (make_value): Args are const pointers now, + to avoid GCC warning. + (Duplicated user destructor for lookahead): New test. Currently + skipped. It fails on my host but I'm not sure it'll always fail. + +2005-09-16 Akim Demaille + + * src/symtab.h (struct symbol): Declare the printer and destructor + as const, to avoid accidental calls to free. + (symbol_destructor_set, symbol_printer_set): Adjust. + * src/symtab.c: Adjust. + +2005-09-16 Akim Demaille + + * data/c.m4 (b4_token_enums): New. + (b4_token_defines): Rename as... + (b4_token_enums_defines): this. + (b4_token_defines): New, output only the #defines. + * data/yacc.c, data/glr.c: Adjust. + * data/lalr1.cc: Use b4_token_enums instead of b4_token_enums_defines. + * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Define + as default values. + +2005-09-16 Akim Demaille + + * data/lalr1.cc (yylex_): Remove, inline its code. + (yyreport_syntax_error_): Remove, replaced by... + (yysyntax_error_): this which returns a string and leaves to the + caller the call to the users' error function. + (yylooka_, yyilooka_, yylval, yylloc, yyerror_range_, yyval, yyloc): + Move from members of the parser object... + (yylooka, yyilooka, yylval, yylloc, yyerror_range, yyval, yyloc): + to local variables of the parse function. + +2005-09-16 Akim Demaille + + * doc/bison.texinfo (Calc++ Parser): Don't promote defining YYEOF + since it's in Bison's name space. + +2005-09-15 Paul Eggert + + * data/glr.c (yyresolveValue): Add default case to pacify + gcc -Wswitch-default. Problem reported by twlevo@xs4all.nl. + + * NEWS: Document when yyparse started to return 2. + * doc/bison.texinfo (Parser Function): Document when yyparse + returns 2. + + * data/lalr1.cc: Revert part of previous change, as it's incompatible. + (b4_filename_type): Renamed back from b4_file_name_type. All uses + changed. + (class position): file_name -> filename (reverting). All uses changed. + +2005-09-14 Paul Eggert + + * examples/calc++/Makefile.am ($(calc_sources_generated)): Don't + do anything if $@ exists. This reverts part of the 2005-07-07 + patch. + +2005-09-11 Paul Eggert + + * Makefile.am (EXTRA_DIST): Do not distribute REFERENCES; it + contains obsolete information and isn't worth distributing as a + separate file anyway. + * data/glr.c [defined YYSETJMP]: Don't include . + (YYJMP_BUF, YYSETJMP, YYLONGJMP) [!defined YYSETJMP]: New macros. + All uses of jmp_buf, setjmp, longjmp changed to use these instead. + (yyparse): Abort if user code uses longjmp to throw an unexpected + value. + +2005-09-09 Paul Eggert + + * data/c.m4 (b4_identification): Define YYBISON_VERSION. + Suggested by twlevo@xs4all.nl. + + * data/glr.c (YYCHK1): Do not assume YYE is in range. + This avoids a diagnostic from gcc -Wswitch-enum. + Problem reported by twlevo@xs4all.nl. + + * doc/bison.texinfo: Don't use "filename", as per GNU coding + standards. Use "file name" or "file" or "name", depending on + the context. + (Invocation): The output of "bison hack/foo.y" goes to foo.tab.c, + not to hack/foo.tab.c. + (Calc++ Top Level): 2nd arg of main is not const. + * data/glr.c: b4_filename -> b4_file_name. + * data/lalr1.cc: Likewise. Also, b4_filename_type -> b4_file_name_type. + All uses changed. + (class position): filename -> file_name. All uses changed. + * data/yacc.c: b4_filename -> b4_file_name. + * lib/bitset.h: filename -> file_name in local vars. + * lib/bitset_stats.c: Likewise. + * src/files.c: Likewise. + * src/scan-skel.l ("@output ".*\n): Likewise. + * src/files.c (file_name_split): Renamed from filename_split. + * src/muscle_tab.c (muscle_init): Output b4_file_name, not b4_filename. + +2005-09-08 Paul Eggert + + * lib/.cvsignore: Add pipe-safer.c, stdio--.h, unistd--.h, + to accommodate latest gnulib. + + * tests/glr-regression.at (Duplicate representation of merged trees): + Add casts to pacify g++. Problem reported by twlevo@xs4all.nl. + + * bootstrap: Add comment as to why the AM_LANGINFO_CODESET hack is + needed. + +2005-08-26 Paul Eggert + + * data/glr.c (yydestroyGLRState): Renamed from yydestroyStackItem. + All uses changed. Invoke user destructor after an error during a + split parse (trivial change from Joel E. Denny). + + * tests/glr-regression.at + (User destructor after an error during a split parse): New test case. + Problem reported by Joel E. Denny in: + http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html + +2005-08-25 Paul Eggert + + * README-cvs: Give URLs for recommended tools. + Mention Gzip version problem, and bootstrapping issues. + Remove troubleshooting section, as it's somewhat obsolete. + + * bootstrap (no_cache): New var, to accommodate different wget + variants. Use it instead of '-C off'. Problem reported by + twlevo@xs4all.nl. + + * data/glr.c (yydestroyStackItem): New function. + (yyrecoverSyntaxError, yyreturn): Use it to improve quality of + debugging information. Problem reported by Joel E. Denny. + +2005-08-25 Akim Demaille + + * tests/local.at (AT_COMPILE_CXX): Pass $LINKS too. + +2005-08-24 Paul Eggert + + * data/glr.c (yyrecoverSyntaxError, yyreturn): + Don't invoke destructor on unresolved entries. + * tests/glr-regression.at + (User destructor for unresolved GLR semantic value): New test case. + Problem reported by Joel E. Denny in: + http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html + +2005-08-21 Paul Eggert + + * lib/.cvsignore: Remove realloc.c, strncasecmp.c, xstrdup.c. + Add strnlen.c. + * m4/.cvsignore: Remove codeset.m4, gettext.m4, lib-ld.m4, + lib-prefix.m4, po.m4. + + * data/glr.c (yyreturn): Use "Cleanup:" rather than "Error:" + in yydestruct diagnostic, since it might not be an error. + Problem reported by Joel Denny near end of + . + * data/lalr1.cc (yyerturn): Likewise. + * data/yacc.c (yyreturn): Likewise. + * tests/calc.at (_AT_CHECK_CALC_ERROR): Adjust to the above change. + + * src/files.c: Remove obsolete FIXME comment. + + * data/glr.c (YY_SYMBOL_PRINT): Append a newline, for consistency + with the other templates, and to fix bogus run-on messages such + as the one reported at the end of + . + All callers changed to avoid the newline. + (yyprocessOneStack): Output two lines rather than one, to accommodate + the above change. This changes the debug output format slightly. + + * data/glr.c (yyresolveValue): Fix redundant parse tree problem + reported by Joel E. Denny in + + (trivial change). + * tests/glr-regression.at (Duplicate representation of merged trees): + New test, from Joel E. Denny in: + . + * THANKS: Add Joel E. Denny. + + * configure.ac (AC_INIT): Bump to 2.0c. + +2005-07-24 Paul Eggert + + * NEWS: Version 2.0b. + + * Makefile.am (SUBDIRS): Put examples before tests, so that + "make check" doesn't finish with "All 1 tests passed". + + * tests/regression.at (Token definitions): Don't rely on + AT_PARSER_CHECK for data that contains backslashes. It currently + uses 'echo', and 'echo' isn't portable if its argument contains + backslashes. Problem found on OpenBSD 3.4. Also, do not assume + that the byte '\0xff' is not printable in the C locale; it is, + under OpenBSD 3.4 (!). Luckily, '\0x80' through '\0x9e' are + not printable, so use '\0x81' to test. + + * data/glr.c (YYOPTIONAL_LOC): Define even if it's not a recent + version of GCC, since the macro is used with non-GCC compilers. + + Fix core dump reported by Pablo De Napoli in + . + * tests/regression.at (Invalid inputs with {}): New test. + * src/parse-gram.y (token_name): Translate type before using + it as an index. + + * data/glr.c (ATTRIBUTE_UNUSED): Remove, since it infringes on + the user's name space. All uses changed to __attribute__ + ((__unused__)). + (yyFail, yyMemoryExhausted, yyreportAmbiguity): + Add __attribute__ ((__noreturn__)). + + * etc/clcommit: Remove. We weren't using it, and it failed + "make maintainer-distcheck". + * Makefile.maint: Merge from coreutils. + (CVS_LIST, CVS_LIST_EXCEPT): New macros. + (syntax-check-rules): Change list of rules as described below. + (sc_cast_of_alloca_return_value, sc_dd_max_sym_length): + (sc_file_system, sc_obsolete_symbols, sc_prohibit_atoi_atof): + (sc_prohibit_jm_in_m4, sc_root_tests, sc_tight_scope): + (sc_trailing_space): New rules. + (sc_xalloc_h_in_src): Remove. + (sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value): + (sc_space_tab, sc_error_exit_success, sc_changelog): + (sc_system_h_headers, sc_sun_os_names, sc_unmarked_diagnostics): + (makefile-check, po-check, author_mark_check): + (makefile_path_separator_check, copyright-check): + Use grep -n, to make it easier to find violations. + Use CVS_LIST and CVS_LIST_EXCEPT. + (header_regexp, h_re): Remove. + (dd_c): New macro. + (sc_dd_max_sym_length, .re-list, news-date-check): New rules. + (my-distcheck): Use more-modern GCC flags. + (signatures, %.asc): Remove. + (rel-files, announcement): Remove signatures. + Restore old updating code, even though we don't use it, so + that we're the same as coreutils. + (alpha, beta, major): Depend on news-date-check. + Make the upload commands. + + * data/c.m4, data/lalr1.cc, data/yacc.c: Normalize white space. + * lib/abitset.h, lib/bbitset.h, lib/bitset.h: Likewise. + * lib/bitset_stats.c, lib/ebitset.h, lib/lbitset.c: Likewise. + * lib/libitset.h, lib/timevar.c, lib/vbitset.h: Likewise. + * src/Makefile.am, src/gram.c, src/muscle_tab.h: Likewise. + * src/parse-gram.y, src/system.h, src/tables.c, src/vcg.c: Likewise. + * src/vcg_defaults.h, tests/cxx-type.at, tests/existing.at: Likewise. + * tests/sets.at: Likewise. + + * data/m4sugar/m4sugar.m4: Sync from Autoconf, except that + we comment out the Autoconf version number. + * doc/bison.texinfo (Calc++ Scanner): Don't use atoi, as + it's error-prone and "make maintainer-distcheck" rejects it. + + * lib/subpipe.c: Include without checking for HAVE_FCNTL_H. + Indent calls to "error" to pacify "make maintainer-distcheck", + when the calls are not intended to be translated. + * m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't check for fcntl.h. + + * src/Makefile.am (DEFS): Use +=, to pacify + "make maintainer-distcheck". + (bison_SOURCES): Add scan-skel.h. + (sc_tight_scope): New rule, from coreutils. + + * src/files.c (src_extension, header_extension): + Now static, not extern. + * src/getargs.c (short_options): Likewise. + * src/muscle_tab.c (muscle_table): Likewise. + * src/parse-gram.y (current_class, current_type, current_prec): + Likewise. + * src/reader.c (grammar_end, previous_rule_end): Likewise. + * src/getargs.h: Redo comments to pacify "make maintainer-distcheck". + * src/main.c (main): Cast bindtextdomain and textdomain calls to + void, to avoid warning when NLS is disabled. + * src/output.c: Include scan-skel.h. + (scan_skel): Remove decl, since scan-skel.h does this. + (output_skeleton): + Indent calls to "error" to pacify "make maintainer-distcheck". + * src/print_graph.c: Don't include , as system.h does this. + * src/reader.h (gram_end, gram_lineno): New decls to pacify + "make maintainer-distcheck". + * src/scan-skel.l (skel_lex, 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, scan_skel): Move these decls to... + * src/scan-skel.h: New file. + * src/uniqstr.c (uniqstr_assert): + Indent calls to "error" to pacify "make maintainer-distcheck". + + * tests/Makefile.am ($(srcdir)/package.m4): Use $(VAR), + not @VAR@. + + * tests/torture.at: Revamp to avoid misuse of atoi that + "make maintainer-distcheck" complained about. + + * examples/extexi (message): Don't print a message more than once, + and omit line-number decoration that makes Emacs compile think + that informative messages are worth worrying about. + +2005-07-22 Paul Eggert + + * configure.ac: Update version number. + + * Makefile.am (SUBDIRS): Add examples; somehow this got removed + accidentally. + * examples/calc++/calc++-parser.yy: Remove from CVS, as it's + autogenerated by the maintainer. + * examples/calc++/.cvsignore: Add *.yy. + + * lib/bitset.c (bitset_alloc): Don't cast xcalloc result. + * lib/bitset_stats.c (bitset_stats_init): Likewise. + * lib/bitsetv.c (bitsetv_alloc): Likewise. + + * po/POTFILES.in: Add lib/xalloc-die.c; remove lib/xmalloc.c. + + * src/relation.c (relation_transpose): Rewrite to avoid bogus complaint + from maintainer-distcheck about casting the argument of 'free'. + + * NEWS: Mention recent yytname changes. + * THANKS: Add Anthony Heading, twlevo@xs4all.nl. + + * bootstrap: For translations that have not yet been upgraded to + the new runtime-po domain, prime the pump by extracting the + relevant strings from the obsolete translations. This code can be + removed once the bison-runtime domain has been translated by each + team. + + * src/scan-gram.l (.): Don't double-quote token names, + now that token names are already quoted. + + Fix problem reported by Anthony Heading. + * data/glr.c (YYTOKEN_TABLE): New macro. + (yytname): Define if YYTOKEN_TABLE. + * data/yacc.c (YYTOKEN_TABLE, yytname): Likewise. + * data/lalr1.cc (YYTOKEN_TABLE, yytname_): Likewise. + (YYERROR_VERBOSE): Define the same way the other skeletons do. + * src/output.c (prepare_symbols): Output token_table_flag. + +2005-07-21 Paul Eggert + + * data/glr.c (yyinitGLRStack, yyreturn): Don't call malloc + again if the first call fails. + + * data/glr.c (yytnamerr): New function. + (yyreportSyntaxError): Use it to dequote most string literals. + * data/lalr1.c (yytname_): Renamed from yyname_, for compatibility + with other skeletons. All uses changed. + (yytnameerr_): New function. + (yyreport_syntax_error): Use it to dequote most string literals. + * data/yacc.c (yytnamerr): New function. + (yyerrlab): Use it to decode most string literals. + * doc/bison.texinfo (Decl Summary, Calling Convention): + Clarify quoting convention of yytname. + * src/output.c (prepare_symbols): Quote all names. This undoes + the 2005-04-17 change, which is now accomplished (mostly) via + changes in the parsers as described above. + * tests/regression.at (Token definitions, Web2c Actions): + Undo most 2005-04-17 change here, too. + +2005-07-20 Paul Eggert + + Fix more problems reported by twlevo@xs4all.nl. + * tests/cxx-type.at: Don't pipe output of ./types through sed to + remove trailing spaces. This loses the exit status of ./types, + and isn't needed since ./types shouldn't be emitting trailing + spaces. + * data/glr.c (yyreturn): Don't pop stack if yyinitStateSet failed, + as the stack isn't valid in that case. + + * 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): + Add declarations to pacify "gcc -Wmissing-prototypes" when flex 2.5.31 + is used. + * src/scan-skel.l (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): + Likewise. + + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Work even with + overly-picky compilers that reject 'char *foo = "bar";'. + + * src/symtab.c (SYMBOL_ATTR_PRINT, symbol_print): Direct output + to FILE * parameter, not to stderr. This fixes a typo introduced + in the 2005-07-12 change. + + * lib/subpipe.c (create_subpipe): Rewrite slightly to avoid + warnings from GCC 4. + + * data/glr.c (yyexpandGLRStack, yyaddDeferredAction, yyexpandGLRStack): + (yyglrShiftDefer, yysplitStack): + Remove unused parameters b4_pure_formals. All uses changed. + (yyglrShift): Remove unused parameters b4_user_formals. + All uses changed. + (yyglrReduce): Removed unused parameter yylocp. All uses changed. + +2005-07-18 Paul Eggert + + Destructor cleanups and regularization among the three skeletons. + * NEWS: Document the behavior changes. + * data/glr.c (yyrecoverSyntaxError): Don't bother to pop the + stack before failing, as the cleanup code will do it for us now. + * data/lalr1.cc (yyerrlab): Likewise. + * data/glr.c (yyparse): Pop everything off the stack before + freeing it, so that destructors get called properly. + * data/lalr1.cc (yyreturn): Likewise. + * data/yacc.c (yyreturn): Pop and destroy the start symbol, too. + This is more consistent. + * doc/bison.texinfo (Destructor Decl): Mention more reasons + why destructors might be called. 1.875 -> 2.1. + (Destructor Decl, Decl Summary, Table of Symbols): + Some English-language cleanups for %destructor. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): + Add output line for destructor of start symbol. + * tests/calc.at (AT_CHECK_CALC): Add one to line counts, + because of that same extra output line. + + * NEWS: Document minor wording changes in diagnostics of + Bison-generated parsers. + * data/glr.c (yyMemoryExhausted): Renamed from yyStackOverflow. + Remove unused formals. All uses changed. + (yyreportAmbiguity): "ambiguity detected" -> "syntax is ambiguous". + (yyparse): Rename yyoverflowlab to yyexhaustedlab. + * data/yacc.c (yyparse): "parser stack overflow" -> "memory exhausted". + Rename yyoverflowab to yyexhaustedlab. + When memory exhaustion occurs during syntax-error reporting, + report it separately rather than in a single diagnostic; this + eases translation. + * doc/bison.texinfo (Memory Management): Renamed from Stack Overflow. + (Memory Exhausted): Renamed from Parser Stack Overflow. + Revamp wording slightly to prefer "memory exhaustion". + * tests/actions.at: "parser stack overflow" -> "memory exhausted". + + * data/c.m4 (b4_yysymprint_generate): Use YYFPRINTF, not fprintf. + + Add i18n support to the GLR skeleton. Partially fix the C++ + skeleton; a C++ expert needs to finish this. Remove debugging + msgids; there's little point to having them translated, since they + can be understood only by someone who can read the + (English-language) source code. + + Generate runtime-po/bison-runtime.pot automatically, so that we + don't have to worry about garbage getting in that file. We'll + make sure after the next official release that old msgids don't + get lost. See + . + + * runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove. + Now auto-generated. + * PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet. + Fix typos in explanations of the runtime file. + * bootstrap: Change gettext keyword from YYI18N to YY_. + Use standard Makefile.in.in in runtime-po, since we'll arrange + for backward-compatible bison-runtime.po files in a different way. + * data/glr.c (YY_): New macro, from yacc.c. + (yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse): + Translate messages intended for users. + (yyreportSyntaxError): Change "virtual memory" to "memory" to match + the wording in the other skeletons. We don't know that the memory + is virtual. + * data/lalr1.cc (YY_): Renamed from _. All uses changed. + Use same method that yacc.c uses. + Don't translate debugging messages. + (yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff; + it doesn't work (yet), and requires C++ expertise to fix. + * data/yacc.c (YY_): Renamed from YY18N. All uses changed. + Move defn to a more logical place, to be consistent with other + skeletons. + Don't translate debugging messages. + Don't assume line numbers fit in unsigned int; use unsigned long fmts. + * doc/bison.texinfo: Mention . Change glibc cross reference + to gettext cross reference. Add indexing terms. Mention YYENABLE_NLS. + * runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc. + + Fix yyerror / yylex test glitches noted by twlevo@xs4all.nl. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Have yyerror return + void, not int. + * tests/glr-regression.at (Badly Collapsed GLR States): + Likewise. + (Improper handling of embedded actions and dollar(-N) in GLR parsers): + yylex should return 0 at EOF rather than aborting. + + Improve tests for stack overflow in GLR parser. + Problem reported by twlevo@xs4all.nl. + * data/glr.c (struct yyGLRStack): Remove yyerrflag member. + All uses removed. + (yyStackOverflow): Just longjmp, but with value 2 so that caller + can handle the problem. + (YYCHK1): Use goto (a la yacc.c) rather than setting a flag. + (yyparse): New local variable yyresult to record the result. + Use result of setjmp to set it, rather than storing itinto + struct. + (yyDone): Remove label. + (yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels, + to mimic yacc.c. Do not discard lookahead if it's EOF (possible + if YYABORT is used). + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with + yyparse status; put status > 1 into diagnostic. + Check that status==2 works. + * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at: + Use exit status 3 for failure to open (which shouldn't happen). + +2005-07-17 Paul Eggert + + * tests/conflicts.at (%nonassoc and eof): Don't exit with status + 1 on syntax error; just let yyparse do its thing. + * tests/glr-regression.at (Badly Collapsed GLR States): Likewise. + * tests/torture.at (AT_DATA_STACK_TORTURE): Likewise. + (Exploding the Stack Size with Alloca): + (Exploding the Stack Size with Malloc): + Expect exit status 2, not 1, since the parser is supposed to blow + its stack. Problem reported by twlevo@xs4all.nl. + + * data/glr.c (yyparse): Don't assume that the initial calls + to YYMALLOC succeed; in that case, yyparse incorrectly returned 0. + Print a stack-overflow message and fail instead. + Initialize the line-number information before creating the stack, + so that the stack-overflow message can report line zero safely. + +2005-07-14 Paul Eggert + + Fix problems reported by twlevo@xs4all.nl. + * data/glr.c (YYSTACKEXPANDABLE): Don't define if already defined. + (yyuserMerge): Provide a default case if b4_mergers is empty. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Define YYSTACKEXPANDABLE. + * tests/glr-regression.at + (Improper handling of embedded actions and dollar(-N) in GLR parsers): + Add casts to pacify C++ compilers. + * tests/glr-regression.at (Improper merging of GLR delayed action + sets): Declare yylex before using it. + * tests/Makefile.am (maintainer-check-g++): Fix a stray + $(GXX) that escaped the renaming of GXX to CXX. Remove bogus + test for valgrind; valgrind is independent of g++. + (maintainer-check-posix): Add _POSIX2_VERSION=200112, to check + for compatibility with POSIX 1003.1-2001 (if running coreutils). + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Port to stricter C++. + Use a destructor, so that we can expand the stack. Change + YYSTYPE to char * so that we can free it. Cast result of malloc. + +2005-07-13 Paul Hilfinger + + * data/glr.c (yyuserAction): Fix uninitialized variable that caused + a valgrind failure. Problem reported by twlevo@xs4all.nl. + +2005-07-13 Paul Eggert + + * PACKAGING: New file, suggested by Bruno Haible and taken from + similar wording in gettext's PACKAGING file. + * NEWS: Mention PACKAGING. + * Makefile.am (EXTRA_DIST): Add PACKAGING. + +2005-07-12 Paul Eggert + + * NEWS: Document recent i18n improvements. + * bootstrap: Get runtime translations into runtime-po. + Create runtime-po files automatically, if possible. + * configure.ac: Invoke BISON_I18N, so that we eat our own dog food. + * data/yacc.c: Rewrite inclusion of so that ENABLE_NLS + does not infringe on the user's name space. + (YYENABLE_NLS): Renamed from ENABLE_BISON_NLS. + * doc/bison.texinfo (Internationalization): Revamp the English + and Texinfo syntax a bit, to try to make it clearer. + (Bison Options, Option Cross Key): Mention --print-localedir. + * m4/bison-i18n.m4 (BISON_I18N): Rename ENABLE_BISON_NLS to + YYENABLE_NLS. Quote a bit more. + * runtime-po/.cvsignore: New file. + * runtime-po/Makefile.in.in (mostlyclean): Remove *.old.pot. + * runtime-po/Rules-quot: Remove; now created by bootstrap. + * runtime-po/quot.sed: Likewise. + * runtime-po/boldquot.sed: Likewise. + * runtime-po/en@quot.header: Likewise. + * runtime-po/en@boldquot.header: Likewise. + * runtime-po/insert-header.sin: Likewise. + * runtime-po/remove-potcdate.sin: Likewise. + * runtime-po/Makevars: Likewise. + * runtime-po/LINGUAS: Likewise. + * runtime-po/de.po: Likewise; we will rely on the translation project + to maintain this, so "bootstrap" should get it. + * src/getarg.c (PRINT_LOCALEDIR_OPTION): Let the C compiler determine + its value. + * src/main.c (main): Bind the bison-runtime domain, too. + +2005-07-12 Bruno Haible + + * data/yacc.c: Include when NLS is enabled. + (YYI18N): Renamed from _. Use dgettext when NLS is enabled. + * po/POTFILES.in: Remove autogenerated file src/parse-gram.c. + * runtime-po: New directory. + * runtime-po/Makefile.in.in: New file, copied from po/, with modified + $(DOMAIN).pot-update rule, so that old messages are never dropped. + * runtime-po/Rules-quot: New file, copied from po/. + * runtime-po/quot.sed: Likewise. + * runtime-po/boldquot.sed: Likewise. + * runtime-po/en@quot.header: Likewise. + * runtime-po/en@boldquot.header: Likewise. + * runtime-po/insert-header.sin: Likewise. + * runtime-po/remove-potcdate.sin: Likewise. + * runtime-po/Makevars: New file. + * runtime-po/POTFILES.in: New file. + * runtime-po/LINGUAS: New file. + * runtime-po/bison-runtime.pot: New file. + * runtime-po/de.po: New file. + * m4/bison.m4: New file. + * Makefile.am (SUBDIRS): Add runtime-po. + (aclocaldir, aclocal_DATA): New variables. + * configure.ac: Add AC_CONFIG_FILES of runtime-po/Makefile.in. + Define aclocaldir. + * src/getargs.c (usage): Document --print-localedir option. + (PRINT_LOCALEDIR_OPTION): New enum item. + (long_options): Add --print-localedir option. + (getargs): Handle --print-localedir option. + * doc/bison.texinfo (Bison Parser): Remove paragraph about _(). + (Internationalization): New section. + +2005-07-12 Akim Demaille + + * src/symtab.h, src/symtab.c (symbol_print): Swap the arguments, + for consistency with the rest of the code. + * src/symlist.h, src/symlist.c (symbol_list_print): Ditto. + Add separators. + +2005-07-12 Akim Demaille + + * src/parse-gram.y: Use %printer instead of YYPRINT. + +2005-07-12 Akim Demaille + + * src/symtab.h, src/symtab.c (symbol_print): New. + * src/symlist.h, src/symlist.c (symbol_list_print): New. + * src/symlist.c (symbol_list_n_type_name_get): Report the culprit. + +2005-07-12 Akim Demaille + + * data/glr.c (b4_syncline): Fix (swap) the definitions of + b4_at_dollar and b4_dollar_dollar. + +2005-07-11 Paul Eggert + + * doc/bison.texinfo (Mystery Conflicts): Add reference to DeRemer + and Pennello's paper. + +2005-07-09 Paul Eggert + + * data/yacc.c (yyparse): Undo previous patch. Instead, + set yylsp[0] and yyvsp[0] only if the initial action + sets yylloc and yylval, respectively. + + * data/yacc.c (yyparse): In the initial action, set + yylsp[0] and yyvsp[0] rather than yylloc and yylval. + This avoids the use of undefined variables if the initial + action does not set yylloc and/or yylval. + +2005-07-07 Paul Eggert + + * examples/calc++/calc++-driver.cc, examples/calc++/calc++-driver.hh: + * examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc: + Remove from CVS. These files are automatically generated. + * examples/extexi: Clarify that this file is now part of Bison, + not GNU M4, and that it works with any POSIX-compatible Awk. + * examples/calc++/Makefile.am (run_extexi): Remove; not used. + ($(calc_extracted)): Renamed from $(calc_sources_extracted), + so that we also get calc++-parser.yy. Geneate it. + Use $(AWK), not gawk, since any conforming Awk will do. + Put comment before action, since older 'make' can't handle comment + in action. + $(BUILT_SOURCES): List all built sources, not just some of them. + $(MAINTAINERCLEANFILES): Remove *.stamp, and all built sources. + $($(srcdir)/calc++-parser.stamp): Work even if POSIXLY_CORRECT. + $($(calc_sources_generated)): Remove unnecessary test for existence + of target. (This had a shell syntax error anyway; a stray "x".) + (calc_extracted): List $(srcdir)/calc++-parser.yy, not + calc++-parser.yy. + * examples/.cvsignore, examples/calc++/.cvsignore: New files. + + * bootstrap (gnulib_modules): Add gettext, now that it's no longer + implied by the other modules. + +2005-07-06 Akim Demaille + + Bind examples/calc++ to the package. + * examples/calc++/Makefile: Remove, replaced by... + * examples/calc++/Makefile.am: ... this new file. + * examples/calc++/test: Remove input. + * examples/calc++/compile: Remove. + * examples/Makefile.am: New. + * configure.ac, Makefile.am: Adjust. + * doc/Makefile.am (clean-local): New, for more recent texi2dvis. + +2005-07-05 Paul Eggert + + * data/glr.c (yyFail): Drastically simplify; since the format argument + never had any % directives, we can simply pass it to yyerror. + (yyparse): Use "t a; a=b;" rather than "t a = b;" when a will + be modified later, as that is the usual style in glr.c. + Problems reported by Paul Hilfinger. + + Rewrite GLR parser to catch more buffer overrun, storage exhaustion, + and size overflow errors. + * data/glr.c: Include etc. after user prolog, not before, + in case the user prolog sets feature-test macros like _GNU_SOURCE. + (YYSIZEMAX): New macro. + (yystpcpy): New function, taken from yacc.c. + (struct yyGLRStack.yyspaceLeft): Now size_t, not int. + (yyinitGLRStack, yyfreeGLRstack): Remove unnecessary forward decls, + so that we don't have to maintain their signatures. + (yyFail): Check for buffer overflow, by using vsnprintf rather + than vsprintf. Allocate a bigger buffer if possible. + Report an error if buffer allocation fails. + (yyStackOverflow): New function. + (yyinitStateSet, yyinitGLRStack): Return a boolean indicating whether + the initialization was successful. It might fail if storage was + exhausted. + (yyexpandGLRStack): Add more checks for storage allocation failure. + Use yyStackOverflow to report failures. + (yymarkStackDeleted, yyglrShift, yyglrShiftDefer, yydoAction): + (yysplitStack, yyprocessOneStack, yyparse, yypstack): + Don't assume stack number fits in int. + (yysplitStack): Check for storage allocation failure. + (yysplitStack, yyprocessOneStack): Add pure_formals, so that we + can print diagnostics on storage allocation failure. All callers + changed. + (yyresolveValue): Use yybool for boolean. + (yyreportSyntaxError): Check for size-calculation overflow. + This code is taken from yacc.c. + (yyparse): Check for storage allocation errors when allocating + the initial stack. + +2005-07-05 Akim Demaille + + Extract calc++ from the documentation. + * doc/bison.texinfo (Calc++): Add the extraction marks. + * examples/extexi: New, from the aborted GNU Programming 2E. + Separate the different paragraph of a file with empty lines. + * examples/Makefile: Use it to extract the whole calc++ example. + +2005-06-24 Akim Demaille + + * doc/bison.texinfo (C++ Parser Interface): Use defcv to define + class typedefs. + +2005-06-22 Akim Demaille + + * doc/bison.texinfo (C++ Language Interface): First stab. + (C++ Parsers): Remove. + +2005-06-22 Akim Demaille + + * data/lalr1.cc (yylex_): Honor %lex-param. + +2005-06-22 Akim Demaille + + Start a set of simple examples. + * examples/calc++/Makefile, examples/calc++/calc++-driver.cc, + * examples/calc++/calc++-driver.hh, + * examples/calc++/calc++-parser.yy, + * examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc, + * examples/calc++/compile, examples/calc++/test: New. + +2005-06-09 Paul Eggert + + * data/yacc.c (malloc, free) [defined __cplusplus]: Wrap inside + extern "C" {}. This fixes a problem reported by Paul Hilfinger, + which stems from the 2005-05-27 patch. + +2005-06-06 Paul Hilfinger + + * data/glr.c: Modify treatment of unused parameters to permit use + of g++ (which doesn't allow __attribute__ ((unused)) for parameters). + +2005-05-30 Paul Eggert + + Fix infringement on user name space reported by Janos Zoltan Szabo. + * data/yacc.c (yyparse): strlen -> yystrlen. + +2005-05-30 Akim Demaille + + * data/lalr1.cc (_): New. + Translate the various messages. + +2005-05-27 Paul Eggert + + Fix infringement on user name space reported by Bruno Haible. + * data/yacc.c (YYSIZE_T): Define first, so that later decls can use it. + Prefer GCC's __SIZE_TYPE__ if available, so that we don't infringe on + the user's name space. + (alloca): Include to get it, if it's not built in. + (YYMALLOC, YYFREE): Define only if needed. + (malloc, free): Declare, but only if needed, as this infringes on + the user name space. + +2005-05-25 Paul Eggert + + Fix BeOS, FreeBSD, MacOS porting problems reported by Bruno Haible. + * lib/bitset.c (bitset_print): Don't assume size_t can be printed + with %d format. + * lib/ebitset.c (min, max): Undef before defining. + * lib/vbitset.c (min, max): Likewise. + * lib/subpipe.c (create_subpipe): Save local variables in case + vfork clobbers them. + +2005-05-24 Bruno Haible + + * tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the + error message syntax used by gcc-4.0. + +2005-05-23 Paul Eggert + + * README: Mention m4 1.4.3. Remove obsolete advice about + Sun Forte Developer 6 update 2, VMS, and MS-DOS. + + * bootstrap: Remove workaround for problem I encountered with + gettext 0.14.1; it seems to be fixed now. + +2005-05-22 Paul Eggert + + * NEWS: Version 2.0a. + + * src/files.c: Include "stdio-safer.h"; this fixes a typo in + the previous change. + + Various maintainer cleanups. + * .cvsignore: Add a.exe, a.out, b.out,, conf[0-9]*, confdefs*, + conftest*, for benefit of CVS commands run at the same time as + "configure". Add build-aux, since "bootstrap" now creates it and + its subfiles. + * Makefile.cfg (move_if_change): Remove. + * Makefile.maint: Remove the update stuff; we now use "bootstrap". + (ftp-gnu, www-gnu, move_if_change, local_updates, update): + (po_repo, do-po-update, po-update, wget_files, get-targets): + (config.guess-url_prefix, config.sub-url_prefix): + (ansi2knr.c-url_prefix, texinfo.tex-url_prefix): + (standards.texi-url_prefix, make-stds.texi-url_prefix, taget, url): + ($(get-targets), cvs-files, automake_repo, wget-update, cvs-update): + Remove. + * configure.ac (AC_CONFIG_AUX_DIR): Change from config to build-aux; + this is now the recommended name. + * config/.cvsignore: Remove config.guess, config.rpath, config.sub, + depcomp, install-sh, mdate-sh, missing, mkinstalldirs, texinfo.tex, + ylwrap. These files now go into build-aux. + * config/move-if-change: Remove. + * config/prev-version.txt: Bump from 1.75 to 2.0. + + * bootstrap: Add stdio-safer, unistd-safer modules. + Remove m4/glibc2.m4 (introduced by latest gnulib, but + we don't need it). + * lib/.cvsignore: Add dup-safer.c, fd-safer.c, + fopen-safer.c, stdio-safer.h, unistd-safer.h. + * lib/subpipe.c: Include "unistd-safer.h". + (create_subpipe): Make sure all the newly-created + file descriptors are > 2, so that diagnostics don't + get sent down them (which might cause Bison to hang, in theory). + * m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4. + * src/files.c (xfopen): Use fopen_safer, not fopen. + + * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port + yesterday's yacc.c fix. + +2005-05-21 Paul Eggert + + * data/glr.c, data/lalr1.cc: Update copyright date. + + Fix a destructor bug reported by Wolfgang Spraul in + . + * data/yacc.c (yyabortlab): Don't call destructor, and + don't set yychar to EMPTY. + (yyoverflowlab): Don't call destructor. + (yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY. + * tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines, + since we no longer output the message "discarding lookahead token + end of input ()". + +2005-05-20 Paul Hilfinger + + * data/glr.c (YY_SYMBOL_PRINT): Don't print newline at end to + fix a small glitch in debugging output. + (yyprocessOneStack, yyrecoverSyntaxError, yyparse): Print newline + after YY_SYMBOL_PRINT where needed. + + (struct yyGLRState): Add some comments. + (struct yySemanticOption): Add some comments. + (union yyGLRStackItem): Add comment. + + (yymergeOptionSets): Correct this to properly perform the union, + avoiding infinite reported by Michael Rosien. + Update comment. + + * tests/glr-regression.at: Add test for GLR merging error reported + by M. Rosien. + +2005-05-13 Paul Eggert + + * COPYING, ChangeLog, GNUmakefile, HACKING, Makefile.am, + Makefile.cfg, Makefile.maint, NEWS, README, README-alpha, + README-cvs, TODO, bootstrap, configure.ac, data/Makefile.am, + data/README, data/c.m4, data/glr.c, data/lalr1.cc, data/yacc.c, + data/m4sugar/m4sugar.m4, doc/Makefile.am, doc/bison.texinfo, + doc/fdl.texi, doc/gpl.texi, doc/refcard.tex, lib/Makefile.am, + lib/abitset.c, lib/abitset.h, lib/bbitset.h, lib/bitset.c, + lib/bitset.h, lib/bitset_stats.c, lib/bitset_stats.h, + lib/bitsetv-print.c, lib/bitsetv-print.h, lib/bitsetv.c, + lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/get-errno.c, + lib/get-errno.h, lib/lbitset.c, lib/lbitset.h, lib/libiberty.h, + lib/main.c, lib/subpipe.c, lib/subpipe.h, lib/timevar.c, + lib/timevar.def, lib/timevar.h, lib/vbitset.c, lib/vbitset.h, + lib/yyerror.c, m4/cxx.m4, m4/m4.m4, m4/subpipe.m4, m4/timevar.m4, + m4/warning.m4, src/LR0.c, src/LR0.h, src/Makefile.am, src/assoc.c, + src/assoc.h, src/closure.c, src/closure.h, src/complain.c, + src/complain.h, src/conflicts.c, src/conflicts.h, src/derives.c, + src/derives.h, src/files.c, src/files.h, src/getargs.c, + src/getargs.h, src/gram.c, src/gram.h, src/lalr.c, src/lalr.h, + src/location.c, src/location.h, src/main.c, src/muscle_tab.c, + src/muscle_tab.h, src/nullable.c, src/nullable.h, src/output.c, + src/output.h, src/parse-gram.c, src/parse-gram.h, + src/parse-gram.y, src/print.c, src/print.h, src/print_graph.c, + src/print_graph.h, src/reader.c, src/reader.h, src/reduce.c, + src/reduce.h, src/relation.c, src/relation.h, src/scan-gram.l, + src/scan-skel.l, src/state.c, src/state.h, src/symlist.c, + src/symlist.h, src/symtab.c, src/symtab.h, src/system.h, + src/tables.c, src/tables.h, src/uniqstr.c, src/uniqstr.h, + src/vcg.c, src/vcg.h, src/vcg_defaults.h, tests/Makefile.am, + tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at, + tests/cxx-type.at, tests/existing.at, tests/glr-regression.at, + tests/headers.at, tests/input.at, tests/local.at, tests/output.at, + tests/reduce.at, tests/regression.at, tests/sets.at, + tests/synclines.at, tests/testsuite.at, tests/torture.at: + Update FSF postal mail address. + +2005-05-11 Paul Eggert + + * tests/local.at (AT_COMPILE_CXX): Treat LDFLAGS like AT_COMPILE does. + Problem reported by Ralf Menzel. + +2005-05-01 Paul Eggert + + * tests/actions.at: Test that stack overflow invokes destructors. + From Marcus Holland-Moritz. + * data/yacc.c (yyerrlab): Move the code that destroys the stack + from here.... + (yyreturn): to here. That way, destructors are called properly + even if the stack overflows, or the user calls YYACCEPT or + YYABORT. Stack-overflow problem reported by Marcus Holland-Moritz. + (yyoverflowlab): Destroy the lookahead. + +2005-04-24 Paul Eggert + + * data/yacc.c (YYSTACK_ALLOC_MAXIMUM): Add more-descriptive comment. + +2005-04-17 Paul Eggert + + * NEWS: Bison-generated C parsers no longer quote literal strings + associated with tokens. + * src/output.c (prepare_symbols): Don't escape strings, + since users don't want to see C escapes. + * tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes + in diagnostics. + * tests/input.at (Torturing the Scanner): Likewise. + * tests/regression.at (Token definitions, Web2c Actions): Likewise. + +2005-04-16 Paul Eggert + + * tests/torture.at (AT_INCREASE_DATA_SIZE): Skip the test if + the data size is known to be too small and we can't increase it. + This works around an HP-UX 11.00 glitch reported by Andrew Benham. + +2005-04-15 Paul Eggert + + * src/parse-gram.y: Include quotearg.h. + (string_as_id): Quote $1 before using it as a key, since the + lexer no longer quotes it for us. + (string_content): Don't strip quotes, since lexer no longer + quotes it for us. + * src/scan-gram.l: Include quotearg.h. + ("\""): Omit quote. + ("'"): Quote symbol before using it as + a key, since the rest of the lexer doesn't quote it. + * src/symtab.c (symbol_get): Don't quote symbol; caller does it now. + * tests/regression.at (Token definitions): Check for backslashes + in token strings. + + * data/yacc.c (YYSTACK_ALLOC_MAXIMUM): New macro. + (YYSIZE_T): Define to unsigned long int when using an older compiler. + (yyparse): Revamp code to generate long syntax error message, to + make it easier to translate, and to avoid problems with arithmetic + overflow. Change "virtual memory" to "memory" in diagnostic, since + we don't know whether the memory is virtual. + +2005-04-13 Paul Eggert + + * NEWS: Bison-generated C parsers now use the _ macro to + translate strings. + * data/yacc.c (_) [!defined _]: New macro. + All English strings wrapped inside this macro. + * doc/bison.texinfo (Bison Parser): Document _. + * po/POTFILES.in: Include src/parse-gram.c, since it now + includes translateable strings that parse-gram.y doesn't. + +2005-04-12 Paul Eggert + + * src/symtab.c (symbol_make_alias): Call symbol_type_set, + reverting the 2004-10-11 change to this function. + (symbol_check_alias_consistency): Don't call symbol_type_set + if the type name is already correct. + * tests/input.at (Typed symbol aliases): New test, from Tim Van Holder. + +2005-03-25 Paul Eggert + + * tests/regression.at (Token definitions): Don't use a token named + c, as that generates a "#define c ..." that runs afoul of buggy + stdlib.h that uses the identifier c as a member of struct + drand48_data. Problem reported by Horst Wente. + +2005-03-21 Paul Eggert + + * bootstrap: Change translation URL from + http://www2.iro.umontreal.ca/~gnutra/po/maint/bison/ to + http://www.iro.umontreal.ca/translation/maint/bison/ to avoid + redirection glitches. Problem reported by twlevo@xs4all.nl. + +2005-03-20 Paul Eggert + + * tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Don't put options + after operands; POSIX says this isn't portable for the c99 command. + +2005-03-18 Paul Eggert + + * tests/glr-regression.at (glr-regr2a.y): Try to dump core + immediately if a data overrun has occurred; this may help us track + down what may be a spurious failure on MacOS. + +2005-03-17 Paul Eggert + + Respond to problems reported by twlevo@xs4all.nl. + + * bootstrap: Use "trap - 0" rather than the unportable "trap 0". + + * src/vcg.h: Comment fix. + * src/vcg_defaults.h: Parenthesize macro bodies to make them safe. + (G_CMAX): Change to -1 instead of INT_MAX. + + * data/yacc.c (yyparse): Omit spaces before #line. + +2005-03-15 Paul Eggert + + * src/tables.c (state_number_to_vector_number): Put it inside an + "#if 0", since it's not currently used. Problem reported by + Roland McGrath. + +2005-03-06 Paul Eggert + + * src/output.c (escaped_output): Renamed from + escaped_file_name_output, since we now use it for symbol tags as + well. All uses changed. + (symbol_destructors_output, symbol_printers_output): + Escape symbol tags too. + Problem reported by Matyas Forstner in + . + + * src/muscle_tab.c (muscle_code_grow): Don't quote numbers; it's + not needed. + * src/output.c (user_actions_output, token_definitions_output, + symbol_destructors_output, symbol_printers_output): Likewise. + * src/reader.c (prologue_augment): Likewise. + * src/scan-gram.l (handle_action_dollar, handle_action_at): Likewise. + + * src/vcg.c (output_edge): Don't quote linestyle arg. + Problem reported by twlevo@xs4all.nl. + +2005-02-28 Paul Eggert + + * doc/bison.texinfo (Semantic Tokens): Fix scoping problem in + example, reported by Derek M Jones. Also, make the example even + more outrageous, to better illustrate how bad the problem is. + +2005-02-24 Paul Eggert + + * doc/bison.texinfo (Mfcalc Symtab): Correct the prototype for + putsym. Typo reported by Sebastian Piping. + +2005-02-23 Paul Eggert + + * doc/bison.texinfo (Language and Grammar): some -> same + (Epilogue): int he -> in the + Typos reported by Sebastian Piping via Justin Pence. + +2005-02-07 Paul Eggert + + * tests/glr-regression.at (Improper handling of embedded actions + and dollar(-N) in GLR parsers): Renamed from "Improper handling of + embedded actions and $-N in GLR parsers", work around an Autoconf bug + with dollar signs in test names. + * tests/input.at (Invalid dollar-n): Renamed from "Invalid \$n", + for a similar reason. + +2005-01-28 Paul Eggert + + * src/vcg.c (output_graph): G_VIEW -> normal_view in case someone + wants to redefine G_VIEW. + +2005-01-27 Paul Eggert + + * src/vcg.c (get_view_str): Remove case for normal_view. + Problem reported by twlevo@xs4all.nl. + +2005-01-24 Paul Eggert + + * configure.ac (O0CFLAGS, O0CXXFLAGS): Fix quoting bug. + Problem reported by twlevo@xs4all.nl. + + * doc/bison.texinfo: Change @dircategory from "GNU programming + tools" to "Software development". Requested by Richard Stallman + via Karl Berry. + +2005-01-23 Paul Eggert + + * tests/c++.at (AT_CHECK_DOXYGEN): Don't use options after operands. + Problem reported by twlevo@xs4all.nl. + +2005-01-21 Paul Eggert + + * data/yacc.c (YYCOPY, yystpcpy, yyparse): Remove "register" + keyword; it's not needed with modern compilers, and it doesn't + affect correctness with older compilers. Suggested by + twlevo@xs4all.nl. + +2005-01-17 Paul Eggert + + * data/glr.c (yyuserAction): Add "default: break;" case to pacify + gcc -Wswitch-default. + * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise. + * data/yacc.c (yyparse): Likewise. + +2005-01-12 Paul Eggert + + * src/system.h (OUTPUT_EXT, TAB_EXT): Define only if not defined + already. Let config.h define any nonstandard values. + +2005-01-10 Paul Eggert + + * tests/calc.at (_AT_DATA_CALC_Y): Use alarm (100), not alarm (10), + for the benefit of slower hosts. Problem reported by + Nelson H. F. Beebe. + +2005-01-07 Paul Eggert + + * data/yacc.c (yyparse): Pacify non-GCC compilers about yyerrorlab + being defined and not used. + * data/lalr1.cc (yyparse): Likewise. + Use "if (false)" rather than "if (0)". + +2005-01-05 Paul Eggert + + * TODO: Mention that we should allow NUL bytes in tokens. + +2005-01-02 Paul Eggert + + * src/scan-skel.l (<>): Don't close standard output. + Problem reported by Hans Aberg. + +2005-01-01 Paul Eggert + + * src/getargs.c (version): Happy new year; update overall + program copyright date from 2004 to 2005. + + * src/scan-skel.l ("@output ".*\n): Don't close standard output. + Problem reported by Hans Aberg. + * tests/output.at (AT_CHECK_OUTPUT): New arg SHELLIO. + (Output file names.): Add a test for the case when standard output + is closed. + +2004-12-26 Paul Eggert + + * doc/bison.texinfo (@copying): Update FDL version number to 1.2, + to fix an oversight in the Bison 2.0 manual. + +2004-12-25 Paul Eggert + + * NEWS: Version 2.0. Reformat the existing news items since + 1.875, so that related items are grouped together. + * configure.ac (AC_INIT): Bump version to 2.0. + * src/parse-gram.c, src/parse-gram.h: Regenerate with 2.0. + + * tests/torture.at (Exploding the Stack Size with Alloca): Set + YYSTACK_USE_ALLOCA to 1 if __GNUC__ or alloca are defined; + otherwise, we're not testing alloca. Unfortunately there's no + simple way to consult HAVE_ALLOCA here. + + * data/lalr1.cc (yydestruct_): Pacify unused variable warning + for yymsg, too. + + * src/LR0.c (new_itemsets): Use memset rather than zeroing by + hand. This avoids a warning about comparing int to size_t when + GCC warnings are enabled. + +2004-12-22 Paul Eggert + + * NEWS: Bison-generated parsers no longer default to using the + alloca function (when available) to extend the parser stack, due + to widespread problems in unchecked stack-overflow detection. + * data/glr.c (YYMAXDEPTH): Remove undef when zero. It's the user's + responsibility to set it to a positive value. This lets the user + specify a value that is not a preprocessor constant. + * data/yacc.c (YYMAXDEPTH): Likewise. + (YYSTACK_ALLOC): Define only if YYSTACK_USE_ALLOCA is nonzero. + * doc/bison.texinfo (Stack Overflow): YYMAXDEPTH no longer needs + to be a compile-time constant. However, explain the constraints on it. + Also, explain the constraints on YYINITDEPTH. + (Table of Symbols): Explain that alloca is no longer the default. + Explain the user's responsibility if they define YYSTACK_USE_ALLOCA + to 1. + + * doc/bison.texinfo (Location Default Action): Mention that n must + be zero when k is zero. Suggested by Frank Heckenbach. + +2004-12-22 Akim Demaille + + * data/lalr1.cc (parser::token_number_type, parser::rhs_number_type) + (parser::state_type, parser::semantic_type, parser::location_type): + Private, not public. + (parser::parse): Return ints, not bool. + Returning a bool introduces a problem: 0 corresponds to false, and + it seems weird to return false on success. Returning true changes + the conventions for yyparse. + Alternatively we could return void and send an exception. + There is no clear consensus (yet?). + (state_stack, semantic_stack, location_stack): Rename as... + (state_stack_type, semantic_stack_type, location_stack_type): these. + Private, not public. + * tests/c++.at: New. + * tests/testsuite.at, tests/Makefile.am: Adjust. + 2004-12-21 Akim Demaille * data/lalr1.cc (parser::parse): Return a bool instead of an int. @@ -391,7 +3686,7 @@ line. 2004-10-22 Akim Demaille - and Paul Eggert + and Paul Eggert Remove some arbitrary limits on goto numbers and relations. * src/lalr.c (goto_map, ngotos, from_state, to_state): Omit @@ -621,7 +3916,7 @@ 2004-09-06 Akim Demaille * data/lalr1.cc: Adjust the indentation of the labels. - (Parser::pop): New. + (Parser::pop): New. Use it. 2004-09-06 Akim Demaille @@ -4347,7 +7642,7 @@ Reported by Charles-Henry de Boysson. * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't - check the length of the traces when %glr. + check the length of the traces when %glr. (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from GLR's traces. (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New. @@ -4492,7 +7787,7 @@ struct lbitset_struct, struct bitset_stats_struct): New types. All uses of struct bitset_struct changed to union bitset_union, etc. - * lib/abitset.c (struct abitset_struct, abitset, + * lib/abitset.c (struct abitset_struct, abitset, struct bitset_struct): Remove. * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats, struct bitset_struct): Remove. @@ -5578,7 +8873,7 @@ 2002-06-28 Akim Demaille - * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../. + * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../. * src/conflicts.c (conflicts_total_count): `i' is unsigned, to pacify GCC. * src/output.c (save_row): Initialize all the variables to pacify GCC. @@ -5608,7 +8903,7 @@ * src/getargs.c: * src/symlist.h: Add dprec and merger fields to symbol_list_s. - * src/symlist.c (symbol_list_new): Initialize dprec and merger fields. + * src/symlist.c (symbol_list_new): Initialize dprec and merger fields. Originally 2002-06-16 Paul Hilfinger @@ -7181,7 +10476,7 @@ * tests/atlocal.at (GCC): New. * tests/synclines.at (AT_TEST_SYNCLINE): New macro. - (Prologue synch line, ,%union synch line, Postprologue synch line) + (Prologue synch line, %union synch line, Postprologue synch line) (Action synch line, Epilogue synch line): New tests. * src/reader.c (parse_union_decl): Define the muscle stype_line. * data/bison.simple, data/bison.c++: Use it. @@ -7615,8 +10910,8 @@ 2002-01-20 Marc Autret - * src/system.h: Need to define __attribute__ away for non-GCC - compilers as well (i.e. the vendor C compiler). + * src/system.h: Need to define __attribute__ away for non-GCC + compilers as well (i.e., the vendor C compiler). Suggested by Albert Chin-A-Young. 2002-01-11 Tim Van Holder @@ -8786,7 +12081,7 @@ * src/warshall.c (bitmatrix_print): New. (TC): Use it. - When performing a transitive closure R(i, j) && R(j, k) => R(i, k), + When performing a transitive closure R(i, j) && R(j, k) => R(i, k), j must be the outer loop. * tests/regression.at (Broken Closure): New. @@ -10371,7 +13666,7 @@ * src/output.c (output): Delete call to reader_output_yylsp. * src/reader.c (reader): Likewise. - * src/reader.h: Delete declaration of reader_output_yylsp. + * src/reader.h: Delete declaration of reader_output_yylsp. 2001-09-02 Marc Autret @@ -12994,24 +16289,15 @@ * REFERENCES: entered into RCS ------ - -Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -This file is part of Bison, the GNU Compiler Compiler. + ----- -Bison is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free + Software Foundation, Inc. -Bison is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + Copying and distribution of this file, with or without + modification, are permitted provided the copyright notice and this + notice are preserved. -You should have received a copy of the GNU General Public License -along with Bison; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. +$Id$