]> git.saurik.com Git - bison.git/blobdiff - ChangeLog
Merge fixes from Debian bison_1.34-1.diff.
[bison.git] / ChangeLog
index 1df9c0a26582fc998cff4881e429097f52bc27a6..224024cf9dc0c4be6692d9ec70ef6941c09a500d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2002-03-20  Paul Eggert  <eggert@twinsun.com>
+
+       Merge fixes from Debian bison_1.34-1.diff.
+
+       * configure.in (AC_PREREQ): 2.53.
+
+2002-03-20  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (log_resolution): Argument `resolution' is const.
+
+2002-03-19  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYCOPY): New macro.
+       (YYSTACK_RELOCATE): Use it.
+       Remove Type arg; no longer needed.  All callers changed.
+       (yymemcpy): Remove; no longer needed.
+
+       * Makefile.am (AUTOMAKE_OPTIONS): 1.6.
+       * doc/Makefile.am (AUTOMAKE_OPTIONS): Remove.
+
+2002-03-19  Akim Demaille  <akim@epita.fr>
+
+       Test and fix the #line outputs.
+
+       * tests/atlocal.at (GCC): New.
+       * tests/synclines.at (AT_TEST_SYNCLINE): New macro.
+       (Prologue synch line, ,%union synch line, Postprologue synch line)
+       (Action synch line, Epilogue synch line): New tests.
+       * src/reader.c (parse_union_decl): Define the muscle stype_line.
+       * data/bison.simple, data/bison.c++: Use it.
+
+
+2002-03-19  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (%nonassoc and eof, Unresolved SR Conflicts)
+       (Solved SR Conflicts, %expect not enough, %expect right)
+       (%expect too much): Move to...
+       * tests/conflicts.at: this new file.
+
+2002-03-19  Akim Demaille  <akim@epita.fr>
+
+       * data/m4sugar/m4sugar.m4: Update from CVS Autoconf.
+       * data/bison.simple, data/bison.c++: Handle the `#define' part, so
+       that we can move to enums for instance.
+       * src/output.c (token_definitions_output): Output a list of
+       `token-name, token-number' instead of the #define.
+       (output_skeleton): Name this list `b4_tokens', not `b4_tokendefs'.
+
+2002-03-14  Akim Demaille  <akim@epita.fr>
+
+       Use Gettext 0.11.1.
+
+2002-03-09  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Make the user able to add members to the generated
+       parser by subclassing.
+
+2002-03-05  Robert Anisko  <robert@lrde.epita.fr>
+
+       * src/reader.c (read_additionnal_code): `c' should be an integer, not
+       a character.
+       Reported by Nicolas Tisserand and Nicolas Burrus.
+
+2002-03-04  Robert Anisko  <robert@lrde.epita.fr>
+
+       * src/reader.c: Warn about lacking semi-colons, do not complain.
+
+2002-03-04  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Remove a debug line.
+
+2002-03-04  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Unmerge value as yylval and value as yyval.  Unmerge
+       location as yylloc and location as yyloc.  Use YYLLOC_DEFAULT, and
+       provide a default implementation.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * tests/input.at (Invalid $n, Invalid @n): Add the ending `;'.
+       * tests/output.at (AT_CHECK_OUTPUT): Likewise.
+       * tests/headers.at (AT_TEST_CPP_GUARD_H): Ditto.
+       * tests/semantic.at (Parsing Guards): Similarly.
+       * src/reader.at (readgram): Complain if the last rule is not ended
+       with a semi-colon.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/warshall.h, src/warshall.c (bitmatrix_print): Move to...
+       * src/closure.c: here.
+       (set_firsts): Use bitsetv_reflexive_transitive_closure instead of
+       RTC.
+       * src/warshall.h, src/warshall.c: Remove.
+       * tests/sets.at (Broken Closure): Adjust.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_skeleton): tempdir is const.
+       bytes_read is unused.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * lib/bbitset.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
+       * lib/bitsetv.h, lib/ebitset.c, lib/lbitset.c, lib/sbitset.c:
+       Update.
+       From Michael Hayes.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (closure): `r' is unused.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * tests/sets.at (Broken Closure): Add the ending `;'.
+       * src/reader.at (readgram): Complain if a rule is not ended with a
+       semi-colon.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (set_conflicts): Use bitset_disjoint_p.
+       (count_sr_conflicts): Use bitset_count.
+       * src/reduce.c (inaccessable_symbols): Ditto.
+       (bits_size): Remove.
+       * src/warshall.h, src/warshall.c: Convert to bitsetv.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c, src/conflicts.c, src/lalr.c, src/print.c,
+       * src/reduce.c: Remove the `bitset_zero's following the
+       `bitset_create's, as now it is performed by the latter.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * lib/bitset.c, lib/bitset.h, lib/bitsetv.c, lib/bitsetv.h,
+       * lib/ebitset.c, lib/ebitset.h, lib/lbitset.c, lib/lbitset.h,
+       * lib/sbitset.c, lib/sbitset.h, lib/bbitset.h: Update from the
+       latest sources from Michael.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output): Don't free the grammar.
+       * src/reader.c (grammar_free): New.
+       * src/main.c (main): Call it and don't free symtab here.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
+       before returning.
+       Reported by Benoit Perrot.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       Use bitset operations when possible, not loops over bits.
+
+       * src/conflicts.c (set_conflicts, count_sr_conflicts): Use
+       bitset_or.
+       * src/print.c (print_reductions): Use bitset_and, bitset_andn.
+       * src/reduce.c (useless_nonterminals): Formatting changes.
+       * src/warshall.c (TC): Use bitset_or.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.h, src/lalr.c (tokensetsize): Remove, unused.
+       * src/system.h (BITS_PER_WORD, WORDSIZE, SETBIT, RESETBIT, BITISSET):
+       Ditto.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (F): Now a bitset*.
+       Adjust all dependencies.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (shiftset, lookaheadset): Now bitset.
+       Adjust all dependencies.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/L0.c, src/LR0.h (nstates): Be size_t.
+       Adjust comparisons (signed vs unsigned).
+       * src/conflics.c, src/lalr.c, src/lalr.h, src/output.c (LA): Now a
+       bitset*.
+       Adjust all dependencies.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (firsts): Now, also a bitset.
+       Adjust all dependencies.
+       (varsetsize): Remove, now unused.
+       * src/warshall.h, src/warshall.c: Now work on arrays of bitsets.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c: Convert to use bitset.h, not hand coded iterations
+       over ints.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/reduce.c: Convert to use bitset.h, not hand coded BSet.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (ruleset): Be a bitset.
+       (rulesetsize): Remove.
+
+2002-03-04  Akim Demaille  <akim@epita.fr>
+
+       * lib/bitset-int.h, lib/bitset.c, lib/bitset.h, lib/bitsetv.c,
+       * lib/bitsetv.h, lib/ebitset.c, lib/ebitset.h, lib/lbitset.c,
+       * lib/lbitset.h, lib/sbitset.c, lib/sbitset.h: New.
+       * src/closure.c (fderives): Be an array of bitsets.
+
+2002-02-28  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Merge the two generated headers.  Insert a copyright
+       notice in each output file.
+
+2002-02-28  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.c++: Copy the prologue of bison.simple to fetch
+       useful M4 definitions, such as b4_header_guard.
+
+2002-02-25  Akim Demaille  <akim@epita.fr>
+
+       * src/getargs.c (version): Give the name of the authors, and use a
+       translator friendly scheme for the bgr
+       copyright notice.
+
+2002-02-25  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (header_output): Remove, now handled completely via
+       M4.
+
+2002-02-25  Akim Demaille  <akim@epita.fr>
+
+       * m4/m4.m4: New, from CVS Autoconf.
+       * configure.in: Invoke it.
+       * src/output.c (output_skeleton): Use its result instead of the
+       hard coded name.
+
+2002-02-25  Akim Demaille  <akim@epita.fr>
+
+       * lib/tempname.c, lib/mkstemp.c, m4/mkstemp.m4: New, stolen from
+       Fileutils 4.1.5.
+       * configure.in: Invoke UTILS_FUNC_MKSTEMP.
+       * src/output.c (output_skeleton): Use mkstemp to create a real
+       temporary file.
+       Move the filling of `skeleton' and its muscle to...
+       (prepare): here.
+       (output): Move the definition of the prologue muscle to...
+       (prepare): here.
+       * src/system.h (DEFAULT_TMPDIR): New.
+
+2002-02-14  Paul Eggert  <eggert@twinsun.com>
+
+       Remove the support for C++ namespace cleanliness; it was
+       causing more problems than it was curing, since it didn't work
+       properly on some nonstandard C++ compilers.  This can wait
+       for a proper C++ parser.
+
+       * NEWS: Document this.
+       * doc/bison.texinfo (Bison Parser, Debugging): Remove special mention
+       of C++, as it's treated like C now.
+       * src/bison.simple (YYSTD): Remove.
+       (YYSIZE_T, YYFPRINTF, YYPARSE_PARAM_ARG, YYPARSE_PARAM_DECL):
+       Treat C++ just like Standard C instead of trying to support
+       namespace cleanliness.
+
+2002-02-14  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (else): Adjust to Andreas' change.
+
+2002-02-14  Akim Demaille  <akim@epita.fr>
+
+       * lib/Makefile.am (EXTRA_DIST): Ship strnlen.c.
+
+2002-02-13  Andreas Schwab  <schwab@suse.de>
+
+       * src/output.c (output_rule_data): Don't output NULL, it might
+       not be defined yet.
+
+2002-02-11  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++ (YYDEBUG, YYERROR_VERBOSE): After the prologue.
+       (Copyright notice): Update.
+
+2002-02-11  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (%nonassoc and eof): Don't include
+       nonportable headers.
+
+2002-02-08  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Correct error recovery.  Make the user able to
+       initialize the starting location.
+
+2002-02-07  Akim Demaille  <akim@epita.fr>
+
+       * tests/input.at: New.
+
+2002-02-07  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Replace some direct m4 expansions by constants.  Be
+       more consistent when naming methods and variables.  Put preprocessor
+       directives around tables only needed for debugging.
+
+2002-02-07  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++ (yy::b4_name::print_): New method, replaces yyprint in
+       C++ parsers.
+       (yy::b4_name::parse): Use print_.
+
+2002-02-07  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++ (yy::b4_name::parse): Error recovery is back.
+
+2002-02-07  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++ (yy::b4_name::error_): New method, replaces yyerror in
+       C++ parsers.
+       (yy::b4_name::parse): Build verbose error messages, and use error_.
+
+2002-02-06  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Fix m4 quoting in comments.
+
+2002-02-06  Robert Anisko  <robert@lrde.epita.fr>
+
+       * data/bison.c++: Adjust the parser code.  Fix some muscles that were
+       not expanded by m4.
+
+2002-02-05  Akim Demaille  <akim@epita.fr>
+
+       * data/bison.c++: Adjust to the M4 back end.
+       More is certainly needed.
+
+2002-02-05  Akim Demaille  <akim@epita.fr>
+
+       Give a try to M4 as a back end.
+
+       * lib/readpipe.c: New, from wdiff.
+       * src/Makefile.am (DEFS): Define PKGDATADIR, not BISON_SIMPLE and
+       BISON_HAIRY.
+       * src/system.h (BISON_HAIRY, BISON_SIMPLE): Remove the DOS and VMS
+       specific values.  Now it is m4 that performs the lookup.
+       * src/parse-skel.y: Remove.
+       * src/muscle_tab.c, src/muscle_tab.h (muscles_m4_output): New.
+       * src/output.c (actions_output, guards_output)
+       (token_definitions_output): No longer keeps track of the output
+       line number, hence remove the second argument.
+       (guards_output): Check against the guard member of a rule, not the
+       action member.
+       Adjust callers.
+       (output_skeleton): Don't look for the skeleton location, let m4 do
+       that.
+       Create `/tmp/muscles.m4'.  This is temporary, a proper temporary
+       file will be used.
+       Invoke `m4' on m4sugar.m4, muscles.m4, and the skeleton.
+       (prepare): Given that for the time being changesyntax is not
+       usable in M4, rename the muscles using `-' to `_'.
+       Define `defines_flag', `output_parser_name' and `output_header_name'.
+       * src/output.h (actions_output, guards_output)
+       (token_definitions_output): Adjust prototypes.
+       * src/scan-skel.l: Instead of scanning the skeletons, it now
+       processes the output of m4: `__oline__' and `#output'.
+       * data/bison.simple: Adjust to be used by M4(sugar).
+       * tests/Makefile.am: Use check_SCRIPTS to make sure `bison' is up
+       to date.
+       * tests/bison.in: Use the secrete envvar `BISON_PKGDATADIR'
+       instead of the dead `BISON_SIMPLE' and `BISON_HAIRY'.
+       * data/m4sugar/m4sugar.m4, data/m4sugar/version.m4: New,
+       shamelessly stolen from CVS Autoconf.
+
+2002-02-05  Akim Demaille  <akim@epita.fr>
+
+       * lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
+       * configure.in: Check for the declarations of free and malloc.
+       * src/muscle_tab.c: Adjust.
+
+2002-02-05  Akim Demaille  <akim@epita.fr>
+
+       * src/muscle_tab.c (muscle_init): Don't default to NULL muscle
+       which have no values.
+
+2002-02-05  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
+       * data/: here.
+
+2002-01-29  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYSIZE_T): Do not define merely because
+       YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
+       On some platforms, <alloca.h> does not declare YYSTD (size_t).
+
+2002-01-27  Akim Demaille  <akim@epita.fr>
+
+       Fix `%nonassoc and eof'.
+
+       * src/state.c (errs_dup): Aaaah!  The failure was due to bytes
+       which were not properly copied!  Replace
+       memcpy (res->errs, src->errs, src->nerrs);
+       with
+       memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
+       !!!
+       * tests/regression.at (%nonassoc and eof): Adjust to newest
+       Autotest: `.' is not in the PATH.
+
+2002-01-27  Akim Demaille  <akim@epita.fr>
+
+       * tests/sets.at (AT_EXTRACT_SETS): New.
+       (Nullable): Use it.
+       (Firsts): New.
+
+2002-01-26  Akim Demaille  <akim@epita.fr>
+
+       * tests/actions.at, tests/calc.at, tests/headers.at,
+       * tests/torture.at: Adjust to the newest Autotest which no longer
+       forces `.' in the PATH.
+
+2002-01-25  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (%nonassoc and eof): New.
+       Suggested by Robert Anisko.
+
+2002-01-24  Akim Demaille  <akim@epita.fr>
+
+       Bison dumps core when trying to complain about broken input files.
+       Reported by Cris van Pelt.
+
+       * src/lex.c (parse_percent_token): Be sure to set token_buffer.
+       * tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
+       into...
+       (Invalid inputs): Strengthen: exercise parse_percent_token.
+
+2002-01-24  Robert Anisko  <robert.anisko@epita.fr>
+
+       * src/Makefile.am: Add bison.c++.
+       * src/bison.c++: New skeleton.
+
+2002-01-21  Paolo Bonzini <bonzini@gnu.org>
+
+       * po/it.po: New.
+
+2002-01-21  Kees Zeelenberg  <kzlg@users.sourceforge.net>
+
+       * src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
+
+2002-01-20  Marc Autret  <marc@gnu.org>
+
+       * src/files.c (compute_output_file_names): Fix
+
+2002-01-20  Marc Autret  <marc@gnu.org>
+
+       * tests/output.at: New test.
+       * src/files.c (compute_base_names): Don't map extensions when
+       the YACC flag is set, use defaults.
+       Reported by Evgeny Stambulchik.
+
+2002-01-20  Marc Autret  <marc@gnu.org>
+
+       * src/system.h: Need to define __attribute__ away for non-GCC
+       compilers as well (i.e. the vendor C compiler).
+       Suggested by Albert Chin-A-Young.
+
+2002-01-11  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * lib/hash.h, lib/hash.c: Renamed __P to PARAMS and used the
+       canonical definition.
+       * src/system.h: Use the canonical definition for PARAMS (avoids
+       a conflict with the macro from lib/hash.h).
+
+2002-01-11  Akim Demaille  <akim@epita.fr>
+
+       * configure.in: Use AC_FUNC_STRNLEN.
+       Fixes the failures observed on AIX 4.3 by H.Merijn Brand.
+
+2002-01-09  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c, src/files.h (output_infix): New.
+       (tab_extension): Remove.
+       (compute_base_names): Compute the former, drop the latter.
+       * src/output.c (prepare): Insert the muscles `output-infix', and
+       `output-suffix'.
+       * src/parse-skel.y (string, string.1): New.
+       (section.header): Use it.
+       (section.yacc): Remove.
+       (prefix): Remove too.
+       * src/scan-skel.l: Adjust.
+       * src/bison.simple, src/bison.hairy: Adjust.
+
+2002-01-09  Akim Demaille  <akim@epita.fr>
+
+       * configure.in (WERROR_CFLAGS): Compute it.
+       * src/Makefile.am (CFLAGS): Pass it.
+       * tests/atlocal.in (CFLAGS): Idem.
+       * src/files.c: Fix a few warnings.
+       (get_extension_index): Remove, unused.
+
+2002-01-08  Akim Demaille  <akim@epita.fr>
+
+       * src/getargs.c (AS_FILE_NAME): New.
+       (getargs): Use it to convert DOSish file names.
+       * src/files.c (base_name): Rename as full_base_name to avoid
+       clashes with `base_name ()'.
+       (filename_split): New.
+       (compute_base_names): N-th rewrite, using filename_split.
+
+2002-01-08  Akim Demaille  <akim@epita.fr>
+
+       * lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
+       New, stolen from the Fileutils 4.1.
+       * lib/Makefile.am (libbison_a_SOURCES): Adjust.
+       * configure.in: Check for the presence of memrchr, and of its
+       prototype.
+
+2002-01-07  Tim Van Holder  <tim.van.holder@pandora.be>
+
+       * lib/hash.h (__P): Added definition for this macro.
+       * src/Makefile.am: Add parse-skel.c and scan-skel.c to
+       BUILT_SOURCES, to ensure they are generated first.
+       * src/parse-skel.y: Use YYERROR_VERBOSE instead of
+       %error-verbose to allow bootstrapping with bison 1.30x.
+
+2002-01-06  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (parse_braces): Don't fetch the next char, the
+       convention is to fetch on entry.
+       * tests/torture.at (GNU Cim Grammar): Reintroduce their weird
+       'switch' without a following semicolon.
+       * tests/regression.at (braces parsing): New.
+
+2002-01-06  Akim Demaille  <akim@epita.fr>
+
+       Bison is dead wrong in its RR conflict reports.
+
+       * tests/torture.at (GNU Cim Grammar): New.
+       * src/conflicts.c (count_rr_conflicts): Fix.
+
+2002-01-06  Akim Demaille  <akim@epita.fr>
+
+       Creating package.m4 from configure.ac causes too many problems.
+
+       * tests/Makefile.am (package.m4): Create it by hand,
+       AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.
+
+2002-01-06  Akim Demaille  <akim@epita.fr>
+
+       * src/Makefile.am (bison_SOURCES): Add parse-skel.h and
+       skeleton.h.
+
+2002-01-04  Paul Eggert  <eggert@twinsun.com>
+
+       * doc/bison.texinfo (Debugging):
+       Remove YYSTDERR; it's no longer defined or used.
+       Also, s/cstdio.h/cstdio/.
+
+2002-01-03  Akim Demaille  <akim@epita.fr>
+
+       * tests/bison.in, tests/atlocal.in: Adjust to CVS Autoconf.
+
+2002-01-03  Akim Demaille  <akim@epita.fr>
+
+       * src/parse-skel.y (process_skeleton): Don't bind the parser's
+       tracing code to --trace, wait for a better --trace option, with
+       args.
+
+2002-01-03  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.simple (YYSTDERR): Remove, replace `stderr'.
+       The ISO C++ standard is extremely clear about it: stderr is
+       considered a macro, not a regular symbol (see table 94 `Header
+       <cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
+       Therefore std:: does not apply to it.  It still does with fprintf.
+       Also, s/cstdio.h/cstdio/.
+
+2002-01-03  Akim Demaille  <akim@epita.fr>
+
+       * lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
+       for non system headers.
+
+2002-01-02  Akim Demaille  <akim@epita.fr>
+
+       Equip the skeleton chain with location tracking, runtime trace,
+       pure parser and scanner.
+
+       * src/parse-skel.y: Request a pure parser, locations, and prefix
+       renaming.
+       (%union): Having several members with the same type does not help
+       type mismatches, simplify.
+       (YYPRINT, yyprint): New.
+       (yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
+       (skel_error): this.
+       Handle locations.
+       * src/scan-skel.l: Adjust to these changes.
+       * src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
+       (LOCATION_PRINT, skel_control_t): New.
+
+2001-12-30  Akim Demaille  <akim@epita.fr>
+
+       * src/parse-skel.y: Get rid of the shift/reduce conflict:
+       replace `gb' with BLANKS.
+       * src/scan-skel.l: Adjust.
+
+2001-12-30  Akim Demaille  <akim@epita.fr>
+
+       * src/system.h: We don't need nor want bcopy.
+       Throw away MS-DOS crap: we don't need getpid.
+       * configure.in: We don't need strndup.  It was even causing
+       problems: because Flex includes the headers *before* us,
+       _GNU_SOURCE is not defined by config.h, and therefore strndup was
+       not visible.
+       * lib/xstrndup.c: New.
+       * src/scan-skel.l: Use it.
+       Be sure to initialize yylval.muscle member when scanning a MUSCLE.
+       * src/parse-skel.y: Use %directives instead of #defines.
+
+2001-12-30  Akim Demaille  <akim@epita.fr>
+
+       * src/skeleton.h: New.
+       * src/output.c (output_parser, output_master_parser): Remove, dead
+       code.
+       * src/output.h (get_lines_number, actions_output, guards_output)
+       (token_definitions_output): Prototype them.
+       * src/parse-skel.y: Add the license notice.
+       Include output.h and skeleton.h.
+       (process_skeleton): Returns void, and takes a single parameter.
+       * src/scan-skel.l: Add the license notice.
+       Include skeleton.h.
+       Don't use %option yylineno: it seems that then Flex imagines
+       REJECT has been used, and therefore it won't reallocate its
+       buffers (which makes no other sense to me than a bug).  It results
+       in warnings for `unused: yy_flex_realloc'.
+
+2001-12-30  Robert Anisko  <robert.anisko@epita.fr>
+
+       * src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
+       (MUSCLE_INSERT_PREFIX): ...to there.
+       * src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
+       (MUSCLE_INSERT_PREFIX): Move from here...
+
+       * src/bison.hairy: Add a section directive.  Put braces around muscle
+       names.  This parser skeleton is still broken, but Bison should not
+       choke on a bad muscle 'syntax'.
+       * src/bison.simple: Add a section directive.  Put braces around muscle
+       names.
+
+       * src/files.h (strsuffix, stringappend): Add declarations.
+       (tab_extension): Add declaration.
+       (short_base_name): Add declaration.
+
+       * src/files.c (strsuffix, stringappend): No longer static.  These
+       functions are used in the skeleton parser.
+       (tab_extension): New.
+       (compute_base_names): Use the computations done in this function
+       to guess if the generated parsers should have '.tab' in their
+       names.
+       (short_base_name): No longer static.
+
+       * src/output.c (output_skeleton): New.
+       (output): Disable call to output_master_parser, and give a try to
+       a new skeleton handling system.
+       (guards_output, actions_output): No longer static.
+       (token_definitions_output, get_lines_number): No longer static.
+
+       * configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
+
+       * src/Makefile.am (bison_SOURCES): Add scan-skel.l and
+       parse-skel.y.
+
+       * src/parse-skel.y: New file.
+       * src/scan-skel.l: New file.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       %name-prefix is broken.
+
+       * src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
+       Adjust all dependencies.
+       * tests/headers.at (export YYLTYPE): Strengthen this test: use
+       %name-prefix.
+
+       Renaming yylval but not yylloc is not consistent.  Now we do.
+
+       * src/bison.simple: Prefix yylloc if used.
+       * doc/bison.texinfo (Decl Summary): Document that.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo: Promote `%long-directive' over
+       `%long_directive'.
+       Remove all references to fixed-output-files, yacc is enough.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
+       user prologue.  These are defaults.
+       * tests/actions.at (Mid-rule actions): Make sure the user can
+       define YYDEBUG and YYERROR_VERBOSE.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (header_output): Don't forget to export YYLTYPE and
+       yylloc.
+       * tests/headers.at (export YYLTYPE): New, make sure it does.
+       * tests/regression.at (%union and --defines, Invalid CPP headers):
+       Move to...
+       * tests/headers.at: here.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h (rule_s): Member `assoc' is of type `associativity'.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/actions.at (Mid-rule actions): Output on a single line
+       instead of several.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * doc/bison.texinfo: Formatting changes.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Don't store the token defs in a muscle, just be ready to output it
+       on command.  Now possible via `symbols'.  Fixes a memory leak.
+
+       * src/output.c (token_definitions_output): New.
+       (output_parser, header_output): Use it.
+       * src/reader.c (symbols_save): Remove.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.simple: Do not provide a default for YYSTYPE and
+       YYLTYPE before the user's prologue.  Otherwise it's hardly... a
+       default.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Mid-rule actions are simply... ignored!
+
+       * src/reader.c (readgram): Be sure to attach mid-rule actions to
+       the empty-rule associated to the dummy symbol, not to the host
+       rule.
+       * tests/actions.at (Mid-rule actions): New.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Memory leak.
+
+       * src/reader.c (reader): Free grammar.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Memory leak.
+
+       * src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
+       since it allocates it for each state, although only one is needed.
+       (allocate_storage): Do it here.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/options.h, src/options.c (create_long_option_table): Rename
+       as...
+       (long_option_table_new): this, with a clearer prototype.
+       (percent_table): Remove, unused,
+       * src/getargs.c (getargs): Adjust.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
+       * src/print.c, src/print_graph.c, src/state.h: Rename state_table
+       as states.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (build_relations): Rename `states' as `states1'.
+       Sorry, I don't understand exactly what it is, no better name...
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
+       * src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
+       * src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
+       as rules.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
+       ago.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c, src/reader.h (user_toknums): Remove.
+       Adjust all users to use symbols[i]->user_token_number.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c, src/gram.h (sprec, sassoc): Remove.
+       Adjust all users to use symbols[i]->prec or ->assoc.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c, src/reader.h (tags): Remove.
+       Adjust all users to use symbols[i]->tag.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h, src/gram.c (symbols): New, similar to state_table
+       and rule_table.
+       * src/reader.c (packsymbols): Fill this table.
+       Drop sprec.
+       * src/conflicts.c (resolve_sr_conflict): Adjust.
+       * src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
+       single table.
+       Use symbols[i]->tag instead of tags[i].
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
+       In addition, put a comment in there, to replace...
+       * tests/regression.at (%union and C comments): Remove.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Web2c Actions): Blindly move the actual
+       output as expected output.  The contents *seem* right to me, but I
+       can't pretend reading perfectly parser tables...  Nonetheless, all
+       the other tests pass correctly, the table look OK, even though the
+       presence of `$axiom' is to be noted: AFAICS it is useless (but
+       harmless).
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Don't add the rule 0 if there were no
+       rules read.  In other words, add it _after_ having performed
+       grammar sanity checks.
+       Fixes the `tests/regression.at (Invalid input: 1)' Failure.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
+       visible, and some states have now a different number.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Bind the initial rule's lineno to that
+       of the first rule.
+       * tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
+       (Solved SR Conflicts): Adjust rule 0's line number.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       Fix the `GAWK Grammar' failure.
+
+       * src/LR0.c (final_state): Initialize to -1 so that we do compute
+       the reductions of the first state which was mistakenly confused
+       with the final state because precisely final_state was initialized
+       to 0.
+       * tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
+       now noticed by Bison.
+       * tests/regression.at (Rule Line Numbers): Adjust: state 0 does
+       have a reduction on $default.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.c (ritem_print): Be sure to subtract 1 when displaying
+       rule line numbers.
+       * src/closure.c (print_closure): Likewise.
+       * src/derives.c (print_derives): Likewise.
+       * tests/sets.at (Nullable): Adjust: the rule numbers are correct
+       now.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (lookaheads_print): New.
+       (lalr): Call it when --trace-flag.
+       * tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
+       are dumped.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
+       when walking through ritem, even via rule->rhs.
+       * src/reduce.c (dump_grammar, useful_production, reduce_output)
+       (useful_production, useless_nonterminals): Likewise.
+       (reduce_grammar_tables): Likewise, plus update nritems.
+       * src/nullable.c (set_nullable): Likewise.
+       * src/lalr.c (build_relations): Likewise.
+       * tests/sets.at (Nullable): Adjust.
+       Fortunately, now, the $axiom is no longer nullable.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (generate_states): Use nritems, not nitems, nor using
+       the 0-sentinel.
+       * src/gram.c (ritem_longest_rhs): Likewise.
+       * src/reduce.c (nonterminals_reduce): Likewise.
+       * src/print_graph.c (print_graph): Likewise.
+       * src/output.c (output_rule_data): Likewise.
+       * src/nullable.c (set_nullable):  Likewise.
+
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c: Comment changes.
+
+2001-12-27  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
+       cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
+       Sparc, as they were causing more porting problems than the
+       (minor) performance improvement was worth.
+
+       Also, catch up with 1.31's YYSTD.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_gram): Rely on nritems, not the
+       0-sentinel.  See below.
+       Use -1 as separator, not 0.
+       * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
+       Rely on -1 as separator in yyrhs, instead of 0.
+       * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
+       twice `Now at end of input', therefore there are two lines less to
+       expect.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * tests/regression.at (Unresolved SR Conflicts):
+       (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
+       below.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/LR0.c (new_state): Recognize the final state by the fact it
+       is reached by eoftoken.
+       (insert_start_shifting_state, insert_eof_shifting_state)
+       (insert_accepting_state, augment_automaton): Remove, since now
+       these states are automatically computed from the initial state.
+       (generate_states): Adjust.
+       * src/print.c: When reporting a rule number to the user, substract
+       1, so that the axiom rule is rule 0, and the first user rule is 1.
+       * src/reduce.c: Likewise.
+       * src/print_graph.c (print_core): For the time being, just as for
+       the report, depend upon --trace-flags to dump the full set of
+       items.
+       * src/reader.c (readgram): Once the grammar read, insert the rule
+       0: `$axiom: START-SYMBOL $'.
+       * tests/set.at: Adjust: rule 0 is now displayed, and since the
+       number of the states has changed (the final state is no longer
+       necessarily the last), catch up.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       Try to make the use of the eoftoken valid.  Given that its value
+       is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
+       is used instead of > 0 where appropriate, (ii), depend upon nritems
+       instead of the 0-sentinel.
+
+       * src/gram.h, src/gram.c (nritems): New.
+       Expected to be duplication of nitems, but for the time being...
+       * src/reader.c (packgram): Assert nritems and nitems are equal.
+       * src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
+       * src/closure.c (print_closure, print_fderives): Likewise.
+       * src/gram.c (ritem_print): Likewise.
+       * src/print.c (print_core, print_grammar): Likewise.
+       * src/print_graph.c: Likewise.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/main.c (main): If there are complains after grammar
+       reductions, then output the report anyway if requested, then die.
+       * src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
+       * src/reader.c (eoftoken): New.
+       (parse_token_decl): If the token being defined has value `0', it
+       is the eoftoken.
+       (packsymbols): No longer hack `tags' to insert `$' by hand.
+       Be sure to preserve the value of the eoftoken.
+       (reader): Make sure eoftoken is defined.
+       Initialize nsyms to 0: now eoftoken is created just like the others.
+       * src/print.c (print_grammar): Don't special case the eof token.
+       * src/regression.at: Adjust: `$' has value 0, not -1, which was a
+       lie anyway, albeit pleasant.
+       * tests/calc.at: Exercise error messages with eoftoken.
+       Change the grammar so that empty input is invalid.
+       Adjust expectations.
+       When yyungeting, be sure to use a valid yylloc: use last_yylloc.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * configure.in: Check the protos of strchr ans strspn.
+       Replace strchr if needed.
+       * src/system.h: Provide the protos of strchr, strspn and memchr if
+       missing.
+       * lib/strchr.c: New.
+       * src/reader.c (symbols_save): Use strchr.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c, src/print_graph.c (escape): New.
+       Use it to quote the TAGS outputs.
+       * src/print_graph.c (print_state): Now errors are in red, and
+       reductions in green.
+       Prefer high to wide: output the state number on a line of its own.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (reductions_new): New.
+       * src/LR0.c (set_state_table): Let all the states have a
+       `reductions', even if reduced to 0.
+       (save_reductions): Adjust.
+       * src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
+       * src/print.c (print_reductions, print_actions): Adjust.
+       * src/output.c (action_row): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h, src/state.c (errs_new, errs_dup): New.
+       * src/LR0.c (set_state_table): Let all the states have an errs,
+       even if reduced to 0.
+       * src/print.c (print_errs, print_reductions): Adjust.
+       * src/output.c (output_actions, action_row): Adjust.
+       * src/conflicts.c (resolve_sr_conflict): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c, src/conflicts.h (print_reductions): Move to...
+       * src/print.c: here.
+       (lookaheadset, shiftset): New, used as additional storage by
+       print_reductions.
+       (print_results): Adjust.
+       (print_shifts, print_gotos, print_errs): New, extracted from...
+       (print_actions): here.
+       * src/print_graph.c (print_actions): Remove dead code.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (copy_dollar, copy_at): Better checking of `n' in
+       `$n' and `@n'.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (add_lookback_edge): Use state_t instead of ints.
+       (build_relations): Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (set_goto_map): Remove a wrong but benign loop
+       duplication.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (packgram): Catch nitems overflows.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c, src/files.h (guard_obstack): Remove.
+       * src/output.c (output): Adjust.
+       * src/reader.c (parse_braces): New, factoring...
+       (copy_action, copy_guard): these two which are renamed as...
+       (parse_action, parse_guard): these.
+       As a voluntary consequence, using braces around guards is now
+       mandatory.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/gram.h (rule_t): `guard' and `guard_line' are new members.
+       * src/reader.c (symbol_list): `guard' and `guard_line' are new
+       members.
+       (symbol_list_new): Adjust.
+       (copy_action): action_line is the first line, not the last.
+       (copy_guard): Just as for actions, store the `action' only, not
+       the switch/case/break flesh.
+       Don't parse the user action that might follow the guard, let...
+       (readgram): do it, i.e., now, there can be an action after a
+       guard.
+       In other words the guard is just explicitly optional.
+       (packgram): Adjust.
+       * src/output.c (guards_output): New.
+       (output_parser): Call it when needed.
+       (output): Also free the guard and attrs obstacks.
+       * src/files.c, src/files.h (obstack_save): Remove.
+       (output_files): Remove.
+       As a result, if one needs the former `.act' file, using an
+       appropriate skeleton which requires actions and guards is now
+       required.
+       * src/main.c (main): Adjust.
+       * tests/semantic.at: New.
+       * tests/regression.at: Use `input.y' as input file name.
+       Avoid 8+3 problems by requiring input.c when the test needs the
+       parser.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (symbol_list_new): Be sure to initialize all the
+       fields.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       All the hacks using a final pseudo state are now useless.
+
+       * src/LR0.c (set_state_table): state_table holds exactly nstates.
+       * src/lalr.c (nLA): New.
+       (initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
+       instead of lookaheadsp from the pseudo state (nstate + 1).
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (action_row, token_actions): Use a state_t instead
+       of a integer, and nlookaheads instead of the following state's
+       lookaheadsp.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (log_resolution, flush_shift)
+       (resolve_sr_conflict, set_conflicts, solve_conflicts)
+       (count_sr_conflicts, count_rr_conflicts, conflicts_output)
+       (conflicts_print, print_reductions): Use a state_t instead of an
+       integer when referring to a state.
+       As much as possible, depend upon nlookaheads, instead of the
+       `lookaheadsp' member of the following state (since lookaheads of
+       successive states are successive, the difference between state n + 1
+       and n served as the number of lookaheads for state n).
+       * src/lalr.c (add_lookback_edge): Likewise.
+       * src/print.c (print_core, print_actions, print_state)
+       (print_results): Likewise.
+       * src/print_graph.c (print_core, print_actions, print_state)
+       (print_graph): Likewise.
+       * src/conflicts.h: Adjust.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/bison.hairy: Formatting/comment changes.
+       ANSIfy.
+       Remove `register' indications.
+       Add plenty of `static'.
+
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (prepare): Drop the muscle `ntbase' which
+       duplicates ntokens.
+       * src/bison.simple: Formatting/comment changes.
+       Use YYNTOKENS only, which is documented, but not YYNTBASE, which
+       is an undocumented synonym.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_table_data): Change the prototype to use
+       `int' for array ranges: some invocations do pass an int, not a
+       short.
+       Reported by Wayne Green.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       Some actions of web2c.y are improperly triggered.
+       Reported by Mike Castle.
+
+       * src/lalr.c (traverse): s/F (i)[k] = F (j)[k]/F (j)[k] = F (i)[k]/.
+       * tests/regression.at (Web2c): Rename as...
+       (Web2c Report): this.
+       (Web2c Actions): New.
+
+2001-12-22  Akim Demaille  <akim@epita.fr>
+
+       Reductions in web2c.y are improperly reported.
+       Reported by Mike Castle.
+
+       * src/conflicts.c (print_reductions): Fix.
+       * tests/regression.at (Web2c): New.
+
+2001-12-18  Akim Demaille  <akim@epita.fr>
+
+       Some host fail on `assert (!"foo")', which expands to
+       ((!"foo") ? (void)0 : __assert("!"foo."", __FILE__, __LINE__))
+       Reported by Nelson Beebee.
+
+       * src/output.c, src/vcg.c: Replace `assert (!"it succeeded")' with
+       `#define it_succeeded 0' and `assert (it_succeeded)'.
+
+2001-12-17  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Don't hard code the skeleton line and filename.
+       * src/output.c (output_parser): Rename 'line' as 'output_line'.
+       New line counter 'skeleton_line' (skeleton-line muscle).
+
+2001-12-17  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS, doc/bison.texinfo, doc/bison.1, doc/bison.rnh: Document that
+       YYDEBUG must be defined to a nonzero value.
+
+       * src/bison.simple (yytname): Do not assume that the user defines
+       YYDEBUG to a properly parenthesized expression.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (state_t): Rename lookaheads as lookaheadsp.
+       nlookaheads is a new member.
+       Adjust all users.
+       * src/lalr.h (nlookaheads): Remove this orphan declaration.
+       * src/lalr.c (initialize_lookaheads): Set nlookaheads for each
+       state.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/files.h, src/files.c (open_files, close_files): Remove.
+       * src/main.c (main): Don't open/close files, nor invoke lex_free,
+       let...
+       * src/reader.c (reader): Do it.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (print_reductions): Formatting changes.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (flush_shift): Also adjust lookaheadset.
+       (flush_reduce): New.
+       (resolve_sr_conflict): Adjust.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (output_obstack): Be static and rename as...
+       (format_obstack): this, to avoid any confusion with files.c's
+       output_obstack.
+       * src/reader.h (muscle_obstack): Move to...
+       * src/output.h: here, since it's defined in output.c.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c (action_row, save_column, default_goto)
+       (sort_actions, matching_state, pack_vector): Better variable
+       locality.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/output.c: Various formatting changes.
+
+2001-12-17  Akim Demaille  <akim@epita.fr>
+
+       * src/files.c (output_files): Free the output_obstack.
+       * src/main.c (main): Call print and print_graph conditionally.
+       * src/print.c (print): Work unconditionally.
+       * src/print_graph.c (print_graph): Work unconditionally.
+       * src/conflicts.c (log_resolution): Output only if verbose_flag.
+
+2001-12-16  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (actions_output): Fix. When we use %no-lines,
+       there is one less line per action.
+
+2001-12-16  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Remove a useless #line directive.
+       s/#line %%line %%skeleton/#line %%line "%%parser-file-name"/'.
+       * src/output.c (get_lines_number): New.
+       (output_parser): Adjust, now takes care about the lines of a
+       output muscles.
+       Fix line numbering.
+       (actions_output): Computes the number of lines taken by actions.
+       (output_master_parser): Insert new skeleton which is the name of
+       the output parser file name.
+
+2001-12-15  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple [YYERROR_VERBOSE]: Restore backward compatibility.
+
+2001-12-15  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (output_gram): Keep track of the hairy one.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Make `make distcheck' work.
+
+       * lib/Makefile.am (INCLUDES): Add top_srcdir/intl, since hash uses
+       system.h which uses libgettext.h.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/nullable.c (set_nullable): Useless rules must be skipped,
+       otherwise, since we range over their symbols, we might look at a
+       nonterminal which no longer ``exists'', i.e., it is not counted in
+       `nvars', hence we overflow our arrays.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       The header can also be produced directly, without any obstack!
+       Yahoo!
+
+       * src/files.c, src/files.h (defines_obstack): Remove.
+       (compute_header_macro): Global.
+       (defines_obstack_save): Remove.
+       * src/reader.c (parse_union_decl): No longer output to
+       defines_obstack: its content can be found in the `stype' muscle
+       anyway.
+       (output_token_translations): Merge into...
+       (symbols_output): this.
+       Rename as...
+       (symbols_save): this.
+       (reader): Adjust.
+       * src/output.c (header_output): New.
+       (output): Call it.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (parse_union_decl): Instead of handling two obstack
+       simultaneously, use one to define the `stype' muscle, and use the
+       value of the latter to fill defines_obstack.
+       (copy_comment): Remove.
+       (copy_comment2): Work for a single obstack.
+       Rename as...
+       (copy_comment): this.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c, src/lex.h (xgetc): No longer static.
+       * src/reader.c (parse_union_decl): Revamp.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Still making progress in separating Bison into (i) input, (ii)
+       process, (iii) output: now we can directly output the parser file
+       without using table_obstack at all.
+
+       * src/files.c, src/files.h (table_obstack): Bye bye.
+       (parser_file_name): New.
+       * src/files.c (compute_output_file_names): Compute it.
+       * src/output.c (actions_output, output_parser)
+       (output_master_parser): To a file instead of an obstack.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       Attach actions to rules, instead of pre-outputting them to
+       actions_obstack.
+
+       * src/gram.h (rule_t): action and action_line are new members.
+       * src/reader.c (symbol_list): Likewise.
+       (copy_action): Save the actions within the rule.
+       (packgram): Save them in rule_table.
+       * src/output.c (actions_output): New.
+       (output_parser): Use it on `%%actions'.
+       (output_rule_data): Don't free rule_table.
+       (output): Do it.
+       (prepare): Don't save the `action' muscle.
+       * src/bison.simple: s/%%action/%%actions/.
+
+2001-12-15  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (copy_action): When --yacc, don't append a `;'
+       to the user action: let it fail if lacking.
+       Suggested by Arnold Robbins and Tom Tromey.
+
+2001-12-14  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c (literalchar): Simply return the char you decoded, non
+       longer mess around with obstacks and int pointers.
+       Adjust all callers.
+
+2001-12-14  Akim Demaille  <akim@epita.fr>
+
+       * src/lex.c (literalchar): Don't escape the special characters,
+       just decode them, and keep them as char (before, eol was output as
+       the 2 char string `\n' etc.).
+       * src/output.c (output_rule_data): Use quotearg to output the
+       token strings.
+
+2001-12-13  Paul Eggert  <eggert@twinsun.com>
+
+       * src/bison.simple (YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE):
+       Do not infringe on the global user namespace when using C++.
+       (YYFPRINTF, YYSTDERR): New macros, needed for the above.
+       All uses of `fprintf' and `stderr' changed.
+
+       * doc/bison.texinfo: Document YYFPRINTF, YYSTDERR.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       The computation of nullable is broken: it doesn't handle empty
+       RHS's properly.
+
+       * tests/torture.at (GNU AWK Grammar): New.
+       * tests/sets.at (Nullable): New.
+       * src/nullable.c (set_nullable): Instead of blindly looping over
+       `ritems', loop over the rules, and then over their rhs's.
+
+       Work around Autotest bugs.
+
+       * src/warshall.c (bitmatrix_print): Don't use `+--+' as table
+       frame, because Autotest understand lines starting with a `+' as
+       traces from the shell.  Then, they are not processed properly.
+       Admittedly an Autotest bug, but we don't have time to wait for
+       Autotest to catch up.
+       * tests/regression.at (Broken Closure): Adjust to the new table
+       frames.
+       Move to...
+       * tests/sets.at: here.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/closure.c (closure): Use nrules instead of playing tricks
+       with BITS_PER_WORD.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/print.c (print_actions): Output the handling of `$' as the
+       traces do: shifting the token EOF.  Before EOF was treated as a
+       nonterminal.
+       * tests/regression.at: Adjust some tests.
+       * src/print_graph.c (print_core): Complete the set of items via
+       closure.  The next-to-final and final states are still unsatisfying,
+       but that's to be addressed elsewhere.
+       No longer output the rule numbers, but do output the state number.
+       A single loop for the shifts + gotos is enough, but picked a
+       distinct color for each.
+       (print_graph): Initialize and finalize closure.
+
+2001-12-13  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Remove dead code, an strip useless
+       braces.
+       (get_type): Remove, unused.
+
+2001-12-12  Akim Demaille  <akim@epita.fr>
+
+       * src/complain.h, src/complain.c: Remove error_one_per_line, rely
+       on that of lib/error.c.
+
+2001-12-12  Akim Demaille  <akim@epita.fr>
+
+       Some hosts don't like `/' in includes.
+
+       * src/system.h: Include libgettext.h without qualifying the path.
+       * src/Makefile.am (INCLUDES): Add $(top_srcdir)/intl, remove
+       $(top_srcdir).
+
+2001-12-11  Marc Autret  <autret_m@epita.fr>
+
+       * src/output.c (output_parser): Remove useless muscle.
+
+2001-12-11  Marc Autret  <autret_m@epita.fr>
+
+       * src/bison.simple: Remove #line just before %%epilogue. It
+       is now handled in ...
+       * src/reader.c (read_additionnal_code): Add the output of a
+       #line for the epilogue.
+
+2001-12-10  Marc Autret  <autret_m@epita.fr>
+
+       * src/reader.c (copy_definition): Re-use CPP-outed code which
+       replace precedent remove.
+       * src/bison.simple: Remove #line before %%prologue because
+       %%input-line is wrong at this time.
+
+2001-12-10  Marc Autret  <autret_m@epita.fr>
+
+       * src/reader.c (symbols_output): Clean up.
+       * src/output.c (output_gram, output): Clean up.
+
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       * src/lalr.c (initialize_lookaheads): New.  Extracted from...
+       * src/LR0.c (set_state_table): here.
+       * src/lalr.c (lalr): Call it.
+
+2001-12-10  Akim Demaille  <akim@epita.fr>
+
+       * src/state.h (shifts): Remove the `number' member: shifts are
+       attached to state, hence no longer need to be labelled with a
+       state number.
+
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
        since shifts are attached, it is no longer needed to looking
        merely by its id: its number.
 
        since shifts are attached, it is no longer needed to looking
        merely by its id: its number.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Better variable locality.
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Better variable locality.
        the start symbol being shifted, then there is shift for the start
        symbol from the initial state.
 
        the start symbol being shifted, then there is shift for the start
        symbol from the initial state.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Call `insert_eof_shifting_state'
        invoked.
        * tests/regression.at (Rule Line Numbers): Adjust.
 
        invoked.
        * tests/regression.at (Rule Line Numbers): Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Now that all states have shifts,
        merge the two cases addition shifts to the initial state.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (augment_automaton): Now that all states have shifts,
        merge the two cases addition shifts to the initial state.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/lalr.c (set_state_table): Move to...
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/lalr.c (set_state_table): Move to...
        * src/LR0.c (generate_states): do it.
        * src/LR0.h (first_state): Remove, only the table is used.
 
        * src/LR0.c (generate_states): do it.
        * src/LR0.h (first_state): Remove, only the table is used.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.h (first_shift, first_reduction): Remove.
        * src/lalr.c: Don't use first_shift: find shifts through the
        states.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.h (first_shift, first_reduction): Remove.
        * src/lalr.c: Don't use first_shift: find shifts through the
        states.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c: Attach shifts to states as soon as they are
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c: Attach shifts to states as soon as they are
        * src/lalr.c (set_state_table): Instead of assigning shifts to
        state, just assert that the mapping was properly done.
 
        * src/lalr.c (set_state_table): Instead of assigning shifts to
        state, just assert that the mapping was properly done.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (insert_start_shift): Rename as...
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/LR0.c (insert_start_shift): Rename as...
        * src/reader.c (symbols_output): Likewise.
        * src/vmsgetargs.c: Vaguely adjust, but who cares?
 
        * src/reader.c (symbols_output): Likewise.
        * src/vmsgetargs.c: Vaguely adjust, but who cares?
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/muscle_tab.c (muscle_init): NULL is a better default than
        `"0"'.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/muscle_tab.c (muscle_init): NULL is a better default than
        `"0"'.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/reader.c (reader): Calling symbols_output once is enough.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/reader.c (reader): Calling symbols_output once is enough.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Now that states have a complete set of members, the linked list of
        the reductions, then the states: free all the states and their
        members.
 
        the reductions, then the states: free all the states and their
        members.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/options.c (OPTN, DRTV, BOTH): New.
        (option_table): Use them.
 
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/options.c (OPTN, DRTV, BOTH): New.
        (option_table): Use them.
 
-       
        * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
        the job of system.h.
        * src/options.c: Don't include stdio.h and xalloc.h for the same
        reasons.
 
        * src/muscle_tab.c: Don't include xalloc.h and string.h: that's
        the job of system.h.
        * src/options.c: Don't include stdio.h and xalloc.h for the same
        reasons.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/output.c (output, prepare): Make sure the values of the
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        * src/output.c (output, prepare): Make sure the values of the
        * m4/m4.m4: Remove.
        * tests/Makefile.am: Adjust.
 
        * m4/m4.m4: Remove.
        * tests/Makefile.am: Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        One structure for states is enough, even though theoretically
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        One structure for states is enough, even though theoretically
        * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
        * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
 
        * src/print_graph.c, src/LR0.c, src/LR0.h, src/conflicts.c
        * src/lalr.c, src/lalr.h, src/output.c, src/print.c: Adjust.
 
-       
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Bison dumps core on bash.y.
 2001-12-10  Akim Demaille  <akim@epita.fr>
 
        Bison dumps core on bash.y.
        * src/files.h (graph_obstack): New extern declaration.
        * src/Makefile.am: Add new source files.
 
        * src/files.h (graph_obstack): New extern declaration.
        * src/Makefile.am: Add new source files.
 
-2001-08-06  Marc Autret   <autret_m@epita.fr>
+2001-08-06  Marc Autret  <autret_m@epita.fr>
 
        * src/print_graph.c, src/print_graph.h (graph): New.
        * src/vcg.h: New file.
 
        * src/print_graph.c, src/print_graph.h (graph): New.
        * src/vcg.h: New file.