X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/886b69d1973c695205bb176e90d9f8e848edf535..dca81a78f8db18a89fb207df41679c41ec222a90:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 8ce2b106..e246ae1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2698 @@ +2004-08-07 Florian Krohm + + * src/scan-gram.l (handle_syncline): Use uniqstr_new not xstrdup. + + * src/location.h (struct): The file member is a uniqstr. + (equal_boundaries): Use UNIQSTR_EQ for comparison. + +2004-07-22 Paul Eggert + + Fix bug with non-%union parsers that have printers or destructors, + which led to a Bison core dump. Reported by Peter Fales in + . + + * data/c.m4 (b4_symbol_actions): Don't assume %union was used. + * data/lalr1.cc (yystype) [defined YYSTYPE]: Define to YYSTYPE, + not to our own type. + * src/output.c (symbol_destructors_output, symbol_printers_output): + Don't assume %union. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR, + AT_CHECK_PRINTER_AND_DESTRUCTOR): New argument + UNION-FLAG. All callers changed. + (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't assume %union. + Use type char, not unsigned int, when declaring an array of char; + this lets us remove a cast. + (Printers and Destructors): Add non-%union test cases. + +2004-06-21 Paul Eggert + + * doc/bison.texinfo: Minor editorial changes, mostly to the new + GLR writeups. E.g., avoid frenchspacing and the future tense, + change "lookahead" to "look-ahead", and change "wrt" to "with + respect to". + +2004-06-21 Paul Hilfinger + + * doc/bison.texinfo (Merging GLR Parses, Compiler Requirements): + New sections, split off from the GLR Parsers section. Put the new + Simple GLR Parser near the start of the GLR section, for clarity. + Rewrite connective text. + +2004-06-21 Frank Heckenbach + + * doc/bison.texinfo (Simple GLR Parsers): New section. + +2004-06-21 Paul Eggert + + * NEWS, TODO, doc/bison.texinfo: + Use "look-ahead" instead of "lookahead", to be consistent. + * REFERENCES: Fix incorrect reference to DeRemer and Pennello, + while we're fixing "look-ahead". + * src/conflicts.c (shift_set): Renamed from shiftset. + (look_ahead_set): Renamed from lookaheadset. + * src/print.c: Likewise. + * src/getargs.c (report_args): Add "look-ahead" as the new canonical + name for "lookahead". + (report_types, usage): Likewise. + * src/getargs.h (report_look_ahead_tokens): Renamed from + report_lookaheads. + * src/lalr.c (compute_look_ahead_tokens): Renamed from + compute_lookaheads. + (state_look_ahead_tokens_count): Renamed from state_lookaheads_count. + (look_ahead_tokens_print): Renamed from lookaheads_print. + * src/state.c (state_rule_look_ahead_tokens_print): Renamed from + state_rule_lookaheads_print. + * src/state.h: Likewise. + (reductions.look_ahead_tokens): Renamed from lookaheads. + * tests/torture.at (AT_DATA_LOOK_AHEAD_TOKENS_GRAMMAR): Renamed from + AT_DATA_LOOKAHEADS_GRAMMAR. + +2004-06-03 Paul Eggert + + * README: Update location of patched M4 distribution. + +2004-05-30 Albert Chin-A-Young + + Don't assume the C++ compiler takes the same arguments as the C compiler + (trivial change). + * configure.ac (O0CXXFLAGS): New var. + * tests/atlocal.in (CXXFLAGS): Use it. + +2004-05-29 Paul Eggert + + Fix some "make check" problems with C++ reported by + Albert Chin-A-Young for Tru64 C++ in this thread: + http://lists.gnu.org/archive/html/bug-bison/2004-05/msg00049.html + + * m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check for std::cerr. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): + Output to a .cc file for C++, not to a .c file. + * tests/calc.at (AT_CHECK_CALC): Likewise. + * tests/regression.at (AT_CHECK_DANCER): Likewise. + * tests/local.at (AT_COMPILE_CXX): Default to OUTPUT.cc, not OUTPUT.c. + +2004-05-28 Albert Chin-A-Young + + * tests/calc.at, tests/actions.at: Workaround for SGI + C++ compiler. (trivial change) + +2004-05-27 Paul Eggert + + Spent a few hours checking out which prerequisite versions the + current sources actually require. I went all the way back to + Gettext 0.10.40, Automake 1.4, and Autoconf 2.57 and investigated + a seemingly endless set of combinations of versions more recent + than that. The bottom line is that the current sources require + fairly recent versions of the build tools, and it'll be some work + to change this. + * configure.ac (AC_PREREQ): Increase from 2.58 to 2.59. + (AM_INIT_AUTOMAKE): Increase from 1.7 to 1.8. + (AM_GNU_GETTEXT_VERSION): Increase from 0.11.5 to 0.12. + Add comments explaining why those particular versions are + currently needed. + + * src/parse-gram.y (lloc_default): Rewrite to avoid compiler bug + in SGI MIPSpro 7.4.1m. Problem reported by Albert Chin-A-Young in + . + + * configure.ac (AC_PREREQ): Bump to 2.58, since 2.57 doesn't work + (it fails with a Autoconf-without-aclocal-m4 diagnostic). + +2004-05-26 Paul Eggert + + * configure.ac (AM_GNU_GETTEXT_VERSION): Lower it from 0.14.1 to + 0.11.5. Suggested by Bruno Haible. + * bootstrap: Remove gettext version checking. + + * doc/bison.texinfo (Decl Summary): Also mention that %union + can depend on prerequisite types. Problem reported by Tim + Van Holder. + +2004-05-25 Paul Eggert + + * README: Mention GNU m4 1.4 bugs and Akim's patched version. + * README-alpha: Don't tell people not to package this. + + * bootstrap: Don't assume $(...) works; use `...` instead. + Problem reported by Paul Hilfinger. Also, diagnose non-GNU + gettext better. + + * doc/bison.texinfo (Decl Summary, Bison Options): Clarify what's + put into the -d output file, and mention what to do if YYSTYPE is + defined as a macro. + +2004-05-24 Paul Eggert + + Undo change made earlier today: it caused autopoint to not bring + in ABOUT-NLS. Ouch. Instead, substitute our own diagnostic for + autopoint's. + + * bootstrap: Check that gettext version matches what's in + configure.ac. Warn users to ignore robots.txt ERROR 404. + * bootstrap: Undo today's earlier change (logged below). + * configure.ac (AM_GNU_GETTEXT_VERSION): Likewise. + + The gettext version checking is causing more trouble than it's + curing; remove it. Problem reported by Paul Hilfinger. + + * bootstrap: Issue a warning that one can expect a message + 'AM_GNU_GETTEXT is used, but not AM_GNU_GETTEXT_VERSION'. + * configure.ac (AM_GNU_GETTEXT_VERSION): Remove. + +2004-05-23 Paul Eggert + + Ensure that the C++ compiler used for testing actually works on a + simple test program; if not, skip the C++-related tests. Problem + reported by Vin Shelton in: + http://mail.gnu.org/archive/html/bug-bison/2004-05/msg00026.html + + * m4/cxx.m4: New file. + * configure.ac (BISON_TEST_FOR_WORKING_CXX_COMPILER): Add. + * tests/atlocal.in (BISON_CXX_WORKS): Add. + * tests/local.at (AT_COMPILE_CXX): Use it. + +2004-05-21 Paul Eggert + + * data/glr.c (yylloc): Output this macro even if locations are not + being generated, as the GLR parser needs it even in that case. + Problem reported by Troy A. Johnson + . + + * configure.ac (AC_INIT): Update to 1.875e. + +2004-05-21 Paul Eggert + + * NEWS: Version 1.875d. + * configure.ac (AC_INIT): Likewise. + * src/parse-gram.c, src/parse-gram.h: Regenerate with 1.875d. + + * configure.ac (--enable-gcc-warnings): Do not enable -Wshadow, + -Wmissing-prototypes, or -Wstrict-prototypes for C++. The current + lalr1.cc runs afoul of the first, and the last two are no longer + supported by GCC 3.4.0. + * README: Mention GNU m4 1.4 or later; mention m4 patches. + * HACKING: Use ./bootstrap, not "make update" to import foreign files. + +2004-05-06 Paul Eggert + + * src/muscle_tab.c (hash_muscle): Accept and return size_t, not + unsigned int, for compatibility with latest gnulib hash module. + * src/state.c (state_hash, state_hasher): Likewise. + * src/symtab.c (hash_symbol, hash_symbol_hasher): Likewise. + * src/uniqstr.c (hash_uniqstr): Likewise. + +2004-05-03 Paul Eggert + + * NEWS: Unescaped newlines are no longer allowed in char & strings. + + * src/scan-gram.l (): Reject unescaped newlines in + character and string literals. + (unexpected_end): New function. + (unexpected_eof): Use it. + (unexpected_newline): New function. + (): Coalesce duplicate + actions. + + * NEWS: Document %expect-rr. + + * bootstrap (--gnulib-srcdir=*, --cvs-user=*): + Fix typo by replacing $1 with $option. + Remove more 'intl'-related files. + Don't DEFUN AM_INTL_SUBDIR twice. + + * lib/.cvsignore: Add strndup.h. Remove memchr.c, memcmp.c, + memrchr.c, strcasecmp.c, strchr.c, strrchr.c, strspn.c, strtol.c, + strtoul.c. + * m4/.cvsignore: Add exitfail.m4, extensions.m4, gnulib.m4, + hard-locale.m4, mbstate_t.m4, strerror_r.m4, strndup.m4, + xstrndup.m4. Remove glibc21.m4, intdiv0.m4, inttypes-pri.m4, + inttypes.m4, inttypes_h.m4, isc-posix.m4, lcmessage.m4, + stdint_h.m4, uintmax_t.m4, ulonglong.m4. + * src/.cvsignore: Add *.output. + + * src/parse-gram.y: Put copyright notice inside %{ %} so it + gets copied to the output file. + +2004-04-28 Paul Eggert + + Get files from the gnulib and po repositories, instead of relying + on them being in our CVS. Upgrade to latest versions of gnulib + and Automake. + + * Makefile.am (SUBDIRS): Remove m4; Automake now does m4. + * bootstrap: Bootstrap from gnulib and po repositories. + Much of this code was stolen from GNU diff and GNU tar's bootstrap. + * README-cvs: Document these changes. Remove version numbers from + mentions of build tools, since they change so often. Mention Flex. + + * configure.ac (AC_CONFIG_MACRO_DIR): Add, with m4 as arg. + (gl_USE_SYSTEM_EXTENSIONS): Add. + (AC_GNU_SOURCE, AC_AIX, AC_MINIX): + Remove; no longer needed, as gl_USE_SYSTEM_EXTENSIONS + does this for us. + (AC_ISC_POSIX): Remove; we no longer support this + ancient OS, as it gets in the way of latest Autoconf & gnulib. + (AC_HEADER_STDC): Remove: we now assume C89 or better. + (AC_CHECK_HEADERS_ONCE): Use instead of AC_CHECK_HEADERS. + Do not check for C89 headers, except for locale.h which is used + by the Yacc library and must port to K&R hosts. + (AC_CHECK_FUNCS_ONCE): Use instead of AC_CHECK_FUNCS. + Do not check for C89 functions, except for setlocale which is + used by the Yacc library. + (AC_CHECK_DECLS, AC_REPLACE_FUNCS): Remove; no longer needed. + (gl_DIRNAME, gl_ERROR, gl_FUNC_ALLOCA, gl_FUNC_MEMCHR, + gl_FUNC_MEMRCHR, gl_FUNC_STPCPY, gl_FUNC_STRNLEN, gl_FUNC_STRTOL, + gl_GETOPT, gl_HASH, gl_MBSWIDTH, gl_OBSTACK, gl_QUOTE, + gl_QUOTEARG, gl_XALLOC, jm_FUNC_GLIBC_UNLOCKED_IO, jm_FUNC_MALLOC, + AM_GNU_GETTEXT): Remove; now done by: + (GNULIB_AUTOCONF_SNIPPET): Add. "bootstrap" builds this for us. + (AC_CONFIG_FILES): Remove m4/Makefile, as Automake now does this + for us. + + * lib/Makefile.am: Include gnulib.mk, built for us by "bootstrap". + (BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): + Define to empty, as gnulib.mk will do the rest for us. + ($(libbison_a_OBJECTS), stdbool.h): Remove, as gnulib.mk does this + for us. + (libbison_a_SOURCES): Define to $(lib_SOURCES) now. + (lib_SOURCES): New symbol, containing only the non-gnulib libs. + + * src/files.c: Include gnulib's xstrndup.h. + + * src/system.h (MALLOC): Use xnmalloc, for better overflow checking. + (REALLOC): Use xnrealloc, for likewise. + (xstrndup, stpcpy): Remove decls, as gnulib does this for us now. + (strnlen, memrchr): Remove decls; functions no longer used. + Include . + + * config/depcomp, config/install-sh, lib/alloca.c, lib/argmatch.c, + lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h, + lib/error.c, lib/error.h, lib/getopt.c, lib/getopt.h, + lib/getopt1.c, lib/gettext.h, lib/hash.c, lib/hash.h, + lib/malloc.c, lib/mbswidth.c, lib/mbswidth.h, lib/memchr.c, + lib/memcmp.c, lib/memrchr.c, lib/obstack.c, lib/obstack.h, + lib/quote.c, lib/quote.h, lib/quotearg.c, lib/quotearg.h, + lib/realloc.c, lib/stdbool_.h, lib/stpcpy.c, lib/strcasecmp.c, + lib/strchr.c, lib/strncasecmp.c, lib/strnlen.c, lib/strrchr.c, + lib/strspn.c, lib/strtol.c, lib/strtoul.c, lib/unlocked-io.h, + lib/xalloc.h, lib/xmalloc.c, lib/xstrdup.c, lib/xstrndup.c, + m4/Makefile.am, m4/alloca.m4, m4/dirname.m4, m4/dos.m4, + m4/error.m4, m4/getopt.m4, m4/hash.m4, m4/malloc.m4, + m4/mbrtowc.m4, m4/mbswidth.m4, m4/memchr.m4, m4/memcmp.m4, + m4/memrchr.m4, m4/obstack.m4, m4/onceonly.m4, m4/prereq.m4, + m4/quote.m4, m4/quotearg.m4, m4/realloc.m4, m4/stdbool.m4, + m4/stpcpy.m4, m4/strnlen.m4, m4/strtol.m4, m4/strtoul.m4, + m4/unlocked-io.m4, m4/xalloc.m4, po/LINGUAS, po/Makefile.in.in, + po/Makevars, po/da.po, po/de.po, po/es.po, po/et.po, po/fr.po, + po/hr.po, po/id.po, po/it.po, po/ja.po, po/ms.po, po/nl.po, + po/pt_BR.po, po/ro.po, po/ru.po, po/sv.po, po/tr.po: + Remove, as these files are now generated automatically + by bootstrap or automake. + + * po/ChangeLog: Remove: all but one entry was a duplicate + of this file, and I moved that 2000-11-02 entry here. + + * config/.cvsignore: Add Makefile, depcomp, install-sh. + * lib/.cvsignore: Add alloca.c, alloca.h, alloca_.h, argmatch.c, + argmatch.h, basename.c, dirname.c, dirname.h, error.c, error.h, + exit.h, exitfail.c, exitfail.h, getopt.c, getopt.h, getopt1.c, + getopt_int.h, gettext.h, gnulib.mk, hard-locale.c, hard-locale.h, + hash.c, hash.h, malloc.c, mbswidth.c, mbswidth.h, memchr.c, + memcmp.c, memrchr.c, obstack.c, obstack.h, quote.c, quote.h, + quotearg.c, quotearg.h, realloc.c, stdbool_.h, stpcpy.c, stpcpy.h, + strcasecmp.c, strchr.c, stripslash.c, strncasecmp.c, strndup.c, + strnlen.c, strrchr.c, strspn.c, strtol.c, strtoul.c, + unlocked-io.h, xalloc.h, xmalloc.c, xstrdup.c, xstrndup.c, + xstrndup.h. + * m4/.cvsignore: Remove Makefile, Makefile.in. Add alloca.m4, + dirname.m4, dos.m4, error.m4, getopt.m4, hash.m4, mbrtowc.m4, + mbswidth.m4, obstack.m4, onceonly.m4, quote.m4, quotearg.m4, + stdbool.m4, stpcpy.m4, strnlen.m4, unlocked-io.m4, xalloc.m4. + * po/.cvsignore: Add *.po, LINGUAS, Makefile.in.in, Makevars. + * src/.cvsignore: Remove *_.c. + + + * Makefile.maint (GZIP_ENV): Don't use --rsyncable if gzip doesn't + support it. (The latest stable gzip doesn't.) + +2004-04-27 Paul Eggert + + * data/lalr1.cc (Parser::stos_) [! YYDEBUG]: Define even in this + case, as stos_ is now used by destructors due to the 2004-02-09 + change. + + Remove more K&R C support. + * lib/libiberty.y (PARAMS): Remove. All uses removed. + * lib/subpipe.c (errno): Remove decl. + Include unconditionally. + (EXIT_FAILURE): Remove macro. + * src/complain.c (vfprintf, strerror): Remove. + * src/system.h: Include limits.h, stdlib.h, string.h, locale.h + unconditionally. + (EXIT_FAILURE, EXIT_SUCCESS, setlocale): Remove defns. + Use latest Autoconf recommendations for including inttypes.h, stdint.h. + (strchr, strspn, memchr): Remove decls. + * tests/calc.at (_AT_DATA_CALC_Y): Include stdlib.h, string.h + unconditionally. Do not declare perror. + * tests/conflicts.at (%nonassoc and eof): Include stdlib.h + unconditionally. + + * src/complain.c (_): Remove useless defn, as system.h defines this. + + * lib/bitset.h (__INT_TO_PTR): Remove; workaround no longer needed + with latest obstack.h. + * lib/ebitset.c (ebitset_elt_alloc): Don't bother to cast args + to procedure types, as obstack.h now does that for us. + * lib/lbitset.c (lbitset_elt_alloc): Likewise. + + * lib/subpipe.h [HAVE_SYS_TYPES_H]: Include , + so that this include file can stand alone. + * lib/subpipe.c: Do not include , as subpipe.h + does this now. Include subpipe.h first after config.h, to + test whether it can stand alone. + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Don't + declare yyerror when using lalr.cc, as GCC 3.4.0 warns about the + unused declaration. + + * tests/synclines.at (%union synch line): Put a dummy member in + the union, because empty unions aren't allowed in C. Caught + by GCC 3.4.0. + +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. + * tests/testsuite.at (AT_COMPILE): Use them. + This fixes the testsuite problem reported by Robert Lentz in + . + +2003-02-12 Paul Eggert + + * data/yacc.c (yyerrlab) [YYERROR_VERBOSE]: + Avoid subscript error in yycheck. Bug reported by Andrew Suffield in + . + * data/glr.c (yyreportSyntaxError) [YYERROR_VERBOSE]: Likewise. + Check for malloc failure, for consistency with yacc.c. + (yytname_size): Remove, for consistency with yacc.c. + + The bug still remains in data/lalr1.cc, as I didn't have time + to fix it there. + +2003-02-06 Akim Demaille + + * configure.ac (GXX): Rename as... + (CXX): this, to keep the original Autoconf semantics. + Require 2.57. + * data/lalr1.cc: Fix b4_copyright invocations. + If YYDEBUG is not defined, don't depend upon name_ being defined. + (location.hh): Include string and iostream. + (Position::filename): New member. + (Position::Position ()): New. + (operator<< (Position)): New. + (operator- (Position, int)): New. + (Location::first, Location::last): Rename as... + (Location::begin, Location::end): these, to mock the conventional + iterator names. + (operator<< (Location)): New. + * tests/atlocal.in (CXX): New. + * tests/testsuite.at (AT_COMPILE_CXX): New. + * tests/calc.at (_AT_DATA_CALC_Y): Adjust yyerror to report the + locations in a more synthetic way. + (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF is positive if + lalr1.cc is used. + Adjust the C locations to match those from Emacs: first column is + column 0. + Change all the expected results. + Conform to the GCS: simplify the locations when applicable. + (LOC, VAL, YYLLOC_FORMAL, YYLLOC_ARG, USE_YYLLOC, LEX_FORMALS) + (LEX_ARGS, USE_LEX_ARGS, LEX_PRE_FORMALS, LEX_PRE_ARGS): Replace + 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_FORMALS, AT_LEX_PRE_ARGS) + New macros. + (AT_CHECK_POPDEFS): Undefine them. + (AT_CHECK_CALC_LALR1_CC): New. + Use it for the first lalr1.cc test. + +2003-02-04 Akim Demaille + + * data/lalr1.cc (YYLLOC_DEFAULT): Fix its definition: be based on + Location as is defined. + +2003-02-04 Akim Demaille + + * data/lalr1.cc: If YYDEBUG is not defined, don't depend upon + name_ being defined. + +2003-02-03 Paul Eggert + + * src/gram.h (start_symbol): Remove unused decl. + + Use more-consistent naming conventions for local vars. + + * src/derives.c (derives_compute): Change type of local var from + int to rule_number. + * src/gram.c (grammar_rules_partial_print): Likewise. + * src/print.c (print_core): Likewise. + * src/reduce.c (reduce_grammar_tables): Likewise. + + * src/gram.c (grammar_dump): Change name of item_number * + local var from r to rp. + * src/nullable.c (nullable_compute): Likewise. + + * src/gram.h (ISTOKEN, ISVAR): Use i, not s, for int var. + + * src/gram.h (symbol_number_as_item_number): Use sym, not s, + for symbol or symbol_number var. + * src/reader.c (grammar_start_symbol_set): Likewise. + * src/reader.h (grammar_start_symbol_set, grammar_symbol_append): + Likewise. + * src/state.c (transitions_to): Likewise. + * src/state.h: Likewise. + * src/tables.c (symbol_number_to_vector_number): Likewise. + + * src/muscle_tab.h (MUSCLE_OBSTACK_SGROW): Use p, not s, for + char * var. + + * src/parse-gram.y (lloc_default): Use loc, not r, for YYLTYPE + var. + + * src/scan-gram.l (no_cr_read): Use bytes_read, not s, for size + var. + + * src/system.h (xstrndup, strchr, strspn, strnlen, memchr, memrchr): + Use str, not s, for char * var. Use ch, not c, for character var. + Use size for size var. + + * src/uniqstr.c (uniqstr_new, uniqstr_assert): Use str, not s, for + char * var. + (uniqstr_print, uniqst_print_processor): Use ustr, not s, for + uniqstr var. + * src/uniqstr.h: Likewise. + + * src/vcg.c (get_color_str, get_textmode_str, get_shape_str, + get_layoutalgorithm_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): Rename + param to have same name as that of enum, so that we don't use + "s" to stand for a non-state. + +2003-02-02 Akim Demaille + + * src/scan-skel.l: Scan more than one inert character per yylex + invocation. + +2003-02-01 Paul Eggert + + Version 1.875a. + + * po/LINGUAS: Add ms. + +2003-01-30 Akim Demaille + + * doc/Makefile.am (CLEANFILES): Add bison.fns for distcheck. + +2003-01-29 Paul Hilfinger + + * tests/cxx-type.at: Correct apparent typo in Bison input: $$ instead + of $1. + + Changes in response to error report by S. Eken: GLR mode does not + handle negative $ indices or $ indices in embedded rules correctly. + See . + + * data/glr.c (b4_rhs_value): Change to use YYFILL macro. + (b4_rhs_location): Ditto. + (yyfill): New function to copy from stack tree into array + incrementally. + (yyuserAction): Modify to allow incremental move of semantic values + to rhs array when in GLR mode. + Define YYFILL to use in user-defined actions to fill semantic array + as needed. + Remove dummy use of yystack, as there is now a guaranteed use. + (yydoAction): Modify to allow incremental move of semantic values + to rhs array when in GLR mode. + (yyresolveAction): Ditto. + (yyglrShiftDefer): Update comment. + (yyresolveStates): Use X == NULL for pointers, not !X. + (yyglrReduce): Ditto. + (yydoAction): Ditto + + * tests/glr-regr1.at: Rename to ... + * tests/glr-regression.at: Add new regression test for the problems + described above (adapted from S. Eken). + Update copyright notice. + * tests/testsuite.at: Rename glr-regr1.at to glr-regression.at. + * tests/Makefile.am: Ditto. + +2003-01-28 Paul Eggert + + * data/lalr1.cc: Do not use @output_header_name@ unless + b4_defines_flag is set. This fixes two bugs reported by + Tim Van Holder in + + and . + +2003-01-21 Paul Eggert + + * data/yacc.c (YYERROR): Move code from yyerrlab1 to here, so that + we don't need to worry about yyerrlab1 being reported as an + "unused label" by non-GCC C compilers. The downside is that if + locations are used then a couple of statements are duplicated each + time YYERROR is invoked, but the upside is that the warnings + should vanish. + (yyerrlab1): Move code to YERROR. + (yyerrlab2): Remove. Change uses back to yyerrlab1. + This reverts some of the 2002-12-27 change. + +2003-01-17 Paul Eggert + + * src/output.c (symbol_printers_output): Fix typo that led + to core dump. Problem reported by Antonio Rus in + . + +2003-01-13 Akim Demaille , + Quoc Peyrot , + Robert Anisko + + * data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop + when the stacks contain one element, as the loop would otherwise + free the last state, and then use the top state (the one we just + popped). This means that the initial elements will not be freed + explicitly, as is the case in yacc.c; it is not a problem, as + these elements have fake values. + +2003-01-11 Paul Eggert + + * NEWS: %expect-violations are now just warnings, reverting + to Bison 1.30 and 1.75 behavior. This fixes the GCC 3.2 + bootstrapping problem reported by Matthias Klose; see + . + * src/conflicts.c (conflicts_print): Likewise. + * tests/conflicts.at (%expect not enough, %expect too much, + %expect with reduce conflicts): Likewise. + * doc/bison.texinfo (Expect Decl): Document this. Also mention + that the warning is enabled if the number of conflicts changes + (not necessarily increases). + + * src/getargs.c (version): Update copyright year. + +2003-01-09 Akim Demaille + + * src/Makefile.am, lib/Makefile.am: Use $(VAR) instead of @VAR@. + +2003-01-08 Paul Eggert + + * Makefile.maint (WGETFLAGS): + New macro, containing "-C off" to disable proxy caches. + All uses of $(WGET) changed to $(WGET) $(WGETFLAGS). + (rel-check): Use $(WGET) instead of wget. + +2003-01-06 Paul Eggert + + * doc/bison.texinfo (Generalized LR Parsing): Add a reference to + the GLR paper of Scott, Johnstone and Hussain. + +2003-01-04 Paul Eggert + + * configure.ac (AC_ARG_ENABLE): Add --disable-yacc. + (YACC_SCRIPT, YACC_LIBRARY): New vars to AC_SUBST. + * lib/Makefile.am (lib_LIBRARIES): liby.a -> @YACC_LIBRARY@. + (EXTRA_LIBRARIES): New var, for liby.a. + * src/Makefile.am (bin_SCRIPTS): yacc -> @YACC_SCRIPT@. + (EXTRA_SCRIPTS): New var, for yacc. + + * data/yacc.c (yyerrlab1): Omit attribute if __cplusplus is defined, + since GNU C++ (as of 3.2.1) does not allow attributes on labels. + Problem reported by Nelson H. F. Beebe. + +2003-01-03 Paul Eggert + + * lib/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to + (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5 + when compiling Bison 1.875's `bitset bset = obstack_alloc + (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe. + + * src/scan-skel.l (QPUTS): Omit redundant `;' from macro definition. + ([^@\n]): Renamed from [^@\n]+ so that the token buffer does not + grow to a huge size with typical invocation. + + * lib/hash.c (_Bool, bool, false, true, __bool_true_false_are_defined): + Use the pattern recommended by Autoconf 2.57, except also protect + against double-definition. + * src/system.h: Likewise. + Portability issues reported by Nelson H. F. Beebe. + + * data/glr.c (yybool): Renamed from bool, to avoid collisions in C. + All uses changed. Provide a definition in both C and C++. + (yytrue, yyfalse): Define even if defined (__cplusplus). + + * lib/bitset_stats.c (bitset_stats_list): Remove unused var. + Reported by Nelson H. F. Beebe. + + * src/scan-skel.l ("@oline@"): Output lineno+1, not lineno. + +2003-01-02 Paul Eggert + + * data/yacc.c (yyerrlab1): Append `;' after attribute, to + pacify the buggy "smart preprocessor" in MacOS 10.2.3. + Bug reported by Nelson H. F. Beebe. + +2003-01-01 Paul Eggert + + * Version 1.875. + +2002-12-30 Paul Eggert + + * src/scan-gram.l (","): + Moved here from... + (","): Here. This causes stray "," to be treated + more uniformly. + + * src/scan-gram.l ("}"): Output ";" before the + last brace in braced code when not in Yacc mode, for compatibility + with Bison 1.35. This resurrects the 2001-12-15 patch to + src/reader.c. + + * src/reader.h (YYDECL): Use YYSTYPE, not its deprecated alias + yystype. This follows up the 2002-12-24 YYSTYPE bug fix. + +2002-12-28 Paul Eggert + + * src/symtab.c (symbol_make_alias): Set type of SYMVAL to be + that of SYM's type. This fixes Debian bug 168069, reported by + Thomas Olsson. + +2002-12-28 Paul Eggert + + Version 1.75f. + + Switch back to the Yacc style of conflict reports, undoing some + of the 2002-07-30 change. + * doc/bison.texinfo (Understanding): Use Yacc style for + conflict reports. Also, use new way of locating rules. + * src/conflicts.c (conflict_report): + Renamed from conflict_report_yacc, removing the old + 'conflict_report'. Translate the entire conflict report at once, + so that we don't assume that "," has the same interpretation in + all languages. + (conflicts_output): Use Yacc-style conflict report for each state, + instead of our more-complicated style. + (conflicts_print): Use Yacc-style conflict report, except print + the input file name when not emulating Yacc. + * tests/conflicts.at (Unresolved SR Conflicts, Defaulted + Conflicted Reduction, %expect not enough, %expect too much, + %expect with reduce conflicts): Switch to Yacc-style conflict reports. + * tests/existing.at (GNU Cim Grammar): Likewise. + * tests/glr-regr1.at (Badly Collapsed GLR States): Likewise. + + * src/complain.c (warn_at, warn, complain_at, complain, fatal_at, + fatal): Don't invoke fflush; it's not needed and it might even be + harmful for stdout, as stdout might not be open. + * src/reduce.c (reduce_print): Likewise. + +2002-12-27 Paul Eggert + + Fix a bug where error locations were not being recorded correctly. + This problem was originally reported by Paul Hilfinger in + . + + * data/yacc.c (yyparse): New local var yylerrsp, to record the + top of the location stack's error locations. + (yyerrlab): Set it. When discarding a token, push its location + onto yylerrsp so that we don't lose track of the error's end. + (yyerrlab1): Now is only the target of YYERROR, so that we can + properly record the location of the action that failed. For GCC + 2.93 and later, insert an __attribute__ ((__unused__)) to avoid + GCC warning about yyerrlab1 being unused if YYERROR is unused. + (yyerrlab2): New label, which yyerrlab now falls through to. + Compute the error's location by applying YYLLOC_DEFAULT to + the locations of all the symbols that went into the error. + * doc/bison.texinfo (Location Default Action): Mention that + YYLLOC_DEFAULT is also invoked for syntax errors. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): + Error locations include the locations of all the tokens that were + discarded, not just the last token. + +2002-12-26 Paul Eggert + + * src/files.c: Include quote.h. + (compute_output_file_names): Warn if we detect conflicting + outputs to the same file. This should catch the misunderstanding + exemplified by Debian Bug 165349, reported by Bruce Stephens.. + + * src/conflicts.c (conflicts_print): If the user specifies + "%expect N", report an error if there are any reduce/reduce + conflicts. This is what the manual says should happen. + This fixes Debian bug 130890, reported by Anthony DeRobertis. + * tests/conflicts.at (%expect with reduce conflicts): New test. + + Don't use m4_include on relative file names, as it doesn't work as + desired if there happens to be a file with that name under ".". + + * m4sugar/version.m4: Remove; it was included but it wasn't used. + * data/Makefile.am (dist_m4sugar_DATA): Remove m4sugar/version.m4. + * data/m4sugar/m4sugar.m4: Don't include m4sugar/version.m4. + * data/glr.c, data/lalr1.cc, data/yacc.c: Don't include c.m4. + * src/output.c (output_skeleton): Use full path names when + specifying a file to include; don't rely on include path, as + it's unreliable when the working file contains a file with + that name. + +2002-12-25 Paul Eggert + + Remove obsolete references to bison.simple and bison.hairy. + Problem mentioned by Aubin Mahe in + . + * data/glr.c: Comment fix. + * doc/bison.1: Remove references. Also, mention "yacc". + + * src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL + with -g option. + + * src/parse-gram.y (declaration): Use enum "report_states" rather + than its numeric value 1. + + * src/scan-skel.l ("@output ".*\n): Close any old yyout before + opening a new one. This fixes Debian bug 165349, reported by + Bruce Stephens. + +2002-12-24 Paul Eggert + + Version 1.75e. + + * Makefile.maint (cvs-update): Don't assume that the shell + supports $(...), as Solaris sh doesn't. + + * src/parse-gram.y (lloc_default): Remove test for empty + nonterminals at the end, since it didn't change the result. + +2002-12-24 Paul Eggert + + If the user does not define YYSTYPE as a macro, Bison now declares it + using typedef instead of defining it as a macro. POSIX requires this. + For consistency, YYLTYPE is also declared instead of defined. + + %union directives can now have a tag before the `{', e.g., the + directive `%union foo {...}' now generates the C code + `typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility. + The default union tag is `YYSTYPE', for compatibility with Solaris 9 + Yacc. For consistency, YYLTYPE's struct tag is now `YYLTYPE' + instead of `yyltype'. + + `yystype' and `yyltype' are now obsolescent macros instead of being + typedefs or tags; they are no longer documented and will be + withdrawn in a future release. + + * data/glr.c (b4_location_type): Remove. + (YYSTYPE): Renamed from yystype. + (YYSTYPE_IS_DECLARED): New macro, used to prevent double-typedef. + (struct YYLTYPE): Renamed from struct yyltype. + (YYLTYPE): Renamed from yyltype. + (yyltype, yystype): New (and obsolescent) macros, + for backward compatibility. + * data/yacc.c: Likewise. + + * data/yacc.c (YYSTYPE): Declare as union YYSTYPE if the user + does not specify a union tag. This is for compatibility with + Solaris 9 yacc. + + * src/parse-gram.y (add_param): 2nd arg is now char * not char + const *, since it is now modified by stripping surrounding { }. + (current_braced_code): Remove. + (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_UNION, + PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Change names to include + trailing " {...}". Now of type . + (grammar_declaration): Adjust to bundled tokens. + (code_content): Remove; stripping is now done by add_param. + (print_token_value): Print contents of bundled tokens. + (token_name): New function. + + * src/reader.h (braced_code, current_braced_code): Remove. + (token_name): New decl. + + * src/scan-gram.l (handle_dollar, handle_at): Now takes int + token_type, not braced_code code_kind. All uses changed. + (SC_PRE_CODE): New state, for scanning after a keyword that + has (or usually has) an immediately-following braced code. + (token_type): New local var, to keep track of which token type + to return when scanning braced code. + ("%destructor", "%lex-param", + "%parse-param", "%printer", + "%union"): Set token type and BEGIN SC_PRE_CODE + instead of returning a token type immediately. + ("{"): Set token type. + ("}"): Use it. + (handle_action_dollar, handle_action_at): Now returns bool + indicating success. Fail if ! current_rule; this prevents a core dump. + (handle_symbol_code_dollar, handle_symbol_code_at): + Remove; merge body into caller. + (handle_dollar, handle_at): Complain in invalid contexts. + + * NEWS, doc/bison.texinfo: Document the above. + * NEWS: Fix years and program names in copyright notice. + +2002-12-17 Paul Eggert + + * NEWS, doc/bison.texinfo (Parser Function, Pure Calling, Error + Reporting, Table of Symbols): Omit mentions of %lex-param and + %parse-param from the documentation for now. + +2002-12-15 Paul Eggert + + Undo most of the 2002-11-12 yychar -> yytoken patch, as it broke + GCC 3.2.1 (which depends on yychar == YYEMPTY when there is no + lookahead symbol, and which sets yychar in parser actions) and it + disagreed with the Bison documentation. Bug + reported by Andrew Walrond. + + * data/yacc.c (YYTRANSLATE): Don't check for negative argument, + as the caller now does that. + (yyclearin, YYBACKUP, yyparse): Use yychar, not yytoken. + (YYEMPTY): Parenthesize right hand side, since others use it. + (yyparse): Don't assume that our generated code is the only code + that sets yychar. + +2002-12-13 Paul Eggert + + Version 1.75d. + + POSIX requires a "yacc" command. + * src/Makefile.am (bin_SCRIPTS): New macro, for yacc. + (MOSTLYCLEANFILES): Add yacc. + (yacc): New rule. + * doc/bison.texinfo (Invocation, Bison Options): Mention yacc + as an alias for bison y. + + * po/LINGUAS: Add da. + + * src/getargs.c (__GNU_LIBRARY__) [lint]: Define to work around + problem with latest . + (HACK_FOR___GNU_LIBRARY___PROTOTYPE): New macro. + + * doc/fdl.texi: Upgrade to 1.2. + * lib/alloca.c, lib/error.c, lib/getopt.c, lib/getopt.h + lib/getopt1.c, lib/gettext.h, lib/memrchr.c, lib/obstack.c, + lib/obstack.h, lib/strnlen.c, lib/unlocked-io.h: Sync with + gnulib. + * config/install-sh: Sync with autotools. + + Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in + . + * data/yacc.c (YYLTYPE, struct yyltype): Do not define unless + locations are requested. + (union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless + locations are requested. + +2002-12-12 Paul Eggert + + Remove unportable casts and storage allocation tricks. + While we're at it, remove almost all casts, since they + usually aren't needed and are a sign of trouble. + + * configure.ac (AC_CHECK_TYPES): Check for uintptr_t. + + * src/derives.c (derives_compute): Do not subtract NTOKENS from + the pointer DSET returned by malloc; this isn't portable. + Instead, always use DSET[i - NTOKENS] rather than DSET[i]. + Similarly for DERIVES. + * src/lalr.c (set_goto_map): Likewise, for GOTO_MAP and TEMP_MAP. + * src/nullable.c (nullable_compute): Likewise, for RSETS and NULLABLE. + * src/reduce.c (reduce_grammar_tables): Likewise, for nontermmap + + * src/derives.c (derives_compute): Do not bother invoking + int_of_rule_number, since rule numbers are integers. + + * src/files.c (concat2, tr, compute_base_name): Use xmalloc (N) + rather than XMALLOC (char, N). + + * src/files.c (filename_split): Rewrite to avoid cast. + + * src/gram.h (symbol_number_as_item_number, + item_number_as_symbol_number, rule_number_as_item_number, + item_number_as_rule_number): + Now inline functions rather than macros, to avoid casts. + * src/state.h (state_number_as_int): Likewise. + * src/tables.c (state_number_to_vector_number, + symbol_number_to_vector_number): Likewise. + + * src/gram.h (int_of_rule_number): Remove; no longer used. + + * src/lalr.c (add_lookback_edge): Use malloc rather than calloc, + since the resulting storage is always stored into. + + * src/main.c (alloca) [C_ALLOCA]: Add decl here, the only place + where it's needed. + + * src/muscle_tab.c (muscle_m4_output): + Now inline. Return bool, not int. + * src/state.c (state_compare): Likewise. + * src/symtab.c (symbol_check_defined, + symbol_check_alias_consistency, symbol_pack, symbol_translation, + hash_compare_symbol, hash_symbol): + Likewise. + * src/uniqstr.c (uniqstr_print): Likewise. + * src/muscle_tab.c (muscle_m4_output_processor): + New function, to avoid casts. + * src/state.c (state_comparator, stage_hasher): Likewise. + * src/symtab.c (symbol_check_defined_processor, + symbol_check_alias_consistency_processor, symbol_pack_processor, + symbol_translation_processor, hash_symbol_comparator, + hash_symbol_hasher): Likewise. + * src/uniqstr.c (uniqstr_print_processor): Likewise. + * src/muscle_tab.c (muscles_m4_output): + Use new functions instead of casting old functions unportably. + * src/state.c (state_hash_new): Likewise. + * src/symtab.c (symbols_new, symbols_do, symbols_check_defined, + symbols_token_translations_init): + Likewise. + * src/uniqstr.c (uniqstrs_new, hash_initialize, uniqstrs_do): Likewise. + + * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): Use long local + var instead of casting to long, to avoid casts. + (prepare_states): Use MALLOC rather than alloca, so that we don't + have to worry about alloca. + * src/state.c (state_hash_lookup): Likewise. + + * src/scan-gram.l ("'"): Use unsigned char + local var instead of casting to unsigned char, to avoid casts. + + * src/state.c (TRANSITIONS_ALLOC, ERRS_ALLOC, REDUCTIONS_ALLOC, + STATE_ALLOC): Remove. + (transitions_new, errs_new, reductions_new, state_new): Use malloc + rather than calloc, and use offsetof to avoid allocating slightly + too much storage. + (state_new): Initialize all members. + + * src/state.c (state_hash): Use unsigned accumulator, not signed. + + * src/symtab.c (symbol_free): Remove; unused. + (symbol_get): Remove cast in lhs of assignment. + (symbols_do): Now static. Accept generic arguments, not + hashing-related ones. + + * src/symtab.h: (NUMBER_UNDEFINED): Remove unnecessary cast. + (symbol_processor): Remove. + (symbols_do): Remove decl; now static. + + * src/system.h (alloca): Remove; decl no longer needed. + (): Include, for offsetof. + (, ): Include if available. + (uintptr_t): New type, if system lacks it. + (CALLOC, MALLOC, REALLOC): New macros. + All uses of XCALLOC, XMALLOC, and XREALLOC changed to use these + new macros. + + * src/tables.c (table_size): Now int, to pacify GCC. + (table_grow, table_ninf_remap): Use signed table size. + (save_row): Don't bother initializing locals when not needed. + (default_goto, goto_actions, pack_vector): Remove unnecessary casts. + * src/uniqstr.c (hash_compare_uniqstr): Likewise. + + * src/vcg.h: Correct misspellings. + + * src/vcg_defaults.h (G_CMAX): Now INT_MAX. + + + * src/getargs.c (getargs): Don't assume EOF == -1. + +2002-12-09 Paul Eggert + + Change identifier spellings to avoid collisions with names + that are reserved by POSIX. + + Don't use names ending in _t, since POSIX reserves them. + For consistency, remove _e and _s endings -- they're weren't + needed to remove ambiguity. All uses changed. + * src/uniqstr.h (uniqstr): Renamed from uniqstr_t, which in + turn was just renamed from struniq_t. + * src/uniqstr.c (uniqstr_processor): Renamed from struniq_processor, + which in turn was just renamed from struniq_processor_t. + (hash_compare_uniqstr): Renamed from hash_compare_struniq, which + in turn was renamed from hash_compare_struniq_t. + * src/LR0.c (struct state_list): Renamed from struct state_list_s. + (state_list): Renamed from state_list_t. + * src/assoc.h (assoc): Renamed from assoc_t. + * src/conflicts.c (enum conflict_resolution): Renamed from + enum conflict_resolution_e. + * src/derives.c (struct rule_list): Renamed from struct rule_list_s. + (rule_list): Renamed from rule_list_t. + * src/getargs.h (enum trace): Renamed from enum trace_e. + (enum report): Renamed from enum report_e. + * src/gram.h (item_number): Renamed from item_number_t. + (rule_number): Renamed from rule_number_t. + (struct rule_s): Remove the "rule_s" part; not used. + (rule): Renamed from rule_t. + (rule_filter): Renamed from rule_filter_t. + * src/lalr.c (struct goto_list): Renamed from struct goto_list_s. + (goto_list): Renamed from goto_list_t. + * src/lalr.h (goto_number): Renamed from goto_number_t. + * src/location.h (location): Renamed from location_t. + * src/muscle_tab.c (muscle_entry): Renamed from muscle_entry_t, + and moved here from: + * src/muscle_tab.h (muscle_entry_t): here. + * src/nullable.c (struct rule_list): Renamed from struct rule_list_s. + (rule_list): Renamed from rule_list_t. + * src/print_graph.c (static_graph): Renamed from graph. + * src/reader.h (braced_code): Renamed from braced_code_t. + Remove brace_code_e tag. + * src/relation.h (relation_node): Renamed from relation_node_t. + (relation_nodes): Renamed from relation_nodes_t. + (relation): Renamed from relation_t. + * src/state.h (state_number): Renamed from state_number_t. + (struct state): Renamed from struct state_s. + (state): Renamed from state_t. + (transitions): Renamed from transitions_t. Unused (and + misspelled) transtion_s tag removed. + (errs): Renamed from errs_t. Unused errs_s tag removed. + (reductions): Renamed from reductions_t. Unused tag + reductions_s removed. + * src/symlist.h (symbol_list): Renamed from symbol_list_t. + (struct symbol_list): Renamed from struct symbol_list_s. + * src/symtab.h (symbol_number): Renamed from symbol_number_t. + (struct symbol): Renamed from struct symbol_s. + (symbol): Renamed from symbol_t. + * src/tables.c (vector_number): Renamed from vector_number_t. + (action_number): Renamed from action_t. + * src/tables.h (base_number): Renamed from base_t. + * src/vcg.h (enum color): Renamed from enum color_e. + (enum textmode): Renamed from enum textmode_e. + (enum shape): Renamed from enum shape_e. + (struct colorentry): Renamed from struct colorentry_s. + (struct classname): Renamed from struct classname_s. + (struct infoname): Renamed from struct infoname_s. + (enum layoutalgorithm): Renamed from enum layoutalgorithm_e. + (enum decision): Renamed from enum decision_e. + (enum orientation): Renamed from enum orientation_e. + (enum alignment): Renamed from enum alignment_e. + (enum arrow_mode): Renamed from enum arrow_mode_e. + (enum crossing_type): Renamed from enum crossing_type_e. + (enum view): Renamed from enum view_e. + (struct node): Renamed from struct node_s. + (node): Renamed from node_t. + (enum linestyle): Renamed from enum linestyle_e. + (enum arrowstyle): Renamed from enum arrowstyle_e. + (struct edge): Renamed from struct edge. + (edge): Renamed from edge_t. + (struct graph): Renamed from struct graph_s. + (graph): Renamed from graph_t. + * tests/calc.at (_AT_DATA_CALC_Y, Simple LALR Calculator): + Rename value_t -> value. + * tests/input.at (Torturing the Scanner): Rename value_t -> value, + value_t_as_yystype -> value_as_yystype. + + Don't include in the mainstream code, since it + reserves E[A-Z0-9]* and we want to use symbols like 'EQUALS'. + * lib/get-errno.c, lib/get-errno.h: New files. + * lib/Makefile.am (libbison_a_SOURCES): Add get-errno.h, + get-errno.c. + * src/files.c (xfopen, xfclose): Use get_errno instead of errno. + * src/output.c (output_skeleton): Likewise. + * src/scan-gram.l ({int}): Use set_errno and get_errno + instead of errno. + (\\x[0-9abcdefABCDEF]+): + Likewise. + (handle_action_dollar, handle_action_at): Likewise. + * src/system.h: Do not include . + (TAB_EXT): Renamed from EXT_TAB. + (OUTPUT_EXT): Renamed from EXT_OUTPUT. + + Avoid str[a-z]*, since reserves that name space. + Change all instances of "struniq" in names to "uniqstr", and + likewise for "STRUNIQ" and "UNIQSTR". + * src/uniqstr.c: Renamed from src/struniq.c. + * src/uniqstr.h: Renamed from src/struniq.h. + * src/Makefile.am (bison_SOURCES): Adjust to these renamings. + * src/files.c (strsuffix): Remove; unused. + (concat2): Renamed from stringappend. Now static. + * src/files.h (strsuffix, stringappend): Remove; unused. + * src/parse-gram.y (): Renamed from . + (): Renamed from . + * src/scan-gram.l (obstack_for_string): Renamed from string_obstack. + * src/vcg.h (struct node_s.expand): Renamed from struct node_s.stretch. + (struct graph_s.expand): Renamed from struct graph_s.stretch. + * src/vcg_defaults.h (G_EXPAND): Renamed from G_STRETCH. + (G_LONG_STRAIGHT_PHASE): Renamed from G_STRAIGHT_PHASE. + (N_EXPAND): Renamed from N_STRETCH. + + Avoid *_MAX and *_MIN, since reserves that name space. + * data/yacc.c (YYSTACK_GAP_MAXIMUM): Renamed from YYSTACK_GAP_MAX. + * src/gram.h (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX): + Remove; unused. + * src/lalr.h (GOTO_NUMBER_MAXIMUM): Renamed from GOTO_NUMBER_MAX. + * src/state.h (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX. + * src/symtab.h (SYMBOL_NUMBER_MAXIMUM): Renamed from SYMBOL_NUMBER_MAX. + * src/tables.c (VECTOR_NUMBER_MAX, VECTOR_NUMBER_MIN): Remove; unused. + (BASE_MAXIMUM): Renamed from BASE_MAX. + (BASE_MINIMUM): Renamed from BASE_MIN. + (ACTION_MAX): Remove; unused. + (ACTION_NUMBER_MINIMUM): Renamed from ACTION_MIN. + Unnecessary casts removed from above defines. + + + Fix misspelling in names. + * src/vcg.h (enum_alignment_e): Renamed from enum_alignement_e. + * src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from + G_NODE_ALIGNEMENT. + + + * lib/timevar.c (timevar_report): Renamed from time_report, + for consistency with other names. + * lib/timevar.h (timevar_report): New decl. + * src/system.h (time_report): Remove; decl is now in lib/timevar.h. + + + Sort include-file uses. + + Reorder all include files under src to be in the order "system.h". + then the ../lib include files in angle brackets (alphabetized), + then the . include files in double-quotes (alphabetized). Fix + dependency breakages encountered in this process, as follows: + * src/closure.h, src/derives.h, src/state.h: Include "gram.h". + * src/complain.c: Don't include stdlib.h, string.h _LIBC stuff. + * src/state.h: Include "symtab.h". + +2002-12-08 Paul Eggert + + * data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__, + since this causes problems when __file__ contains character + sequences like "@" that are treated specially by src/scan-skel.l. + Instead, just use the file's basename. This fixes the bug + reported by Martin Mokrejs in + . + +2002-12-06 Paul Eggert + + Add support for rules that do not have trailing semicolons, as + POSIX requires. Improve the quality of locations in Bison + diagnostics. + + * src/location.c: Include . + (empty_location): Now const. + (location_print): New function. Follow the recommendation of the + GNU Coding Standards for locations that span file boundaries. + * src/location.h: Do not include ; no longer needed. + (boundary): New type. + (location_t): Use it. This allows locations to span file boundaries. + All member uses changed: file -> start.file or end.file (as needed), + first_line -> start.line, first_column -> start.column, + last_line -> end.line, last_column -> end.column. + (equal_boundaries): New function. + (LOCATION_RESET, LOCATION_STEP): Remove. + (LOCATION_PRINT): Remove. All callers changed to use location_print. + (empty_location): Now const. + (location_print): New decl. + * src/parse-gram.y (lloc_default): New function, which handles + empty locations more accurately. + (YYLLOC_DEFAULT): Use it. + (%token COLON): Remove. + (%token ID_COLON): New token. + (rules): Use it. + (declarations, rules): Remove trailing semicolon. + (declaration, rules_or_grammar_declaration): + Allow empty (";") declaration. + (symbol_def): Remove empty actions; no longer needed. + (rules_or_grammar_declaration): Remove trailing semicolon. + (semi_colon.opt): Remove. + * src/reader.h: Include location.h. + (scanner_cursor): New decl. + * src/reduce.c (nonterminals_reduce): Use warn_at rather than + rolling our own. + * src/scan-gram.l (YY_USER_INIT): Initialize scanner_cursor instead + of *loc. + (STEP): Remove. No longer needed, now that adjust_location does + the work. All uses removed. + (scanner_cursor): New var. + (adjust_location): Renamed from extend_location. It now sets + *loc and adjusts the scanner cursor. All uses changed. + Don't bother testing for CR. + (handle_syncline): Remove location arg; now updates scanner cursor. + All callers changed. + (unexpected_end_of_file): Now accepts start boundary of token or + comment, not location. All callers changed. Update scanner cursor, + not the location. + (SC_AFTER_IDENTIFIER): New state. + (context_state): Renamed from c_context. All uses changed. + (id_loc, code_start, token_start): New local vars. + (): New initial context. Move all + processing of Yacc white space and equivalents here. + ({id}): Save id_loc. Begin state SC_AFTER_IDENTIFIER + instead of returning ID immediately, since we need to search for + a subsequent colon. + ("'", "\""): Save token_start. + ("%{", "{", "%%"): Save code_start. + (): New state, looking for a colon. + (, , ): + BEGIN context_state at end, not INITIAL. + ("\"", "'", + "}", "%}", <>): + Return correct token start. + (): Save start boundary when + the start of a character, string or multiline comment is found. + * tests/conflicts.at (S/R in initial, Defaulted Conflicted + Reduction): Adjust reported locations to match the more-precise + results now expected. + * tests/input.at (Invalid $n, Invalid @n, Type Clashes): Likewise. + * tests/reduce.at (Useless Rules, Reduced Automaton, + Underivable Rules): Likewise. + * tests/regression.at (Invalid inputs): No longer `expecting ";" + or "|"' now that so many other tokens are allowed by the new grammar. + + * src/complain.h (current_file): Remove duplicate decl; + current_file is now owned by files.h. + * src/complain.c, src/scan-gram.l: Include files.h. + +2002-12-06 Paul Eggert + + * data/glr.c (yy_reduce_print): Don't assume that yyrline[yyrule] + promotes to int; it might be unsigned int. + * data/yacc.c (yy_reduce_print): Likewise. + + * doc/bison.texinfo (Table of Symbols): YYERROR_VERBOSE should + be #defined in the prologue, not in the Bison declarations. + This fixes Debian Bug 102878, reported by Shaul Karl. + +2002-12-02 Paul Eggert + + * configure.ac (AC_REPLACE_FUNCS): Add strtoul. + * lib/strtoul.c: New file, from gnulib. + This fixes a porting bug reported by Peter Klein in + . + +2002-11-30 Paul Eggert + + * src/scan-gram.l (no_cr_read, extend_location): Move to epilogue, + and put only a forward declaration in the prologue. This is for + consistency with the other scanner helper functions. + + Type clashes now generate warnings, not errors, since it + appears that POSIX may allow some grammars with type clashes. + * src/reader.c (grammar_current_rule_check): Warn about + type clashes instead of complaining. + * tests/input.at (Type Clashes): Expect warnings, not complaints. + + Add Yacc library, since POSIX requires it. + * doc/bison.texinfo (Yacc Library): New node. Regenerate top menu. + * lib/Makefile.am (lib_LIBRARIES, liby_a_SOURCES): New macros. + * lib/main.c, lib/yyerror.c: New files. + + gram_error can be static; it need not be extern. + * src/reader.h (gram_error): Remove decl. + * src/parse-gram.y (gram_error): Now static. Add static decl. + (print_token_value): Omit parameter names from forward decl, + for consistency. + +2002-11-29 Paul Eggert + + * doc/bison.texinfo: Emphasize that yylex and yyerror must + be declared before being used. E.g., one should typically + declare them in the prologue. Use GNU coding style in examples. + Put "const" consistently after the type it modifies. Mention + that C99 supports "inline". Mention that yyerror traditionally + returns "int". + + %parse-param and %lex-param now take just one argument, the + declaration; the argument name is deduced from the declaration. + + * doc/bison.texinfo (Parser Function, Pure Calling, Error + Reporting, Table of Symbols): Document this. + * src/parse-gram.y (add_param): New function. + (COMMA): Remove. + (declaration): Implement new rule for %parse-param and %lex-param. + * src/scan-gram.l: "," now elicits a warning, rather than being + a token; this is more compatible with byacc. + * tests/calc.at (Simple LALR Calculator): Adopt new convention. + +2002-11-27 Paul Eggert + + Rename identifiers to avoid real and potential collisions. + + * data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput, + to avoid collision with lex macro described by Bruce Lilly in + . + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise. + * doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value. + * src/parse-gram.y (print_token_value): Renamed from yyprint. + All uses changed. + (YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove. All uses changed. + The name "yycontrol" violates the name space rules, and this stuff + wasn't being used anyway. + (input): Remove action; this stuff wasn't being used. + (gram_error): Rename local variable yylloc -> loc. + * src/reader.h (struct gram_control_s, gram_control_t): Remove. + (YY_DECL): Don't use "yy" at start of local variables. + All uses changed, e.g., yylloc -> loc. + * src/scan-gram.l (STEP): Renamed from YY_STEP. All uses changed. + (STRING_GROW): Renamed from YY_OBS_GROW. All uses changed. + (STRING_FINISH): Renamed from YY_OBS_FINISH. All uses changed. + (STRING_FREE): Renamed from YY_OBS_FREE. All uses changed. + + * src/parse-gram.y (gram_error): loc is now const *. + * src/reader.h (gram_error): Likewise. + +2002-11-24 Paul Eggert + + Version 1.75c. + + * tests/actions.at (Actions after errors): Use an output format + more similar to that of the Printers and Destructors test. + Test the position of the ';' token too. + (Printers and Destructors): Likewise. + (Printers and Destructors: %glr-parser): Remove for now, to avoid + unnecessarily alarming people when the test fails. + + * data/yacc.c (yyerrlab1): Move this label down, so that the + parser does not discard the lookahead token if the user code + invokes YYERROR. This change is required for POSIX conformance. + + * lib/error.c: Sync with gnulib. + +2002-11-22 Paul Eggert + + * lib/quotearg.c, lib/quotearg.h: Sync with gnulib. + * lib/mbswidth.c, lib/mbswidth.h: Likewise. + * lib/xmalloc.c: Likewise. + +2002-11-20 Paul Eggert + + * lib/argmatch.c, lib/argmatch.h: Sync with gnulib. + +2002-11-20 Paul Eggert + + Avoid use of , as the GNU Coding Standards hint that one + should use `if (! x) abort ();' rather than `assert (x);', and + anyway it's one less thing to worry about configuring. + + * data/glr.c, lib/hash.c, src/system.h: Do not include . + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise, + and replace all instances of assert with abort. + * tests/calc.at (_AT_DATA_CALC_Y): Likewise. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise. + + * data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates, + yyresolveAction, yyprocessOneStack): Use abort rather than assert. + * lib/hash.c (hash_lookup, hash_get_first, hash_get_next, + hash_find_entry, hash_rehash, hash_insert): Likewise. + * src/conflicts.c (resolve_sr_conflict): Likewise. + * src/lalr.c (set_goto_map, map_goto): Likewise. + * src/nullable.c (nullable_compute): Likewise. + * src/output.c (prepare_rules, token_definitions_output): Likewise. + * src/reader.c (packgram, reader): Likewise. + * src/state.c (state_new, state_free, state_transitions_set, + 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/vcg.c (get_color_str, get_textmode_str, get_shape_str, + get_layoutalgorithm_str, get_decision_str, get_orientation_str, + get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str, + get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise. + + * lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef. + (ARGMATCH_CONSTRAINT): New macro. + (ARGMATCH_ASSERT): Use it. + + * src/system.h (verify): New macro. + * src/getargs.c (trace_argmatch, report_argmatch): Use verify + rather than assert. + * src/tables.c (tables_generate): Likewise. + + * src/struniq.c (struniq_assert): Now returns void, and aborts + if the assertion is false. + (struniq_assert_p): Remove. + * src/struniq.h: Likewise. + +2002-11-18 Paul Eggert + + * data/glr.c (yygetLRActions): Replace `yyindex' with + `yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch. + This fixes the regression with Sun ONE Studio 7 cc that I reported in + . + +2002-11-18 Akim Demaille + + * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a + space. + From Tim Van Holder. + +2002-11-17 Paul Eggert + + Pacify Sun ONE Studio 7 lint. Also, rename "ParseError" + to "SyntaxError" for consistency with my 2002-11-15 change. + + * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do + not define to {}, since this breaks the common use of `YYDPRINTF + ((...));' if a single statement is desired (e.g. before `else'). + Work around GCC warnings by surrounding corresponding calls with + {} if needed. + (yyhasResolvedValue): Remove unused function. + (yymergeOptionSets, yyresolvStack): Use `continue;' for empty + loop body. + (yyreportSyntaxError): Renamed from yyreportParseError. + (yyrecoverSyntaxError): Renamed from yyrecoverParseError. + All uses changed. + * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of + extern when possible. Remove unused initializations. + +2002-11-16 Akim Demaille + + Augment the similarity between GLR and LALR traces. + + * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print) + (YY_REDUCE_PRINT): New. + (yyparse): Use them. + * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for + YYDPRINT here. + (yyglrReduce, yyrecoverParseError, yyparse): Don't report the + state reached after the reduction/recovery, since... + (yyparse, yyprocessOneStack): Report the state we are entering in. + +2002-11-16 Akim Demaille + + * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types): + Add support for --trace=skeleton. + * src/scan-skel.l: %option debug. + Scan strings of non-@ or \n instead of character by character. + (scan_skel): Handle trace_skeleton. + (QPUTS): New. + (@output_parser_name@, @output_header_name@): ``Restore'' their + support (used to be M4 macros). + * data/yacc.c: Quote larger chunks, a la glr.c. + * data/lalr1.cc: Likewise. + The header guards are no longer available, so use some other + string than `YYLSP_NEEDED'. + +2002-11-16 Akim Demaille + + Make the ``Printers and Destructors'' test more verbose, taking + `yacc.c''s behavior as (possibly wrong) reference. + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf + instead of fprint on stdout. + Set and report the last_line of the symbols. + Consistently display values and locations. + +2002-11-16 Paul Eggert + + * data/yacc.c: Avoid over-quoting of __line__ and __file__. + +2002-11-15 Paul Eggert + + * tests/actions.at (Actions after errors): New test case. + + * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo, + src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h, + tests/action.at, tests/calc.at, tests/conflicts.at, + tests/cxx-type.at, tests/regression.at: + "parse error" -> "syntax error" for POSIX compatibility. + "parsing stack overflow..." -> "parser stack overflow" so + that code matches Bison documentation. + +2002-11-15 Akim Demaille + + * src/parse-gram.y (declaration): Have %parse-param and %lex-param + take two BRACED_CODE, not two string_content. + Free the scanner's obstack when we are done. + (code_content): New. + * tests/calc.at: Adjust. + * doc/bison.texinfo: Adjust. + Also, make sure to include the `,' for these declarations. + +2002-11-15 Tim Van Holder + + * m4/prereq.m4: Removed the commented jm_PREREQ_HASH + definition; avoids potential autoreconf problems. + +2002-11-15 Akim Demaille + + Always check the value returned by yyparse. + + * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value + returned by yyparse. + (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument. + Adjust calls. + * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value + returned by yyparse. + +2002-11-14 Paul Hilfinger + + * data/glr.c (yyFail): Always set yyerrflag. Corrects regression + on input.at test. + +2002-11-14 Paul Eggert + + * src/output.c (output_skeleton): Call xfopen instead of + duplicating xfopen's body. + + Fix bugs reported by Nelson H. F. Beebe in + . + + * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that + "$CC -E foo.h" is allowed, as this doesn't work with the Portland + Group compiler. Instead, use "$CC -E bar.c". Include the .h + file twice in the grammar, as an extra check. + + * tests/input.at (Torturing the Scanner): Surround the + backslash-newline tests with "#if 0", to make it less likely that + we'll run into compiler bugs. Bring back solitary \ inside + comment, but add a closing comment to work around HP C bug. Don't + test backslash-newline in C character constant. + +2002-11-14 Akim Demaille + + * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit + status of the compiler. + Calling `exit 1' is no longer needed. + Reported by Nelson H. F. Beebe. + +2002-11-14 Akim Demaille + + * tests/atlocal.in (CPPFLAGS): We have config.h. + * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR): + New. + * tests/actions.at, tests/calc.at, tests/conflicts.at, + * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at, + * tests/regression.at, tests/torture.at: Use them for all the + grammars that are to be compiled. + * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as... + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this. + * doc/bison.texinfo (GLR Parsers): Document `inline'. + +2002-11-14 Akim Demaille + + * doc/bison.texinfo: Various formatting changes (alignments in + samples, additional @group/@end group, GCS in samples. + Use @deffn instead of simple @table to define the directives, + macros, variables etc. + +2002-11-13 Paul Eggert + + Fix some bugs reported by Albert Chin-A-Young in + . + + * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c + -o c"; the HP C compiler chatters during compilation. + Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c". + * tests/headers.at (export YYLTYPE): Likewise. + + * tests/input.at (Torturing the Scanner): Remove lines containing + solitary backslashes, as they tickle a bug in the HP C compiler. + + * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid // + comments, since they're not portable. Use GNU coding style. + +2002-11-13 Akim Demaille + + * data/yacc.c: Leave bigger chunks of quoted text. + (YYDSYMPRINTF): New. + Use it to report symbol activities. + * data/glr.c (YYDSYMPRINTF): New. + Use it. + +2002-11-12 Paul Eggert + + Version 1.75b. + + * data/glr.c (yydoAction): Return YYRESULTTAG, not int. + (yyglrReduce): Return yyok, not 0. + This should avoid the enumerated-type warnings reported + by Nelson H. F. Beebe in + . + + * lib/bbitset.h (BITSET_INLINE): Remove. + * lib/bitset.h [! BITSET_INLINE]: Remove. + (bitset_set, bitset_reset, bitset_test): Rename local vars + to avoid shadowing warnings by GCC. + + * data/glr.c (inline): Remove #define. It's the user's + responsibility to #define it away, just like 'const'. + This fixes one of the bugs reported by Nelson H. F. Beebe in + . + + * Makefile.maint (po-check): Scan .l and .y files instead of the + .c and the .h files that they generate. This fixes the bug + reported by Tim Van Holder in: + + Look for N_ as well as for _. Try to avoid matching #define for + N_ and _. + * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c, + src/system.h. Add src/parse-gram.y, src/scan-gram.l. + * src/scan-gram.l: Revamp regular expressions so that " and ' + do not confuse xgettext. + + * src/struniq.h (struniq_new): Do not declare the return type + to be 'const'; this violates the C standard. + * src/struniq.c (struniq_new): Likewise. + +2002-11-12 Albert Chin-A-Young + + * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the + duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq + linker. + +2002-11-12 Akim Demaille + + * Makefile.maint: Sync with Autoconf: + (local_updates): New. + +2002-11-12 Akim Demaille + + * po/POTFILES.in (src/lalr.c, src/state.c): Remove + +2002-11-12 Akim Demaille + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the + locations. + 2002-11-12 Akim Demaille * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT, @@ -127,7 +2822,7 @@ Revamp to fix many (but not all) of the C- and M4-related quoting problems. Among other things, this fixes the Bison bug reported by Jan Hubicka when processing the Bash grammar; see: - + Use new @ escapes consistently. Represent brackets with @{ and @} rather than @<:@ and @:>@, since this works a bit better with dumb @@ -195,7 +2890,7 @@ 2002-11-09 Paul Eggert Fix the test failure due to GCC warnings described in - . + . * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which evaluate to 0 if it's impossible for NINF to be in the respective table. @@ -547,10 +3242,8 @@ * data/glr.c (struct yyltype): Define members even when not doing locations. This is more consistent with yacc.c, and it works around the following bug reports: - http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html - http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html - and I hope it also fixes this bug report: - http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html + http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00106.html + http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00111.html * doc/bison.texinfo: Minor spelling and typographical fixes. Use @acronym consistently. Standardize on "Yacc" instead of "YACC", @@ -982,7 +3675,7 @@ 2002-10-13 Paul Eggert Fix problem reported by Henrik Grubbstroem in - : + : "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected, because the Bison parser reads the second action before reducing the first one. @@ -999,7 +3692,7 @@ Include when checking for clock_t and struct tms. Use same include order as source. This is for the SunOS 4.1.4 porting bug reported by Peter Klein in - . + . * lib/timevar.c: Update copyright date and clarify comments. (get_time) [IN_GCC]: Keep the GCC version for reference. @@ -1012,13 +3705,13 @@ * src/reader.c (grammar_current_rule_check): Don't worry about the default action if $$ is untyped. Prevents bogus warnings reported by Jim Gifford in - . + . * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE. * data/glr.c, data/lalr1.cc, data/yacc.c: Output token definitions before the first part of user declarations. Fixes compatibility problem reported by Jim Gifford for kbd in - . + . 2002-10-11 Paul Eggert @@ -1143,7 +3836,7 @@ * lib/bitset.h (bitset_reset): Do not assume that bitset_word is the same width as int. This reapplies a hunk of the 2002-08-12 patch - , + , which was inadvertently undone by the 2002-09-30 patch. * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is the same width as int. @@ -2848,7 +5541,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) @@ -5405,7 +8098,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 @@ -6245,7 +8938,7 @@ 2001-11-12 Akim Demaille - %expext was not functioning at all. + %expect was not functioning at all. * src/conflicts.c (expected_conflicts): Set to -1. (conflict_report): Use ngettext. @@ -7868,6 +10561,7 @@ obstacks. (output_token_defines, reader_output_yylsp): Use obstacks. * src/system.h (obstack_fgrow3): New. + * po/POTFILES.in: Adjust. 2000-11-01 Akim Demaille @@ -9603,23 +12297,25 @@ 1987-12-16 Richard Stallman * REFERENCES: entered into RCS + ----- -Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +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 GNU Bison. +This file is part of Bison, the GNU Compiler Compiler. -GNU Bison is free software; you can redistribute it and/or modify +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. -GNU Bison is distributed in the hope that it will be useful, +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. You should have received a copy of the GNU General Public License -along with GNU Bison; see the file COPYING. If not, write to +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.