+2002-12-08 Paul Eggert <eggert@twinsun.com>
+
+ * 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
+ <http://mail.gnu.org/pipermail/bug-bison/2002-December/001949.html>.
+
+2002-12-06 Paul Eggert <eggert@twinsun.com>
+
+ 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 <quotearg.h>.
+ (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 <quotearg.h>; 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.
+ (<INITIAL,SC_AFTER_IDENTIFIER>): New initial context. Move all
+ processing of Yacc white space and equivalents here.
+ (<INITIAL>{id}): Save id_loc. Begin state SC_AFTER_IDENTIFIER
+ instead of returning ID immediately, since we need to search for
+ a subsequent colon.
+ (<INITIAL>"'", "\""): Save token_start.
+ (<INITIAL>"%{", "{", "%%"): Save code_start.
+ (<SC_AFTER_IDENTIFIER>): New state, looking for a colon.
+ (<SC_YACC_COMMENT>, <SC_COMMENT>, <SC_LINE_COMMENT>):
+ BEGIN context_state at end, not INITIAL.
+ (<SC_ESCAPED_STRING>"\"", <SC_ESCAPED_CHARACTER>"'",
+ <SC_BRACED_CODE>"}", <SC_PROLOGUE>"%}", <SC_EPILOGUE><<EOF>>):
+ Return correct token start.
+ (<SC_BRACED_CODE,SC_PROLOGUE,SC_EPILOGUE>): 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 <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * configure.ac (AC_REPLACE_FUNCS): Add strtoul.
+ * lib/strtoul.c: New file, from gnulib.
+ This fixes a porting bug reported by Peter Klein in
+ <http://mail.gnu.org/pipermail/bug-bison/2002-December/001944.html>.
+
+2002-11-30 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ 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
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001929.html>.
+ * 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 <eggert@twinsun.com>
+
+ 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 <eggert@twinsun.com>
+
+ * 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 <eggert@twinsun.com>
+
+ * lib/argmatch.c, lib/argmatch.h: Sync with gnulib.
+
+2002-11-20 Paul Eggert <eggert@twinsun.com>
+
+ Avoid use of <assert.h>, 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 <assert.h>.
+ * 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 <eggert@twinsun.com>
+
+ * 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
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001892.html>.
+
+2002-11-18 Akim Demaille <akim@epita.fr>
+
+ * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a
+ space.
+ From Tim Van Holder.
+
+2002-11-17 Paul Eggert <eggert@twinsun.com>
+
+ 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 <akim@epita.fr>
+
+ 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 <akim@epita.fr>
+
+ * 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 <akim@epita.fr>
+
+ 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 <eggert@twinsun.com>
+
+ * data/yacc.c: Avoid over-quoting of __line__ and __file__.
+
+2002-11-15 Paul Eggert <eggert@twinsun.com>
+
+ * 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 <akim@epita.fr>
+
+ * 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 <tim.van.holder@pandora.be>
+
+ * m4/prereq.m4: Removed the commented jm_PREREQ_HASH
+ definition; avoids potential autoreconf problems.
+
+2002-11-15 Akim Demaille <akim@epita.fr>
+
+ 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 <Hilfinger@CS.Berkeley.EDU>
+
+ * data/glr.c (yyFail): Always set yyerrflag. Corrects regression
+ on input.at test.
+
+2002-11-14 Paul Eggert <eggert@twinsun.com>
+
+ * src/output.c (output_skeleton): Call xfopen instead of
+ duplicating xfopen's body.
+
+ Fix bugs reported by Nelson H. F. Beebe in
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
+
+ * 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. This should fix
+ the input.at bug reported by Nelson H. F. Beebe in
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001893.html>.
+
+2002-11-14 Akim Demaille <akim@epita.fr>
+
+ * 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 <akim@epita.fr>
+
+ * 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 <akim@epita.fr>
+
+ * 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 <eggert@twinsun.com>
+
+ Fix some bugs reported by Albert Chin-A-Young in
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001881.html>.
+
+ * 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 <akim@epita.fr>
+
+ * 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 <eggert@twinsun.com>
+
+ 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
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001872.html>.
+
+ * 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
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001873.html>.
+
+ * 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:
+ <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
+ 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 <china@thewrittenword.com>
+
+ * 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 <akim@epita.fr>
+
+ * Makefile.maint: Sync with Autoconf:
+ (local_updates): New.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * po/POTFILES.in (src/lalr.c, src/state.c): Remove
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the
+ locations.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT,
+ not yyvalue.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New.
+ Use it to test the GLR parser.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * tests/regression.at (input.y): s/YYEOF/MYEOF/, as the skeleton
+ defines it.
+ * data/glr.c (yystos): New.
+ (b4_yysymprint_generate, b4_yydestruct_generate): Invoke.
+ (YYDSYMPRINT): New.
+ (yyval): Don't define it, it is handled via M4.
+ (yyrecoverParseError): Free verbosely the discarded symbols.
+ * data/yacc.c (yysymprint): Remove, rather...
+ (b4_yysymprint_generate): invoke.
+ * data/c.m4 (b4_yysymprint_generate): New.
+ Accept pointers as arguments, as opposed to the version from
+ yacc.c.
+ (b4_yydestruct_generate): Likewise.
+ * tests/cations.at (Printers and Destructors): Use Bison directives
+ instead of CPP macros.
+ Don't rely on internal details.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4 (b4_yydestruct_generate, b4_symbol_actions): New.
+ * data/yacc.c: Rename yychar1 as yytoken, as in glr.c.
+ Don't work on yychar (i.e., do set it to YYEMPTY, don't match
+ it against YYEMPTY and so forth), work on yytoken (i.e., set
+ it to YYEMPTY etc.).
+ (yydestruct): Replace with a b4_yydestruct_generate invocation.
+ (b4_symbol_actions): Remove.
+ * data/glr.c (YYTRANSLATE): As for yacc.c, if negative, it stands
+ for 0, end-of-input.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * doc/bison.texinfo (Destructor Decl): New.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * src/tables.c (tables_generate): Use free for pointers that
+ cannot be NULL, not XFREE.
+ (pack_vector): Use assert, not fatal, for bound violations.
+ * src/state.c (state_new): Likewise.
+ * src/reader.c (reader): Likewise.
+ * src/lalr.c (set_goto_map): Likewise.
+ * src/location.h (LOCATION_PRINT): If first_line is 0, just issue
+ the file name.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l, src/reader.h (scanner_last_string_free):
+ Restore.
+ * src/scan-gram.l (last_string): Is global to the file, not to
+ yylex.
+ * src/parse-gram.y (input): Don't append the epilogue here,
+ (epilogue.opt): do it here, and free the scanner's obstack.
+ * src/reader.c (epilogue_set): Rename as...
+ (epilogue_augment): this.
+ * data/c.m4 (b4_epilogue): Defaults to empty.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * src/getargs.c (long_options): Remove duplicates.
+ * src/vmsgetargs.c, src/build.com, src/bison.cld, src/vmshlp.mar:
+ Remove.
+ * doc/bison.rnh: Remove.
+ * doc/bison.texinfo (VMS Invocation): Remove.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * src/struniq.h, src/struniq.c (struniq_t): Is const.
+ (STRUNIQ_EQ, struniq_assert, struniq_assert_p): New.
+
+ Use struniq for symbols.
+
+ * src/symtab.h (symbol_t): The tag member is a struniq.
+ (symbol_type_set): Adjust.
+ * src/symtab.c (symbol_new): Takes a struniq.
+ (symbol_free): Don't free the tag member.
+ (hash_compare_symbol_t, hash_symbol_t): Rename as...
+ (hash_compare_symbol, hash_symbol): these.
+ Use the fact that tags as struniqs.
+ (symbol_get): Use struniq_new.
+ * src/symlist.h, src/symlist.c (symbol_list_n_type_name_get):
+ Returns a strniq.
+ * src/reader.h (merger_list, grammar_currentmerge_set): The name
+ and type members are struniqs.
+ * src/reader.c (get_merge_function)
+ (grammar_current_rule_merge_set): Adjust.
+ (TYPE, current_type): Are struniq.
+
+ Use struniq for file names.
+
+ * src/files.h, src/files.c (infile): Split into...
+ (grammar_file, current_file): these.
+ * src/scan-gram.c (YY_USER_INIT, handle_syncline): Adjust.
+ * src/reduce.c (reduce_print): Likewise.
+ * src/getargs.c (getargs): Likewise.
+ * src/complain.h, src/complain.c: Likewise.
+ * src/main.c (main): Call struniqs_new early enough to use it for
+ file names.
+ Don't free the input file name.
+
+2002-11-12 Akim Demaille <akim@epita.fr>
+
+ * src/symtab.c (symbol_free): Remove dead deactivated code:
+ type_name are properly removed.
+ Don't use XFREE to free items that cannot be NULL.
+ * src/struniq.h, src/struniq.c: New.
+ * src/main.c (main): Initialize/free struniqs.
+ * src/parse-gram.y (%union): Add astruniq member.
+ (yyprint): Adjust.
+ * src/scan-gram.l (<{tag}>): Return a struniq.
+ Free the obstack bit that used to store it.
+ * src/symtab.h (symbol_t): The 'type_name' member is a struniq.
+
+2002-11-11 Paul Eggert <eggert@twinsun.com>
+
+ 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:
+ <http://mail.gnu.org/pipermail/bison-patches/2002-November/001329.html>
+
+ Use new @ escapes consistently. Represent brackets with @{ and @}
+ rather than @<:@ and @:>@, since this works a bit better with dumb
+ editors like vi. Represent @ with @@, since @ is now consistently
+ an escape. Use @oline@ and @ofile@ rather than __oline__ and
+ __ofile__, to avoid unexpected expansions. Similarly, use @output
+ rather than #output.
+
+ * data/c.m4 (b4_copyright): Omit file name from comment, since
+ the file name could contain "*/".
+ (b4_synclines_flag): Don't quote the 2nd argument; it should already
+ be quoted. All uses changed.
+
+ * data/glr.c: Use new @ escapes consistently.
+ (b4_input_suffix, b4_output_parser_suffix, b4_output_parser_name,
+ b4_output_header_suffix, b4_output_header_name, b4_header_guard):
+ Remove, since they couldn't handle arbitrary characters in file
+ names.
+ * data/lalr1.cc: Likewise.
+ * data/yacc.c: Likewise.
+
+ * src/files.c (output_infix): Remove; all uses removed.
+ * src/files.h: Likewise.
+
+ * data/glr.c: Remove use of "#ifdef b4_header_guard", since it
+ mishandled funny characters in file names, and anyway it isn't
+ needed any more.
+ * data/yacc.c: Likewise.
+ * data/lalr1.cc: Use YYSLP_NEEDED instead of b4_header_guard.
+
+ * data/glr.c (YYSTYPE_IS_TRIVIAL): Define when the .h file would.
+ * data/yacc.c: Likewise.
+
+ * src/muscle_tab.c: Include quotearg.h, since we need to quote C
+ strings now.
+ (muscle_init): Quote filename as a C string.
+ * src/muscle_tab.h (MUSCLE_GROW_STRING_PAIR): Remove; unused.
+ (MUSCLE_OBSTACK_SGROW, MUSCLE_INSERT_C_STRING): New macros.
+ * src/output.c (escaped_file_name_output): New function.
+ (prepare_symbols): Quote tokens for M4.
+ (prepare): Don't insert output_infix, output_prefix,
+ output_parser_name, output_header_name; this is now down by scan-skel.
+ Insert skeleton as a C string.
+
+ * src/output.c (user_actions_output, symbol_destructors_output,
+ symbol_printers_output): Quote filenames for C and M4.
+ * src/reader.c (prologue_augment, epilogue_set): Likewise.
+
+ * src/scan-gram.l (<SC_CHARACTER>): Don't worry about any backslash
+ escapes other than \\ and \'; this simplifies the code.
+ (<SC_STRING>): Likewise, for \\ and \".
+ (<SC_COMMENT,SC_LINE_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,
+ SC_PROLOGUE,SC_EPILOGUE>): Escape $ and @, too.
+ Use new escapes @{ and @} for [ and ].
+
+ * src/scan-skel.l (yylineno, yyoutname): Remove static vars, replacing
+ them with auto vars.
+ Switch to new escape scheme, where @ is the escape character uniformly.
+ Abort if a stray escape character is found. Avoid unbounded input
+ buffer when parsing non-escaped text.
+
+ * tests/input.at (Torturing the Scanner): Add tests that @oline@,
+ __oline__, #output, $@, and @{ do not have unintended meanings.
+
+2002-11-09 Paul Eggert <eggert@twinsun.com>
+
+ Fix the test failure due to GCC warnings described in
+ <http://mail.gnu.org/pipermail/bug-bison/2002-November/001815.html>.
+ * 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.
+ (yygetLRActions, yyrecoverParseError): Use them.
+
+ * src/scan-gram.l (unexpected_end_of_file): Fix bug: columns were
+ counted in the token inserted at end of file. Now takes
+ location_t *, not location_t, so that the location can be
+ adjusted. All uses changed.
+
+ * tests/regression.at (Invalid inputs): Adjust wording in
+ diagnostic to match the new behavior.
+
+ * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR,
+ AT_DATA_HORIZONTAL_GRAMMAR, AT_DATA_LOOKAHEADS_GRAMMAR,
+ AT_DATA_STACK_TORTURE): Replace `assert (x);' with `if (! (x))
+ abort ();'. This reduces the runtime of the "Many lookaheads"
+ test from 27.6 to 2.7 minutes on a 440 MHz Ultrasparc III running
+ GCC 3.2.
+
+2002-11-07 Paul Eggert <eggert@twinsun.com>
+
+ * src/parse-gram.y (CHARACTER): Remove unused token.
+ All uses removed.
+
+ * src/scan-gram.l: Remove stack option. We no longer use the
+ stack, since the stack was never deeper than 1; instead, use the
+ new auto var c_context to record the stacked value.
+
+ Remove nounput option. At an unexpected end of file, we now unput
+ the minimal input necessary to end cleanly; this simplifies the
+ code.
+
+ Avoid unbounded token sizes where this is easy.
+
+ (unexpected_end_of_file): New function.
+ Use it to systematize the error message on unexpected EOF.
+ (last-string): Now auto, not static.
+ (YY_OBS_FREE): Remove unnecessary do while (0) wrapper.
+ (scanner_last_string_free): Remove; not used.
+ (percent_percent_count): Move decl to just before use.
+ (SC_ESCAPED_CHARACTER): Return ID at unexpected end of file,
+ not the (never otherwised-used) CHARACTER.
+
+2002-11-07 Akim Demaille <akim@epita.fr>
+
+ Let yyerror always receive the msg as last argument, so that
+ yyerror can be variadic.
+
+ * data/yacc.c (b4_yyerror_args): New.
+ Use it when calling yyerror.
+ * data/glr.c (b4_yyerror_args, b4_lyyerror_args): New.
+ Use it when calling yyerror.
+ * doc/bison.texinfo (Error Reporting): Adjust.
+ * tests/calc.at (_AT_DATA_CALC_Y): Adjust.
+ * tests/cxx-type.at (_AT_TEST_GLR_CALC): Adjust.
+
+2002-11-06 Akim Demaille <akim@epita.fr>
+
+ #line should have quoted strings.
+ Ideally, this should be done by m4_quotearg.
+
+ * src/scan-skel.l: Include quotearg.h.
+ Quote __ofile__.
+ * src/output.c (symbol_printers_output)
+ (symbol_destructors_output): Quote the file name.
+
+2002-11-06 Akim Demaille <akim@epita.fr>
+
+ * tests/regression.at (Invalid inputs): Adjust to the recent
+ messages.
+
+2002-11-06 Akim Demaille <akim@epita.fr>
+
+ Restore --no-lines.
+ Reported by Jim Kent.
+
+ * data/c.m4 (b4_syncline): New.
+ * data/glr.c, data/yacc.c, data/lalr1.cc: Use it.
+ * src/reader.c (prologue_augment, epilogue_set): Use b4_syncline.
+ * src/output.c (user_actions_output): Likewise.
+ (prepare): Define 'b4_synclines_flag'.
+ * src/muscle_tab.c (muscle_init): Don't define b4_linef.
+
+2002-11-06 Akim Demaille <akim@epita.fr>
+
+ * src/main.c (main): Free `infile'.
+ * src/scan-gram.l (handle_syncline): New.
+ Recognize `#line'.
+ * src/output.c (user_actions_output, symbol_destructors_output)
+ (symbol_printers_output): Use the location's file name, not
+ infile.
+ * src/reader.c (prologue_augment, epilogue_set): Likewise.
+
+2002-11-05 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
+
+ * src/tables.c (matching_state): Don't allow states to match if
+ either has GLR conflict entries.
+
+2002-11-05 Paul Eggert <eggert@twinsun.com>
+
+ * src/scan-gram.l: Use more accurate diagnostics, e.g.
+ "integer out of range" rather than "invalid value".
+ * tests/input.at (Invalid $n, Invalid @n): Change expected wording
+ accordingly.
+
+ Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires.
+ Also, remove one static variable in the scanner.
+
+ * src/scan-gram.l (braces_level): Now auto, not static.
+ Initialize to zero if the compiler is being picky.
+ (INITIAL): Clear braces_level instead of incrementing it.
+ (SC_BRACED_CODE): Treat <% and %> as { and } when inside C code,
+ as POSIX 1003.1-2001 requires.
+ * src/system.h (IF_LINT): New macro, taken from coreutils.
+ * configure.ac: Define "lint" if --enable-gcc-warnings.
+
+2002-11-05 Akim Demaille <akim@epita.fr>
+
+ * src/scan-gram.l: When it starts with `%', complain about the
+ whole directive, not just that `invalid character: %'.
+
+2002-11-04 Akim Demaille <akim@epita.fr>
+
+ * Makefile.maint: Update from Autoconf.
+ (update, cvs-update, po-update, do-po-update): New.
+
+2002-11-04 Akim Demaille <akim@epita.fr>
+
+ * tests/glr-regr1.at (Badly Collapsed GLR States): Prototype yylex
+ and yyerror.
+ Have yyerror `use' its arguments.
+ * tests/calc.at (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF
+ returns true when location & yacc & pure & parse-param.
+ (_AT_DATA_CALC_Y): Let yyerror ``use'' its arguments.
+
+2002-11-04 Akim Demaille <akim@epita.fr>
+
+ * src/location.h (LOCATION_PRINT): Use quotearg slot 3 to avoid
+ clashes.
+ * src/scan-gram.l: Use [\'] instead of ['] to pacify
+ font-lock-mode.
+ Use complain_at.
+ Use quote, not quote_n since LOCATION_PRINT no longer uses the
+ slot 0.
+
+2002-11-03 Paul Eggert <eggert@twinsun.com>
+
+ * src/reader.c (get_merge_function, grammar_current_rule_check):
+ Use consistent diagnostics for reporting type name clashes.
+ Quote the types with <>, for consistency with Yacc.
+ * tests/input.at (Type Clashes): Adjust to diagnostic changes.
+
+2002-11-03 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4 (b4_identification, b4_user_args, b4_parse_param):
+ New.
+ * data/yacc.m4 (b4_pure_args, b4_Pure_args): New.
+ (b4_parse_param): Remove.
+ Use b4_identification.
+ Propagate b4_pure_args where needed to pass them to yyerror.
+ * data/glr.m4 (b4_parse_param): Remove.
+ (b4_user_formals, b4_pure_args, b4_pure_formals, b4_lpure_args)
+ (b4_lpure_formals): New.
+ Use b4_identification.
+ (YY_USER_FORMALS, YY_USER_ARGS): Remove, replaced by
+ b4_user_formals and b4_user_args.
+ (yyexpandGLRStack, yyFail, yyaddDeferredAction, yyglrShiftDefer)
+ (yyreportAmbiguity): When using a pure parser, also need
+ the location, and the parse-params.
+ Adjust callers.
+ (yyuserAction, yyglrShift, yyreportParseError, yyrecoverParseError):
+ When using a pure parser, also need the parse-params.
+ Adjust callers.
+ * tests/calc.at: Test pure (%pure-parser) and absolutely pure
+ (%pure-parser + %parse-param) LALR and GLR parsers.
+ (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): New, define AT_PARAM_IF,
+ AT_LOCATION_IF, AT_PURE_IF, AT_GLR_IF, AAT_PURE_AND_LOC_IF,
+ AT_GLR_OR_PARAM_IF, AT_YYERROR_ARG_LOC_IF, AT_YYERROR_SEES_LOC_IF.
+ (_AT_DATA_CALC_Y): Equip for purity of yyerror.
+ (_AT_CHECK_CALC_ERROR): Use AT_YYERROR_SEES_LOC_IF.
+ * tests/cxx-type.at (_AT_TEST_GLR_CALC): Equip for yyerror purity.
+ * doc/bison.texinfo: Untabify the whole file.
+ (Parser Function): Document %parse-param, deprecate YYPARSE_PARAM.
+ (Pure Calling): Document %lex-param, deprecate YYLEX_PARAM.
+ (Error Reporting): Adjust to these new directives.
+ Document %error-verbose, deprecate YYERROR_VERBOSE.
+
+2002-11-03 Akim Demaille <akim@epita.fr>
+
+ * tests/calc.at: Change all the AT_CHECK_CALC_LALR and
+ AT_CHECK_CALC_GLR invocations to use % directives, instead of
+ command line options.
+ * tests/cxx-type.at: Formatting changes.
+
+2002-11-03 Paul Eggert <eggert@twinsun.com>
+
+ * src/scan-gram.l: Revamp to fix POSIX incompatibilities,
+ to count columns correctly, and to check for invalid inputs.
+
+ Use mbsnwidth to count columns correctly. Account for tabs, too.
+ Include mbswidth.h.
+ (YY_USER_ACTION): Invoke extend_location rather than LOCATION_COLUMNS.
+ (extend_location): New function.
+ (YY_LINES): Remove.
+
+ Handle CRLF in C code rather than in Lex code.
+ (YY_INPUT): New macro.
+ (no_cr_read): New function.
+
+ Scan UCNs, even though we don't fully handle them yet.
+ (convert_ucn_to_byte): New function.
+
+ Handle backslash-newline correctly in C code.
+ (SC_LINE_COMMENT, SC_YACC_COMMENT): New states.
+ (eols, blanks): Remove. YY_USER_ACTION now counts newlines etc.;
+ all uses changed.
+ (tag, splice): New EREs. Do not allow NUL or newline in tags.
+ Use {splice} wherever C allows backslash-newline.
+ YY_STEP after space, newline, vertical-tab.
+ ("/*"): BEGIN SC_YACC_COMMENT, not yy_push_state (SC_COMMENT).
+
+ (letter, id): Don't assume ASCII; e.g., spell out a-z.
+
+ ({int}, handle_action_dollar, handle_action_at): Check for integer
+ overflow.
+
+ (YY_STEP): Omit trailing semicolon, so that it's more like C.
+
+ (<SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER>): Allow \0 and \00
+ as well as \000. Check for UCHAR_MAX, not 255.
+ Allow \x with an arbitrary positive number of digits, as in C.
+ Check for overflow here.
+ Allow \? and UCNs, for compatibility with C.
+
+ (handle_symbol_code_dollar): Use quote_n slot 1 to avoid collision
+ with quote slot used by complain_at.
+
+ * tests/input.at: Add tests for backslash-newline, m4 quotes
+ in symbols, long literals, and funny escapes in strings.
+
+ * configure.ac (jm_PREREQ_MBSWIDTH): Add.
+ * lib/Makefile.am (libbison_a_SOURCES): Add mbswidth.h, mbswidth.c.
+ * lib/mbswidth.h, lib/mbswidth.c: New files, from GNU gettext.
+ * m4/Makefile.am (EXTRA_DIST): Add mbswidth.m4.
+ * m4/mbswidth.m4: New file, from GNU coreutils.
+
+ * doc/bison.texinfo (Grammar Outline): Document // comments.
+ (Symbols): Document that trigraphs have no special meaning in Bison,
+ nor is backslash-newline allowed.
+ (Actions): Document that trigraphs have no special meaning.
+
+ * src/location.h (LOCATION_COLUMNS, LOCATION_LINES): Remove;
+ no longer used.
+
+2002-11-02 Paul Eggert <eggert@twinsun.com>
+
+ * src/reader.c: Don't include quote.h; not needed.
+ (get_merge_function): Reword warning to be consistent with
+ type clash diagnostic in grammar_current_rule_check.
+
+ * lib/quotearg.c (quotearg_buffer_restyled): Fix off-by-two
+ bug in trigraph handling.
+
+ * src/output.c (prepare_symbols): When printing token names,
+ escape "[" as "@<:@" and likewise for "]".
+
+ * src/system.h (errno): Remove declaration, as we are now
+ assuming C89 or better, and C89 guarantees errno.
+
+2002-10-30 Paul Eggert <eggert@twinsun.com>
+
+ * lib/bitset_stats.c (bitset_stats_read, bitset_stats_write):
+ Check for close failures.
+ * src/files.h (xfclose): Return void, not int, since it always
+ returned zero.
+ * src/files.c (xfclose): Likewise. Report I/O error if ferror
+ indicates one.
+ * src/output.c (output_skeleton): Use xfclose rather than fclose
+ and ferror. xfclose now checks ferror.
+
+ * data/glr.c (YYLEFTMOST_STATE): Remove.
+ (yyreportTree): Use a stack-based leftmost state. This avoids
+ our continuing battles with bogus warnings about initializers.
+
+2002-10-30 Akim Demaille <akim@epita.fr>
+
+ * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only
+ #if.
+
+2002-10-29 Paul Hilfinger <Hilfinger@CS.Berkeley.EDU>
+
+ * tests/glr-regr1.at: New test for reported regressions.
+ * tests/testsuite.at: Add glr-regr1.at test.
+ * tests/Makefile.am: Add glr-regr1.at test.
+
+2002-10-24 Paul Eggert <eggert@twinsun.com>
+
+ Version 1.75a.
+
+ * tests/calc.at (_AT_DATA_CALC_Y): Remove unused strcat declaration.
+ * tests/cxx-type.at (_AT_TEST_GLR_CALC): Include stdlib.h, since
+ we use malloc. Don't assume 'A' through 'Z' are contiguous.
+ Don't assume strdup exists; POSIX says its an XSI extension.
+ Check for buffer overflow on input.
+
2002-10-24 Akim Demaille <akim@epita.fr>
* src/output.c (output_skeleton): Don't disable M4sugar comments