X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/da99a5dc039c0ba6a3d4a1b72a5b529f188821ea..126e375187a0db9ef64ec063b37465680abe7681:/ChangeLog?ds=sidebyside diff --git a/ChangeLog b/ChangeLog index 4612d7e7..4b472fcc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1030 @@ +2004-04-13 Jim Meyering + + * src/conflicts.c (conflicts_print): Correct format string typo: + use `%%' to produce literal `%'. (trivial change) + +2004-03-30 Paul Eggert + + * src/getargs.c (version): Update copyright year to 2004. + + * data/c.m4 (b4_int_type): Use 'short int' rather than + 'short', and similarly for 'long', 'unsigned', etc. + * data/glr.c (YYTRANSLATE, yyconfl, yySymbol, yyItemNum, + yygetLRActions, yyprocessOneStack, yyrecoverSyntaxError, + yy_yypstack, yydumpstack): Likewise. + * data/lalr1.cc (user_token_number_max_, user_token_number_max_, + translate_, seq_, [], pop, Slice, range_, operator+, operator+=): + Likewise. + * data/yacc.c (b4_int_type, yyss, YYSTACK_BYTES, yysigned_char, + yy_stack_print, yyparse): Likewise. + * doc/bison.texinfo (Prologue, Multiple Types): Likewise. + * lib/bbitset.h (bitset_word, BITSET_WORD_BITS): Likewise. + * lib/bitset.c (bitset_print): Likewise. + * lib/bitset_stats.c (bitste_log_histogram_print): Likewise. + * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise. + * lib/bitsetv.c (bitsetv_dump): Likewise. + * lib/ebitset.c (EBITSET_ELT_BITS, ebitset_elt_alloc): Likewise. + * lib/lbitset.c (LBITSET_ELT_BITS, lbitset_elt_alloc, debug_lbitset): + Likewise. + * src/LR0.c (allocate_itemsets): Likewise. + * src/gram.h (rule_number, rule): Likewise. + * src/lalr.h (goto_number): Likewise. + * src/nullable.c (nullable_compute): Likewise. + * src/output.c (prepare_rules): Likewise. + * src/relation.c (relation_print, relation_digraph): Likewise. + * src/relation.h (relation_node): Likewise. + * src/state.h (state_number, transitions, errs, reductions, + struct state): Likewise. + * src/symtab.h (symbol_number, struct symbol): Likewise. + * src/tables.c (vector_number, tally, action_number, + default_goto, goto_actions): Likewise. + * tests/existing.at (GNU Cim Grammar): Likewise. + * tests/regression.at (Web2c Actions): Likewise. + + * src/output.c (muscle_insert_short_int_table): Renamed from + muscle_insert_short_table. All uses changed. + +2004-03-25 Paul Hilfinger + + * src/parse-gram.y: Define PERCENT_EXPECT_RR. + (declaration): Replace expected_conflicts with expected_sr_conflicts. + Add %expect-rr rule. + + * src/scan-gram.l: Recognize %expect-rr. + + * src/conflicts.h (expected_sr_conflicts): Rename from + expected_conflicts. + (expected_rr_conflicts): Declare. + + * src/conflicts.c (expected_sr_conflicts): Rename from + expected_conflicts. + (expected_rr_conflicts): Define. + (conflicts_print): Check r/r conflicts against expected_rr_conflicts + for GLR parsers. + Use expected_sr_conflicts in place of expected_conflicts. + Warn if expected_rr_conflicts used in non-GLR parser. + + * doc/bison.texinfo: Add documentation for %expect-rr. + +2004-03-08 Paul Eggert + + Add support for hex token numbers. Suggested by Odd Arild Olsen in + . + + * NEWS: Document hexadecimal tokens, no NUL bytes, %destructor + in lalr1.cc. + * doc/bison.texinfo (Token Decl): Add hexadecimal token numbers. + * src/scan-gram.l (scan_integer): New function. + ({int}): Use it. + (0[xX][0-9abcdefABCDEF]+): New pattern, to support hex numbers. + (, \\x[0-9abcdefABCDEF]+, + handle_action_dollar, handle_action_at, convert_ucn_to_byte): + Say "long int", not "long", for uniformity with GNU style. + +2004-02-25 Paul Eggert + + * tests/local.at (AT_COMPILE, AT_COMPILE_CXX): Ignore stdout from + compilers. This fixes a problem with Intel's C++ compiler being + chatty, reported by Guido Trentalancia in + . + +2004-02-09 Alexandre Duret-Lutz + + Support %destructor and merge error locations in lalr1.cc. + + * data/lalr1.cc (b4_cxx_destruct_def): New macro. + (Parser::stos_): Define unconditionally. + (Parser::destruct_): New method. Generate its body with + b4_yydestruct_generate. + (Parser::error_start_): New attribute. + (Parser::parse) : Call destruct_ on erroneous + token which are discarded. + (Parser::parse) : Update + error_start_ when erroneous token are discarded. + (Parser::parse) : Compute the location of the error + token so that it covers all the discarded tokens. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Adjust so + it can be called with `%skeleton "lalr1.cc"', and do that. + +2004-02-02 Paul Eggert + + * src/Makefile.am (AM_CPPFLAGS): New macro. It mentions + $(top_srcdir)/lib and ../lib. This fixes a bug reported + by Paul Hilfinger; the old INCLUDES value didn't mention ../lib. + There's no need to mention top_builddir since Automake does that + for us. + (INCLUDES): Remove, as Automake says it's obsolescent. + Contents migrated into AM_CPPFLAGS as described above. + * lib/Makefile.am (INCLUDES): Remove; obsolescent. + +2004-01-14 Paul Hilfinger + + * data/glr.c (yytokenName): Bullet-proof against YYEMPTY token. + (yyreportSyntaxError): Handle case where lookahead token is + YYEMPTY. + +2004-01-13 Paul Hilfinger + + * data/glr.c: Put casts on uses of YYREALLOC and YYMALLOC so that + resulting parsers are compilable with C++. + +2003-12-23 Paul Eggert + + * config/depcomp, config/install-sh: Sync with Automake 1.8. + * src/output.c (output_skeleton): Rename local var. + * tests/input.at (Torturing the Scanner): Don't use \x0 or \0 in + Bison tokens, as this runs afoul of the 2003-10-07 change that + disallowed NUL bytes in character constants or string literals. + + * tests/local.at: Require Autoconf 2.59's Autotest. + * tests/testsuite.at: Don't include local.at, since we now assume + Autoconf 2.59 or later. Autoconf 2.59 had some problems with + including it. + * tests/Makefile.am ($(TESTSUITE)): Remove warning about ignoring + multiple inclusion warnings. + +2003-12-02 Akim Demaille + + * doc/bison.texinfo (How Can I Reset the Parser): More about start + conditions. + From Bruno Haible. + +2003-11-18 Alexandre Duret-Lutz + + * doc/bison.texinfo (Bison Options): Escape `@' in `$@'. + +2003-10-07 Paul Eggert + + * tests/Makefile.am (clean-local): Don't run 'testsuite --clean' + if testsuite doesn't exist. + + * doc/bison.texinfo (Symbols): NUL bytes are not allowed in string + literals, unfortunately. + * src/scan-gram.l (): + Complain about NUL bytes in character constants or string literals. + +2003-10-05 Paul Eggert + + * NEWS: Don't document %no-default-prec, as it's still + too experimental. + * doc/bison.texinfo: Document %no-default-prec only if + the defaultprec flag is set. Normally it's not. + +2003-10-04 Paul Eggert + + * data/glr.c (b4_rhs_value, b4_rhs_location): Yield a + non-modifiable lvalue, instead of a modifiable one. + * doc/bison.texinfo (Actions): Document that $$ can + be assigned to. Do not claim that $$ and $N are + array element references: user code should not rely on this. + +2003-10-01 Paul Eggert + + * src/parse-gram.h (PERCENT_NO_DEFAULT_PREC): New token. + (grammar_declaration): Use it. + * src/scan-gram.l: New token %no-default-prec. + * tests/conflicts.at: Revamp tests to use %no-default-prec. + * NEWS, doc/bison.texinfo: Document the above. + +2003-10-01 Akim Demaille + + VCG no longer supports long_straight_phase. + + * src/vcg.c, src/vcg.h: Remove the handling of long_straight_phase. + * src/print_graph.c (print_graph): Adjust. + +2003-09-30 Frank Heckenbach + and Paul Eggert + + * doc/bison.texinfo (Decl Summary, Contextual Precedence, + Table of Symbols): Document %default-prec. + * src/parse-gram.y (PERCENT_DEFAULT_PREC): New token. + (grammar_declaration): Set default_prec on %default-prec. + * src/scan-gram.l (%default-prec): New token. + * src/reader.h (default_prec): New flag. + * src/reader.c: Likewise. + (packgram): Handle it. + * tests/conflicts.at (%default-prec without %prec, + %default-prec with %prec, %default-prec 1): New tests. + +2003-09-30 Paul Eggert + + * tests/testsuite.at: Include local.at, not input.at, fixing + a typo in the 2003-08-25 patch. + +2003-08-27 Akim Demaille + + * data/lalr1.cc (yyparse) [__GNUC__]: "Use" yyerrorlab to pacify + GCC warnings. + +2003-08-26 Akim Demaille + + * config/announce-gen (print_changelog_deltas): Neutralize "<#" as + "<\#" to avoid magic from Gnus when posting parts of this script. + +2003-08-26 Akim Demaille + + * data/lalr1.cc (Parser::report_syntax_error_): New, extracted from + (Parser::parse): here. + Adjust: nerrs and errstatus is now replaced by... + (Parser::nerrs_, Parser::errstatus_): New. + +2003-08-25 Akim Demaille + + * config/announce-gen, Makefile.cfg: New. + * Makefile.am: Adjust. + * GNUmakefile, Makefile.maint: Update from CVS Autoconf, but + keeping local WGET and WGETFLAGS modifications from Paul Eggert. + +2003-08-25 Akim Demaille + + When reducing initial empty rules, Bison parser read an initial + location that is not defined. This results in garbage, and that + affects Bison's own parser. Therefore we need (i) to extend Bison + to support a means to initialize this location, and (ii) to use + this CVS Bison to fix CVS Bison's parser. + + * src/reader.h, reader.c (epilogue_augment): Remove, replace + with... + * src/muscle_tab.h, src/muscle_tab.c (muscle_code_grow): this. + * src/parse-gram.y: Adjust. + (%initial-action): New. + (%error-verbose): Since we require CVS Bison, there is no reason + not to use it. + * src/scan-gram.l: Adjust. + * src/Makefile.am (YACC): New, to make sure we use our own parser. + * data/yacc.c (yyparse): Use b4_initial_action. + +2003-08-25 Akim Demaille + + * doc/bison.texinfo: Don't promote stdout for error messages. + +2003-08-25 Akim Demaille + + * data/lalr1.cc (Parser::reduce_print_): Remove unused yyi. + From Alexandre Duret-Lutz. + +2003-08-25 Akim Demaille + + Version 1.875c. + +2003-08-25 Akim Demaille + + * data/lalr1.cc (Parser::stack_print_, YY_STACK_PRINT): New. + Use them. + +2003-08-25 Akim Demaille + + * data/lalr1.cc (Parser::reduce_print_): New. + Use it. + +2003-08-25 Akim Demaille + + Have lalr1.cc catch with Paul Eggert's patch to fix the infinite + error recovery loops. This patch is based on + . + Also, augment the similarity between lalr1.cc and yacc.c. + Note: the locations of error recovery rules are not correct yet. + + * data/lalr1.cc: Comment changes to augment the similarity between + lalr1.cc and yacc.c. + (YYERROR): Goto to yyerrorlab, not yyerrlab1. + (yyerrlab1): Remove, but where it used to be (now the bottom part of + yyerrlab), when hitting EOF, pop the whole stack here instead of + merely falling thru the default error handling mechanism. + (yyerrorlab): New label, with the old contents of YYERROR, + plus the following change: pop the stack of rhs corresponding + to the production that invoked YYERROR. That is how Yacc + behaves (required by POSIX). + * tests/calc.at (AT_CHECK_CALC_LALR1_CC): No longer expected to + fail. + +2003-08-25 Akim Demaille + + Tune local.at so that people can "autom4te -l autotest calc.at -o + calc" for instance, to extract a sub test suite. + + * tests/testsuite.at: Move the initialization, Autotest version + requirement, and AT_TESTED invocation into... + * tests/local.at: here. + * tests/testsuite.at: Include it for compatibility with Autoconf + 2.57. + * tests/Makefile.am ($(TESTSUITE)): Report that the warning should + be ignore. + +2003-08-04 Paul Eggert + + Rework code slightly to avoid gcc -Wtraditional warnings. + * data/glr.c (yyuserMerge): Return void, not YYSTYPE. + The returned value is now stored in *YY0. All callers changed. + * src/output.c (merge_output): Adjust to the above change. + +2003-07-26 Paul Eggert + + * data/glr.c (YYASSERT): New macro. + (yyfillin, yydoAction, yyglrReduce, yysplitStack, + yyresolveStates, yyprocessOneStack): + Use `YYASSERT (FOO);' rather than `if (! (FOO)) abort ();'. + Derived from a suggestion by Frank Heckenbach. + +2003-07-25 Paul Eggert + + * data/glr.c (yyglrReduce): Don't use C89 string concatenation, + for portability to K&R C (after ansi2knr, presumably). See + + by Frank Heckenbach, though I have omitted the structure-initialization + part of his glr-knr.diff patch since I recall that the Portable + C Compiler didn't require that change. + + Let the user specify how to allocate and free memory. + Derived from a suggestion by Frank Heckenbach in + . + * data/glr.c (YYFREE, YYMALLOC, YYREALLOC): New macros. + All uses of free, malloc, realloc changed to use these macros, + and unnecessary casts removed. + * data/yacc.c (YYFREE, YYMALLOC): Likewise. + +2003-07-06 Matthias Mann + + * data/lalr1.cc (operator<<(std::ostream&, const Position&)): + use s.empty() rather than s == "" to test for empty string; see + + (trivial change) + +2003-06-25 Akim Demaille + + * config/depcomp, config/install-sh: Update from masters. + +2003-06-20 Paul Eggert + + * data/glr.c (YYLLOC_DEFAULT): Parenthesize arguments as needed, + and return properly parenthesized result. + * data/lalar1.cc (YYLLOC_DEFAULT): Likewise. + * data/yacc.c (YYLLOC_DEFAULT): Likewise. + Remove unnecessary parentheses from uses. + * doc/bison.texinfo (Location Default Action): Describe the + conventions for parentheses. + +2003-06-19 Paul Eggert + + * data/glr.c (yyremoveDeletes, yy_reduce_print, yyglrReduce, + yyreportTree): Do not assume that size_t is the same width as int, + when printing sizes. Print sizes using an unsigned format. + Problem reported by Frank Heckenbach in + . + + Port to Forte Developer 7 C compiler. + * data/glr.c (struct YYLTYPE): If locations are not being used, + declare a single dummy member, as empty structs do not conform + to the C standard. + (YYERROR, YYBACKUP): Do not use "do { ...; return foo; } while (0)"; + the Forte Developer 7 C compiler complains that end-of-loop + code is not reached. + +2003-06-17 Paul Eggert + + * lib/libiberty.h (PARAMS): Spell argument as Args, not as X, to + avoid warnings from picky compilers about redefinition of PARAMS. + +2003-06-17 Paul Eggert + + Version 1.875b. + + * NEWS: Document 1.875b. + + * lib/bbitset.h: Do not include config.h; that's the includer's job. + Do not include ; shouldn't be needed on a C89 host. + * lib/bitset.h (bitset_compatible_p): Indent as per GNU standard. + Don't use 'index' in comments, as it's a builtin fn on some hosts. + * lib/bitset_stats.c: Include gettext.h unconditionally, as + per recent gettext manual's suggestion. + * lib/ebitset.c (ebitset_resize, ebitset_unused_clear): + Use prototypes, not old-style definitions. + * lib/lbitset.c (lbitset_unused_clear): Likewise. + * lib/vbitset.c (vbitset_resize, vbitset_ones, vbitset_zero, + vbitset_empty_p, vbitset_copy1, vbitset_not, vbitset_equal_p, + vbitset_subset_p, vbitset_disjoint_p, vbitset_and, vbitset_and_cmp, + vbitset_andn, vbitset_andn_cmp, vbitset_or, vbitset_or_cmp, + vbitset_xor, vbitset_xor_cmp, vbitset_and_or, vbitset_and_or_cmp, + vbitset_andn_or, vbitset_andn_or_cmp, vbitset_or_and, + vbitset_or_and_cmp, vbitset_copy): Likewise. + + * lib/libiberty.h: Do not include config.h; that's the includer's job. + Do not include . + (PARAMS): Define unconditionally for C89. + (ATTRIBUTE_NORETURN): Remove. + (ATTRIBUTE_UNUSED): Define unconditionally. + + Upgrade to 2003-06-08 libbitset, submitted by Michael Hayes in: + + * lib/Makefile.am (bitsets_sources): Add vbitset.c, vbitset.h. + * lib/vbitset.c, lib/vbitset.h: New files. + * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h, + lib/bitset_stats.c, lib/ebitset.c, lib/lbitset.c: Import + from libbitset. + + * doc/bison.texinfo (How Can I Reset the Parser): Renamed from + `How Can I Reset @code{yyparse}', since texinfo does not allow + arbitrary @ in node names. + + * m4/Makefile.am (EXTRA_DIST): Add the following files, which + shouldn't be needed according to the gettext 0.12.1 documentation + but which seem to be needed anyway: codeset.m4 glibc21.m4 + intdiv0.m4 inttypes-pri.m4 inttypes.m4 inttypes_h.m4 isc-posix.m4 + lcmessage.m4 nls.m4 po.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4. + * po/Makefile.in.in: Upgrade to gettext 0.12.1 version. + + * lib/.cvsignore: Add stdbool.h. + * m4/.cvsignore: Add nls.m4, po.m4. + + Upgrade to CVS gnulib. + * stdbool_.h: File renamed from stdbool.h.in. + * configure.ac (AM_STDBOOL_H): Invoke this instead of + AC_HEADER_STDBOOL. + (AM_GNU_GETTEXT): Put brackets around args, as latest manual suggests. + (AM_GNU_GETTEXT_VERSION): Update to 0.12.1. + * lib/Makefile.am (EXTRA_DIST): Add stdbool_.h. + (MOSTLYCLEANFILES): New var. + ($(libbison_a_OBJECTS)): Depend on $(STDBOOL_H). + (stdbool.h): New rule. + * lib/dirname.c, lib/dirname.h, lib/hash.c, lib/hash.h, + lib/malloc.c, lib/obstack.h, lib/quote.c, lib/realloc.c, + lib/strcasecmp.c, lib/xalloc.h, m4/alloca.m4, m4/onceonly.m4, + m4/quote.m4: Upgrade to today's gnulib. + + * tests/calc.at (AT_CHECK_CALC): New option EXPECTED-TO-FAIL. + (AT_CHECK_CALC_LALR1_CC): Use it, since the C++ LALR parser fails + the tests right now. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Ensure yylex and + yyerror are declared before use; C99 requires this. + +2003-06-09 Paul Hilfinger + + * data/glr.c (YYERROR): Update definition to reset yyerrState to 0 + first. + (yyrecoverSyntaxError): Correct the logic for setting and testing + yyerrState. + Correct comment on handling EOF. + Allow states with only a default reduction, rather than failing + (I can't quite reconstruct why these were not allowed before). + + Fixes to avoid problem that $-N rules in GLR parsers can cause + buffer overruns, corrupting state. + + * src/output.c (prepare_rules): Output max_left_semantic_context + definition. + * src/reader.h (max_left_semantic_context): New variable declaration. + * src/scan-gram.l (max_left_semantic_context): Define. + (handle_action_dollar): Update max_left_semantic_context. + * data/glr.c (YYMAXLEFT): New definition. + (yydoAction): Increase size of yyrhsVals by YYMAXLEFT. + (yyresolveAction): Ditto. + + Fixes to problems with location handling in GLR parsers reported by + Frank Heckenbach (2003/06/05). + + * data/glr.c (YYLTYPE): Make trivial if locations not used. + (YYRHSLOC): Add parentheses, and define only if locations used. + (YYLLOC_DEFAULT): Add parentheses, and give trivial definition if + locations not used. + (yyuserAction): Use YYLLOC_DEFAULT to set *yylocp. + (yydoAction): Remove redundant initialization of *yyvalp and *yylocp. + + * tests/cxx-type.at: Exercise location information; update tests + to differentiate output with and without locations. + Remove forward declarations of yylex and yyerror---caused errors + because default YYLTYPE not yet defined. + Change semantic actions to compute strings, rather than printing + them directly (to test proper passing of semantics values). Change + output to prefix notation and update test data and expected results. + (yylex): Track locations. + (stmtMerge): Return value rather than printing, and include arguments + in value. + +2003-06-03 Paul Eggert + + Avoid warnings generated by GCC 2.95.4 when Bison is + configured with --enable-gcc-warnings. + * data/lalr1.cc (yy::]b4_parser_class_name[::parse, + yy::]b4_parser_class_name[::translate_, + yy::Stack::operator[] (unsigned), + yy::Stack::operator[] (unsigned) const, + yy::Slice::operator[] (unsigned), + yy::Slice::operator[] (unsigned) const): + Rename local vars to avoid warnings. + * tests/glr-regression.at (Improper handling of embedded actions + and $-N in GLR parsers): Remove unused local variable from yylex. + * tests/regression.at (_AT_DATA_DANCER_Y): Declare yylex to take + (void) as arg when not pure, since we now assume C89 when building + Bison. Pacify GCC by using parameter. + +2003-06-02 Paul Eggert + + * data/lalr1.cc (yy::Position::lines, yy::Position::columns, + yy::Location::lines, yy::Location::columns): Rename arguments + to avoid shadowing; this removes a warning generated by GCC 3.3. + +2003-06-01 Paul Eggert + + Don't pass C-only warning optins (e.g., -Wmissing-declarations) + to g++, as GCC 3.3 complains if you do it. + * configure.ac (WARNING_CXXFLAGS): New subst. Set it to + everything that WARNING_CFLAGS has, except omit warnings + not suitable for C++. + (AC_PROG_CXX): Use this instead of AC_CHECK_PROGS([CXX], [g++]). + * tests/atlocal.in (CXXFLAGS): New var. + * tests/local.at (AT_COMPILE_CXX): Use it instead of CFLAGS. + + Fix a GLR parser bug I reported in February; see + . + The problem was that GLR parsers did not conform to the C standard, + because actions like { $1 = $2 + $3; } expanded to expressions + that invoked YYFILL in separate subexpressions, and YYFILL assigned + to a local variable. The C standard says that expressions + like (var = f ()) + (var = f ()) have undefined behavior. + Another problem was that GCC sometimes issues warnings that + yyfill and its parameters are unused. + + * data/glr.c (yyfillin): Renamed from the old yyfill. Mark + as possibly unused. + (yyfill): New function. + (YYFILL): Use it. + (yyuserAction): Change type of yynormal to bool, so that it matches + the new yyfill signature. Mark it as possibly unused. + + + Follow up on a bug I reported in February, where a Bison-generated + parser can loop. Provide a test case and a fix for yacc.c. I + don't have a fix for lalr1.cc or for glr.c, unfortunately. + The original bug report is in: + + + * data/yacc.c (YYERROR): Now just 'goto yyerrorlab', since the + macro's size was becoming unwieldy. + (yyerrlab): Do not discard an empty lookahead symbol, as this + might destroy garbage. + (yyerrorlab): New label, with the old contents of YYERROR, + plus the following change: pop the stack of rhs corresponding + to the production that invoked YYERROR. That is how Yacc + behaves, and POSIX requires this behavior. + (yyerrlab1): Use YYPOPSTACK instead of its definiens. + * tests/calc.at (_AT_DATA_CALC_Y): Include unistd.h if available. + Define 'alarm' to do nothing if unistd.h is not available. + Add a new rule "exp: '-' error;" to test the above change to + data/yacc.c. Use 'alarm' to abort any test taking longer than + 10 seconds, as it's probably looping. + (AT_CHECK_CALC): Test recovery from error in new grammar rule. + Also, the new yacc.c generates two fewer diagnostics for an + existing test. + +2003-05-24 Paul Eggert + + * data/glr.c (YYSTACKEXPANDABLE): Do not evaluate + YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined. + This fixes a problem reported by John Bowman when the Compaq/HP + Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM + -ansi -Wall -gall). + * data/yacc.c (union yyalloc): Likewise. + (YYCOPY): Do not evaluate __GNUC__ unless it is defined. + + Switch from 'int' to 'bool' where that makes sense. + + * lib/abitset.c (abitset_test, abitset_empty_p, abitset_equal_p, + abitset_subset_p, abitset_disjoint_p, abitset_and_cmp, + abitset_andn_cmp, abitset_or_cmp, abitset_xor_cmp, abitset_and_or, + abitset_and_or_cmp, abitset_andn_or_cmp, abitset_or_and_cmp): + Return or accept bool, not int. All callers changed. + * lib/bbitset.h: (bitset_toggle_, bitset_copy_, bitset_and_or_cmp_, + bitset_andn_or_cmp_, bitset_or_and_cmp_): Likewise. + * lib/bitset.c (bitset_only_set_p, bitset_print, bitset_toggle_, + bitset_copy_, bitset_op4_cmp, bitset_and_or_cmp_, bitset_andn_or_cmp_, + bitset_or_and_cmp_): Likewise. + * lib/bitset.h (bitset_test, bitset_only_set_p): Likewise. + * lib/bitset_stats.c (bitset_stats_print, bitset_stats_toggle, + bitset_stats_test, bitset_stats_empty_p, bitset_stats_disjoint_p, + bitset_stats_equal_p, bitset_stats_subset_p, bitset_stats_and_cmp, + bitset_stats_andn_cmp, bitset_stats_or_cmp, bitset_stats_xor_cmp, + bitset_stats_and_or_cmp, bitset_stats_andn_or_cmp, + bitset_stats_or_and_cmp): Likewise. + * lib/ebitset.c (ebitset_elt_zero_p, ebitset_equal_p, ebitset_copy_cmp, + ebitset_test, ebitset_empty_p, ebitset_subset_p, ebitset_disjoint_p, + ebitset_op3_cmp, ebitset_and_cmp, ebitset_andn_cmp, ebitset_or_cmp, + ebitset_xor_cmp): Likewise. + * lib/lbitset.c (lbitset_elt_zero_p, lbitset_equal_p, lbitset_copy_cmp, + lbitset_test, lbitset_empty_p, lbitset_subset_p, lbitset_disjoint_p, + lbitset_op3_cmp, lbitset_and_cmp, lbitset_andn_cmp, lbitset_or_cmp, + lbitset_xor_cmp): Likewise. + * lib/bbitset.h: Include . + (struct bitset_vtable): The following members now return bool, not + int: toggle, test, empty_p, disjoint_p, equal_p, subset_p, + and_cmp, andn_cmp, or_cmp, xor_cmp, and_or_cmp, andn_or_cmp, + or_and_cmp). + * src/conflicts.c (count_rr_conflicts): Likewise. + * lib/bitset_stats.h (bitset_stats_enabled): Now bool, not int. + All uses changed. + * lib/ebitset.c (ebitset_obstack_init): Likewise. + * lib/lbitset.c (lbitset_obstack_init): Likewise. + * src/getargs.c (debug_flag, defines_flag, locations_flag, + no_lines_flag, no_parser_flag, token_table_flag, yacc_flag, + graph_flag): Likewise. + * src/getargs.h (debug_flag, defines_flag, locations_flag, + no_lines_flag, no_parser_flag, token_table_flag, yacc_flag, + graph_flag): Likewise. + * src/output.c (error_verbose): Likewise. + * src/output.h (error_verbose): Likewise. + * src/reader.c (start_flag, typed): Likewise. + * src/reader.h (typed): Likewise. + * src/getargs.c (LOCATIONS_OPTION): New constant. + (long_options, getargs): Use it. + * src/lalr.c (build_relations): Use bool, not int. + * src/nullable.c (nullable_compute): Likewise. + * src/print.c (print_reductions): Likewise. + * src/tables.c (action_row, pack_vector): Likewise. + * src/muscle_tab.h (MUSCLE_INSERT_BOOL): New macro. + * src/output.c (prepare): Use it. + * src/output.c (token_definitions_output, + symbol_destructors_output, symbol_destructors_output): Use string, + not boolean integer, to keep track of whether to output separator. + * src/print_graph.c (print_core): Likewise. + * src/state.c (state_rule_lookaheads_print): Likewise. + + * config/install-sh: Sync from automake 1.7.5. + +2003-05-14 Paul Eggert + + * src/parse-gram.y (rules_or_grammar_declaration): Require a + semicolon after a grammar declaration, in the interest of possible + future changes to the Bison input language. + Do not allow a stray semicolon at the start of the grammar. + (rhses.1): Allow one or more semicolons after any rule, including + just before "|" as required by POSIX. + * tests/input.at (Torturing the Scanner): Add tests for ";|" in a + grammar. + +2003-05-14 Alexandre Duret-Lutz + + %parse-param support for lalr1.cc. + + * data/lalr1.cc (b4_parse_param_decl, b4_parse_param_cons, + b4_cc_constructor_calls, b4_cc_constructor_call, + b4_parse_param_vars, b4_cc_var_decls, b4_cc_var_decl): New m4 + definitions. + (yy::b4_parser_class_name::b4_parser_class_name): Take extra + parse-param arguments. + (yy::b4_parser_class_name): Declare instance variables to + hold parse-param arguments. + * tests/calc.at: s/value/semantic_value/ because value clashes + with a member of yy::b4_parser_class_name. Adjust C++ code + to handle %parse-param. Enable %parse-param test in C++. + +2003-05-12 Paul Eggert + + * doc/bison.texinfo (How Can I Reset @code{yyparse}): Reword the + English a bit. Fix fclose typo. Change "const char" to "char + const", and use ANSI C rather than K&R for "main". Suggest + YY_FLUSH_BUFFER over yyrestart (as that is what Flex recommends) + and suggest yy_switch_to_buffer. + +2003-05-05 Paul Eggert + + * lib/bitset.h (__INT_TO_PTR): Define to a value that presumes + C89. This avoids a diagnostic on compilers that define __STDC__ + to 0, fixing a problem with Tru64 cc reported by Martin Mokrejs in + . + +2003-05-03 Paul Eggert + + * lib/bitset.h (BITSET_FOR_EACH, BITSET_FOR_EACH_REVERSE): + Do not overrun array bounds. + This should fix a bug reported today by Olatunji Oluwabukunmi in + . + +2003-04-29 Akim Demaille + + * src/gram.h, src/gram.c (pure_parser, glr_parser): Move to... + * src/getargs.c, src/getargs.h: here, as bool, not int. + (nondeterministic_parser): New. + * src/parse-gram.y, src/scan-gram.l: Support + %nondeterministic-parser. + * src/output.c (prepare): Use nondeterministic_parser instead + of glr_parser where appropriate. + * src/tables.c (conflict_row, action_row, save_row) + (token_actions, token_actions, pack_vector): Ditto. + +2003-04-29 Akim Demaille + + * doc/bison.texinfo (C++ Parsers, Implementing Loops): New. + +2003-04-29 Akim Demaille + + * tests/calc.at: Also test yacc.c and glr.c (but not lalr1.cc yet) + with %pure-parser and %locations to exercise the patch from Yakov + Markovitch below. + +2003-04-28 Tim Van Holder + + * data/yacc.c: (b4_lex_param): Corrected for the case where + %lex-param is provided and %pure-parser isn't. + +2003-04-27 Paul Eggert + + Avoid gcc -Wundef warnings reported by Gerald Pfeifer in + . + * data/yacc.c (YYSTACK_ALLOC): Don't evaluate YYSTACK_USE_ALLOCA + if it is not defined. + (YYMAXDEPTH): Don't evaluate YYMAXDEPTH if it is not defined. + +2003-04-26 Paul Eggert + + * data/lalr1.cc (yy::Parser::pact_ninf_, yy::Parser::table_ninf_): + Declare to be of type suitable for the ninf value itself, not of + type suitable for the corresponding table, since the latter might + be unsigned but the ninf value might be negative. This fixes a + bug reported by Alexandre Duret-Lutz in + . + + * configure.ac (AC_FUNC_ERROR_AT_LINE): Remove, since gl_ERROR + invokes it. We shouldn't invoke it twice because it will attempt + to put error.o in the archive twice. This fixes a glitch reported + by Martin Mokrejs in + . + +2003-04-21 Paul Eggert + + * m4/error.m4: Update from Bruno Haible's 2003-04-14 patch + to gnulib. + +2003-04-21 Yakov Markovitch + + * data/glr.c (yyexpandGLRStack) [!YYSTACKEXPANDABLE]: + Fix obvious typo that results in uncompilable GLR parsers + when both %pure-parser and %locations are used. (trivial change) + +2003-04-17 Paul Eggert + + * src/scan-gram.l: Add %option nounput, since we no longer use unput. + (unexpected_eof): Renamed from unexpected_end_of_file, for brevity. + Do not insert the expected token via unput, as this runs afoul + of a POSIX-compatibility bug in flex 2.5.31. + All uses changed to BEGIN the parent state, + since we no longer insert the expected token via unput. + * tests/regression.at (Invalid inputs): Remove cascaded diagnostic + that is no longer emitted after the above change. + + * src/conflicts.c (set_conflicts): Resolve all conflicts, not just + the first one. This change is from Paul Hilfinger, and it fixes + regression reported by Werner Lemberg in + . + + (resolve_sr_conflict): Don't invoke state_errs_set + unless one or more tokens have been explicitly made errors. + Otherwise, the above change causes Bison to abort. + + * tests/existing.at (GNU pic Grammar): New test case, taken from + Lemberg's email. + +2003-03-31 Akim Demaille + + * doc/Makefile.am (AM_MAKEINFOFLAGS): Don't split the info file. + +2003-03-31 Akim Demaille + + * src/output.c (prepare_symbols): Avoid trailing spaces in the + output. + +2003-03-31 Akim Demaille + + * doc/bison.texinfo (Strings are Destroyed): s/losses/loses/. + From Paul Hilfinger. + +2003-03-29 Akim Demaille + + * m4/error.m4: Do not put under dynamic conditions some code which + expansion is under static control. + +2003-03-29 Akim Demaille + + * doc/bison.texinfo (How Can I Reset @code{yyparse}): New. + +2003-03-29 Akim Demaille + + * doc/bison.texinfo (Strings are Destroyed): New. + +2003-03-13 Paul Eggert + + * .cvsignore: Add configure.lineno. + * src/.cvsignore: Add yacc. + * tests/.cvsignore: Add testsuite.log. + * doc/fdl.texi: Sync with latest FSF version. + +2003-03-12 Paul Eggert + + * scan-gram.l (YY_USER_INIT): Initialize code_start, too. + (<>, <>): Set *loc to the scanner + cursor, instead of leaving it undefined. This fixes a bug + reported by Tim Van Holder in + . + * tests/input.at (Torturing the Scanner): Test the scanner on + an empty input file, which was Tim Van Holder's test case. + + * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): When checking whether + can be included, include sys/time.h and + sys/times.h first, if available. This works around the SunOS + 4.1.4 porting bug reported by Bruce Becker in + . + + * m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't + AC_CHECK_HEADERS([sys/wait.h]), as this interferes with + AC_HEADER_SYS_WAIT. + + Merge changes from gnulib. This was prompted because the CVS + snapshot didn't build on Solaris 7 due to strnlen problems. + + These changes need to be merged back into gnulib: + * lib/hash.c: Include unconditionally. + * m4/onceonly.m4 (m4_quote): New macro. + (AC_CHECK_HEADERS_ONCE, AC_CHECK_FUNCS_ONCE, AC_CHECK_DECLS_ONCE): + Quote AC_FOREACH variable-expansions properly. + The 2003-01-03 obstack.h change also needs merging. + {end of changes requiring merging} + + * lib/stdbool.h.in, m4/alloca.m4, m4/dirname.m4, m4/dos.m4, + m4/getopt.m4, m4/hash.m4, m4/malloc.m4, m4/memchr.m4, + m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/quote.m4, + m4/quotearg.m4, m4/realloc.m4, m4/stpcpy.m4, m4/strnlen.m4, + m4/strtol.m4, m4/strtoul.m4, m4/unlocked-io.m4, m4/xalloc.m4: + New files, imported from gnulib. + * m4/Makefile.am (EXTRA_DIST): Add the new m4/*.m4 files mentioned + above. + + * lib/mbswidth.c, m4/error.m4, m4/mbrtowc.m4, m4/mbswidth.m4, + m4/memcmp.m4, m4/prereq.m4, m4/stdbool.m4: Update to current + gnulib sources. + + * configure.ac (gl_DIRNAME, gl_GETOPT, gl_HASH, gl_QUOTE, gl_XALLOC): + Add. + (gl_ERROR): New, replacing jm_PREREQ_ERROR. + (gl_FUNC_ALLOCA): New, replacing AC_FUNC_ALLOCA. + (gl_FUNC_STPCPY): New, replacing AC_REPLACE_FUNCS(stpcpy). + (gl_FUNC_STRNLEN): New, replacing AC_FUNC_STRNLEN. + (gl_MBSWIDTH): New, replacing jm_PREREQ_MBSWIDTH. + (gl_OBSTACK): New, replacing AC_FUNC_OBSTACK. + (gl_QUOTEARG): New, replacing jm_PREREQ_QUOTEARG. + (jm_FUNC_GLIBC_UNLOCKED_IO, gl_FUNC_STPCPY, gl_FUNC_STRTOL): New. + (jm_FUNC_MALLOC): New, replacing AC_FUNC_MALLOC. + (jm_FUNC_REALLOC): New, replacing AC_FUNC_REALLOC. + (jm_PREREQ_ARGMATCH): Remove. + (AC_REPLACE_FUNCS): Remove memchr, memrchr, stpcpy, strtol, strtoul. + * lib/Makefile.am (libbison_a_SOURCES): Add argmatch.c, argmatch.h. + + * src/system.h: Include unconditionally. + + * lib/bbitset.h: Include unconditionally. We have been + assuming at least C89 in the bitset code for some time now. + +2003-03-03 Akim Demaille + + * ro.po: New. + +2003-03-02 Akim Demaille + + * doc/bison.texinfo (Table of Symbols): Reactivate the + documentation for %lex-param, and %parse-param. + +2003-03-02 Akim Demaille + + * data/yacc.c, data/glr.c, data/lal1.cc: Use similar code to + generate verbose error messages. + Use the number of tokens as an upper bound in yytname, as it + cannot be a non terminal. + +2003-03-02 Akim Demaille + + * tests/regression.at (_AT_DATA_DANCER_Y): Fix the expected error + message. + +2003-03-02 Akim Demaille + + * tests/regression.at (_AT_DATA_DANCER_Y, AT_CHECK_DANCER): New. + Use them to exercise yycheck overrun. + Based on Andrew Suffield's grammar. + +2003-03-02 Akim Demaille + + Create tests/local.at for Bison generic testing macros. + + * tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Move to... + * tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS): + This new file. + * tests/calc.at (AT_CHECK_CALC): Adjust. + * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR) + (AT_COMPILE, AT_COMPILE_CXX, AT_PARSER_CHECK): Move to... + * tests/local.at: here. + (AT_COMPILE_CXX): Tags the tests using it as c++. + Ignore the test if CXX is not functional. + +2003-03-01 Paul Eggert + + * src/scan-gram.l (code_start): Initialize it to scanner_cursor, + not loc->end, since loc->end might contain garbage and this leads + to undefined behavior on some platforms. + (id_loc, token_start): Use (IF_LINTed) initial values that do not + depend on *loc, so that the reader doesn't give the the false + impression that *loc is initialized. + ("%%"): Do not bother setting code_start, since its value + does not survive the return. + +2003-03-01 Akim Demaille + + * src/scan-gram.l (code_start): Always initialize it when entering + into yylex, as SC_EPILOGUE is activated *before* the corresponding + yylex invocation. An alternative would be making it static, but + then it starts with the second %%'s beginning, instead of its end. + +2003-02-28 Paul Eggert + + * lib/mbswidth.c: Include before "mbswidth.h", to work + around a UnixWare 7.1.1 porting bug reported by John Hughes in + . + +2003-02-26 Paul Eggert + + * README: Mention compiler bug in Sun Forte Developer 6 update 2. + Remove Sequent/Pyramid discussion (nobody uses them any more). + Merge VMS and MS-DOS discussion; these ports may well be dead + but let's keep mentioning them for now. Put <> around email + addresses. Add copyright notice. + +2003-02-24 Paul Eggert + + * data/glr.c (yy_reduce_print): yylineno -> yylno, + to avoid collision with flex use of yylineno. + Problem reported by Bruce Lilly in + . + * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Likewise. + * data/yacc.c (yy_reduce_print): Likewise. + + * config/depcomp: Sync with Automake 1.7.3. + +2003-02-21 Akim Demaille + + * data/lalr1.cc: Use temporary variables instead of casts to + change integer types. + Suggested by Paul Eggert. + +2003-02-21 Akim Demaille + + * doc/bison.texinfo: Use "location" consistently to refer to @n, + to avoid confusions with lalr1.cc's notion of Position. + Suggested by Paul Eggert. + +2003-02-20 Akim Demaille + + * data/lalr1.cc (position.hh): Make sure "columns" never pushes + before initial_columns. + (location.hh): Use consistent variable names when defining the + operator<<. + Use "last" so that we subtract from Positions, not from unsigned. + +2003-02-20 Akim Demaille + + * data/lalr1.cc (position.hh): New subfile, including the extended + and Doxygen'ed documentation of class Position. + (location.hh): Use it. + Document a` la Doxygen. + With the help of Benoit Perrot. + +2003-02-20 Akim Demaille + + * tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Define + AT_YACC_IF. + Redefine AT_YYERROR_SEES_LOC_IF using it. + (_AT_DATA_CALC_Y): Don't declare yyerror when lalr1.cc, as it is + not defined. + Don't use the location in yy::Parser::error_ and + yy::Parser::print_ when not %locations. + Activate more lalr1.cc tests. + +2003-02-19 Akim Demaille + + * data/lalr1.cc: When displaying a line number, be sure to make it + an int. + +2003-02-19 Akim Demaille + + * data/lalr1.cc (b4_stack_depth_init, yy::Parser::initdepth_): + Remove, useless. + (YYABORT, YYACCEPT, YYERROR): New. + * tests/calc.at: Renable the lalr1.cc test. + +2003-02-19 Akim Demaille + + * tests/calc.at (AT_CHECK_CALC): Check different scenarios of + error recovery, mixing with/without pops and discarding of the + lookahead. + Exercise YYERROR. + Disable the lalr1.cc tests as currently it doesn't support YYERROR. + 2003-02-17 Paul Eggert * tests/atlocal.in (LDFLAGS, LIBS): New vars. @@ -48,7 +1075,7 @@ these CPP macros with the m4 macros new defined by... (AT_CHECK_PUSHDEFS): this, i.e.: (AT_LALR1_CC_IF, AT_PURE_LEX_IF, AT_LOC, AT_VAL, AT_LEX_FORMALS) - (AT_LEX_ARGS, AT_USE_LEX_ARGS, AT_LEX_PRE_FORMALSm AT_LEX_PRE_ARGS) + (AT_LEX_ARGS, AT_USE_LEX_ARGS, AT_LEX_PRE_FORMALS, AT_LEX_PRE_ARGS) New macros. (AT_CHECK_POPDEFS): Undefine them. (AT_CHECK_CALC_LALR1_CC): New. @@ -4132,7 +5159,7 @@ 2002-06-11 Akim Demaille - * src/reader.c (parse_action): Don't store directly into the + * src/reader.c (parse_action): Don't store directly into the rule's action member: return the action as a string. Don't require `rule_length' as an argument: compute it. (grammar_current_rule_symbol_append) @@ -6689,7 +7716,7 @@ * tests/atlocal.in (CPPFLAGS): Do not leave a space between -I and its argument. - Reported by Peter Hámorský. + Reported by Peter Hamorsky. 2001-12-05 Akim Demaille @@ -10891,7 +11918,7 @@ ----- Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler.