X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/5504898e82be0ce888fff5a28a48530fa156625f..dda7aa54b68eab08eec6f5279637ed047cacfcdd:/ChangeLog?ds=sidebyside diff --git a/ChangeLog b/ChangeLog index f074e59c..02b3bcfb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,3325 @@ +2002-11-20 Paul Eggert + + * lib/argmatch.c, lib/argmatch.h: Sync with gnulib. + +2002-11-20 Paul Eggert + + Avoid use of , as the GNU Coding Standards hint that one + should use `if (! x) abort ();' rather than `assert (x);', and + anyway it's one less thing to worry about configuring. + + * data/glr.c, lib/hash.c, src/system.h: Do not include . + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise, + and replace all instances of assert with abort. + * tests/calc.at (_AT_DATA_CALC_Y): Likewise. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise. + + * data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates, + yyresolveAction, yyprocessOneStack): Use abort rather than assert. + * lib/hash.c (hash_lookup, hash_get_first, hash_get_next, + hash_find_entry, hash_rehash, hash_insert): Likewise. + * src/conflicts.c (resolve_sr_conflict): Likewise. + * src/lalr.c (set_goto_map, map_goto): Likewise. + * src/nullable.c (nullable_compute): Likewise. + * src/output.c (prepare_rules, token_definitions_output): Likewise. + * src/reader.c (packgram, reader): Likewise. + * src/state.c (state_new, state_free, state_transitions_set, + state_reduction_find): Likewise. + * src/symtab.c (symbol_user_token_number_set, symbol_make_alias, + symbol_pack): Likewise. + * src/tables.c (conflict_row, pack_vector): Likewise. + * src/vcg.c (get_color_str, get_textmode_str, get_shape_str, + get_layoutalgorithm_str, get_decision_str, get_orientation_str, + get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str, + get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise. + + * lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef. + (ARGMATCH_CONSTRAINT): New macro. + (ARGMATCH_ASSERT): Use it. + + * src/system.h (verify): New macro. + * src/getargs.c (trace_argmatch, report_argmatch): Use verify + rather than assert. + * src/tables.c (tables_generate): Likewise. + + * src/struniq.c (struniq_assert): Now returns void, and aborts + if the assertion is false. + (struniq_assert_p): Remove. + * src/struniq.h: Likewise. + +2002-11-18 Paul Eggert + + * data/glr.c (yygetLRActions): Replace `yyindex' with + `yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch. + This fixes the regression with Sun ONE Studio 7 cc that I reported in + . + +2002-11-18 Akim Demaille + + * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a + space. + From Tim Van Holder. + +2002-11-17 Paul Eggert + + Pacify Sun ONE Studio 7 lint. Also, rename "ParseError" + to "SyntaxError" for consistency with my 2002-11-15 change. + + * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do + not define to {}, since this breaks the common use of `YYDPRINTF + ((...));' if a single statement is desired (e.g. before `else'). + Work around GCC warnings by surrounding corresponding calls with + {} if needed. + (yyhasResolvedValue): Remove unused function. + (yymergeOptionSets, yyresolvStack): Use `continue;' for empty + loop body. + (yyreportSyntaxError): Renamed from yyreportParseError. + (yyrecoverSyntaxError): Renamed from yyrecoverParseError. + All uses changed. + * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of + extern when possible. Remove unused initializations. + +2002-11-16 Akim Demaille + + Augment the similarity between GLR and LALR traces. + + * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print) + (YY_REDUCE_PRINT): New. + (yyparse): Use them. + * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for + YYDPRINT here. + (yyglrReduce, yyrecoverParseError, yyparse): Don't report the + state reached after the reduction/recovery, since... + (yyparse, yyprocessOneStack): Report the state we are entering in. + +2002-11-16 Akim Demaille + + * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types): + Add support for --trace=skeleton. + * src/scan-skel.l: %option debug. + Scan strings of non-@ or \n instead of character by character. + (scan_skel): Handle trace_skeleton. + (QPUTS): New. + (@output_parser_name@, @output_header_name@): ``Restore'' their + support (used to be M4 macros). + * data/yacc.c: Quote larger chunks, a la glr.c. + * data/lalr1.cc: Likewise. + The header guards are no longer available, so use some other + string than `YYLSP_NEEDED'. + +2002-11-16 Akim Demaille + + Make the ``Printers and Destructors'' test more verbose, taking + `yacc.c''s behavior as (possibly wrong) reference. + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf + instead of fprint on stdout. + Set and report the last_line of the symbols. + Consistently display values and locations. + +2002-11-16 Paul Eggert + + * data/yacc.c: Avoid over-quoting of __line__ and __file__. + +2002-11-15 Paul Eggert + + * tests/actions.at (Actions after errors): New test case. + + * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo, + src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h, + tests/action.at, tests/calc.at, tests/conflicts.at, + tests/cxx-type.at, tests/regression.at: + "parse error" -> "syntax error" for POSIX compatibility. + "parsing stack overflow..." -> "parser stack overflow" so + that code matches Bison documentation. + +2002-11-15 Akim Demaille + + * src/parse-gram.y (declaration): Have %parse-param and %lex-param + take two BRACED_CODE, not two string_content. + Free the scanner's obstack when we are done. + (code_content): New. + * tests/calc.at: Adjust. + * doc/bison.texinfo: Adjust. + Also, make sure to include the `,' for these declarations. + +2002-11-15 Tim Van Holder + + * m4/prereq.m4: Removed the commented jm_PREREQ_HASH + definition; avoids potential autoreconf problems. + +2002-11-15 Akim Demaille + + Always check the value returned by yyparse. + + * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value + returned by yyparse. + (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument. + Adjust calls. + * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value + returned by yyparse. + +2002-11-14 Paul Hilfinger + + * data/glr.c (yyFail): Always set yyerrflag. Corrects regression + on input.at test. + +2002-11-14 Paul Eggert + + * src/output.c (output_skeleton): Call xfopen instead of + duplicating xfopen's body. + + Fix bugs reported by Nelson H. F. Beebe in + . + + * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that + "$CC -E foo.h" is allowed, as this doesn't work with the Portland + Group compiler. Instead, use "$CC -E bar.c". Include the .h + file twice in the grammar, as an extra check. + + * tests/input.at (Torturing the Scanner): Surround the + backslash-newline tests with "#if 0", to make it less likely that + we'll run into compiler bugs. Bring back solitary \ inside + comment, but add a closing comment to work around HP C bug. Don't + test backslash-newline in C character constant. This should fix + the input.at bug reported by Nelson H. F. Beebe in + . + +2002-11-14 Akim Demaille + + * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit + status of the compiler. + Calling `exit 1' is no longer needed. + Reported by Nelson H. F. Beebe. + +2002-11-14 Akim Demaille + + * tests/atlocal.in (CPPFLAGS): We have config.h. + * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR): + New. + * tests/actions.at, tests/calc.at, tests/conflicts.at, + * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at, + * tests/regression.at, tests/torture.at: Use them for all the + grammars that are to be compiled. + * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as... + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this. + * doc/bison.texinfo (GLR Parsers): Document `inline'. + +2002-11-14 Akim Demaille + + * doc/bison.texinfo: Various formatting changes (alignments in + samples, additional @group/@end group, GCS in samples. + Use @deffn instead of simple @table to define the directives, + macros, variables etc. + +2002-11-13 Paul Eggert + + Fix some bugs reported by Albert Chin-A-Young in + . + + * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c + -o c"; the HP C compiler chatters during compilation. + Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c". + * tests/headers.at (export YYLTYPE): Likewise. + + * tests/input.at (Torturing the Scanner): Remove lines containing + solitary backslashes, as they tickle a bug in the HP C compiler. + + * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid // + comments, since they're not portable. Use GNU coding style. + +2002-11-13 Akim Demaille + + * data/yacc.c: Leave bigger chunks of quoted text. + (YYDSYMPRINTF): New. + Use it to report symbol activities. + * data/glr.c (YYDSYMPRINTF): New. + Use it. + +2002-11-12 Paul Eggert + + Version 1.75b. + + * data/glr.c (yydoAction): Return YYRESULTTAG, not int. + (yyglrReduce): Return yyok, not 0. + This should avoid the enumerated-type warnings reported + by Nelson H.F. Beebe in + . + + * lib/bbitset.h (BITSET_INLINE): Remove. + * lib/bitset.h [! BITSET_INLINE]: Remove. + (bitset_set, bitset_reset, bitset_test): Rename local vars + to avoid shadowing warnings by GCC. + + * data/glr.c (inline): Remove #define. It's the user's + responsibility to #define it away, just like 'const'. + This fixes one of the bugs reported by Nelson H.F. Beebe in + . + + * Makefile.maint (po-check): Scan .l and .y files instead of the + .c and the .h files that they generate. This fixes the bug + reported by Tim Van Holder in: + + Look for N_ as well as for _. Try to avoid matching #define for + N_ and _. + * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c, + src/system.h. Add src/parse-gram.y, src/scan-gram.l. + * src/scan-gram.l: Revamp regular expressions so that " and ' + do not confuse xgettext. + + * src/struniq.h (struniq_new): Do not declare the return type + to be 'const'; this violates the C standard. + * src/struniq.c (struniq_new): Likewise. + +2002-11-12 Albert Chin-A-Young + + * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the + duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq + linker. + +2002-11-12 Akim Demaille + + * Makefile.maint: Sync with Autoconf: + (local_updates): New. + +2002-11-12 Akim Demaille + + * po/POTFILES.in (src/lalr.c, src/state.c): Remove + +2002-11-12 Akim Demaille + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the + locations. + +2002-11-12 Akim Demaille + + * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT, + not yyvalue. + +2002-11-12 Akim Demaille + + * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): New. + Use it to test the GLR parser. + +2002-11-12 Akim Demaille + + * 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 + + * 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 + + * doc/bison.texinfo (Destructor Decl): New. + +2002-11-12 Akim Demaille + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + Revamp to fix many (but not all) of the C- and M4-related quoting + problems. Among other things, this fixes the Bison bug reported + by Jan Hubicka when processing the Bash grammar; see: + + + Use new @ escapes consistently. Represent brackets with @{ and @} + rather than @<:@ and @:>@, since this works a bit better with dumb + 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 (): Don't worry about any backslash + escapes other than \\ and \'; this simplifies the code. + (): Likewise, for \\ and \". + (): 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 + + Fix the test failure due to GCC warnings described in + . + * data/glr.c (yyis_pact_ninf, yyis_table_ninf): New macros, which + evaluate to 0 if it's impossible for NINF to be in the respective + table. + (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 + + * 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 + + 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 + + #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 + + * tests/regression.at (Invalid inputs): Adjust to the recent + messages. + +2002-11-06 Akim Demaille + + 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 + + * 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 + + * src/tables.c (matching_state): Don't allow states to match if + either has GLR conflict entries. + +2002-11-05 Paul Eggert + + * 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 + + * src/scan-gram.l: When it starts with `%', complain about the + whole directive, not just that `invalid character: %'. + +2002-11-04 Akim Demaille + + * Makefile.maint: Update from Autoconf. + (update, cvs-update, po-update, do-po-update): New. + +2002-11-04 Akim Demaille + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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. + + (): 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 + + * 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 + + * 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 + + * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only + #if. + +2002-10-29 Paul Hilfinger + + * 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 + + 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 + + * src/output.c (output_skeleton): Don't disable M4sugar comments + too soon: it results in comments being expanded. + * data/yacc.c, data/glr.c, data/lalr1.cc: Do it right before the + first output. + +2002-10-24 Akim Demaille + + * data/yacc.c (m4_int_type): New. + * data/c.m4 (m4_int_type): Don't use yysigned_char, but `signed + char' as only yacc.c wants K&R portability. + * data/glr.c (yysigned_char): Remove. + * data/lalr1.cc: Rename the trailing b4_name as b4_parser_class_name. + Reported by Quoc Peyrot. + +2002-10-23 Paul Eggert + + * src/main.c (main): With --trace=time, report times even if a + non-fatal error occurs. Formerly, the times were reported in some + such cases but not in others. + * src/reader.c (reader): Just return if a complaint has been issued, + instead of exiting, so that 'main' can report times. + +2002-10-22 Akim Demaille + + * src/system.h: Include sys/types. + Reported by Bert Deknuydt. + +2002-10-23 Paul Eggert + + * configure.ac (AC_PROG_LEX): Use instead of AM_PROG_LEX. + Suggested by Art Haas. + +2002-10-22 Paul Eggert + + * src/complain.c (exit) [! (STDC_HEADERS || _LIBC)]: Remove exit + decl; not needed any more. + * src/main.c (main): Use return to exit, undoing yesterday's change. + The last OS that we could find where this wouldn't work is + SunOS 3.5, and that's too old to worry about now. + + * data/glr.c (struct yyltype): Define members even when not + doing locations. This is more consistent with yacc.c, and it + works around the following bug reports: + http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html + http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html + and I hope it also fixes this bug report: + http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html + + * doc/bison.texinfo: Minor spelling and typographical fixes. Use + @acronym consistently. Standardize on "Yacc" instead of "YACC", + "Algol" instead of "ALGOL". Give a bit more history about BNF. + +2002-10-22 Akim Demaille + + * data/README: New. + +2002-10-21 Paul Eggert + + Be consistent about 'bool'; the old code used an enum in one + module and an int in another, and this violates the C standard. + * m4/stdbool.m4: New file, from coreutils 4.5.3. + * configure.ac (AC_HEADER_STDBOOL): Add. + * m4/Makefile.am (EXTRA_DIST): Add stdbool.m4. + * src/muscle_tab.c (hash_compare_muscles): (a ? FALSE : TRUE) -> (! a) + * src/symtab.c (hash_compare_symbol_t): Likewise. + * src/system.h (bool, false, true): Use a definition consistent + with ../lib/hash.c. All uses changed. + + * src/complain.c (warning_issued): Renamed from warn_message_count, + so that we needn't worry about integer overflow (!). + Now of type bool. All uses changed. + (complaint_issued): Renamed from complain_message_count; likewise. + + * src/main.c (main): Use exit to exit with failure. + + * src/complain.c (fatal_at, fatal): Use EXIT_FAILURE and EXIT_SUCCESS + rather than 1 and 0. + * src/main.c (main): Likewise. + * src/getargs.c (getargs): Likewise. + * src/reader.c (reader): Likewise. + + * src/getarg.c (getargs): Remove duplicate code for + "Try `bison --help'". + + * src/files.c (xfopen, xfclose): Use EXIT_FAILURE rather than 2. + What was that "2" for? + + * src/complain.h (fatal, fatal_at): Add __attribute__((__noreturn__)). + * src/getargs.c (usage): Likewise. + + * src/getargs.c (getargs): When there are too few operands, report + the last one. When there are too many, report the first extra + one. This is how diffutils does it. + +2002-10-20 Paul Eggert + + Remove K&R vestiges. + * configure.ac (AC_C_CONST, AM_C_PROTOTYPES): Remove. + * src/complain.c (VA_START): Remove. Assume prototypes. + (vfprintf) [! (HAVE_VPRINTF || defined vfprintf)]: New macro. + (private_strerror, warn_at, warn, complain_at, complain, fatal_at, + fatal): Assume prototypes. + * src/complain.h: Assume prototypes. + * src/system.h (PARAMS): Remove. + Include unconditionally, since it's guaranteeed even + for a freestanding C89 compiler. + (SHRT_MIN, SHRT_MAX): Remove, since C89 guarantees them. + * src/vmsgetargs.c (getargs, cli_present, cli_get_value): Prototype. + +2002-10-20 Akim Demaille + + * src/muscle_tab.c (muscle_grow): Remove trailing debugging code. + * data/glr.c (YY_USER_FORMALS, YY_USER_ARGS): New. + (yyuserAction, yydoAction, yyglrReduce, yyresolveValue) + (yyresolveStates, yyresolveAction, yyresolveStack) + (yyprocessOneStack): Use them. + (yy_reduce_print): New. + * tests/calc.at (_AT_DATA_CALC_Y): Exercise %parse-param. + +2002-10-20 Akim Demaille + + * data/c.m4 (b4_c_ansi_args): Recognize functions with no + arguments and output `void'. + (b4_c_function): Rename as... + (b4_c_function_def): this. + (b4_c_function_decl, b4_c_ansi_function_def) + (b4_c_ansi_function_decl): New. + Change the interpretation of the arguments: before `int, foo', now + `int foo, foo'. + * data/yacc.c (yyparse): Prototype and define thanks to these. + Adjust b4_c_function_def uses. + * data/glr.c (yyparse): Likewise, but ANSI only. + +2002-10-20 Akim Demaille + + * src/output.c (prepare): Move the definition of `tokens_number', + `nterms_number', `undef_token_number', `user_token_number_max' + to... + (prepare_tokens): Here. + (prepare_tokens): Rename as... + (prepare_symbols): this. + (prepare): Move the definition of `rules_number' to... + (prepare_rules): here. + (prepare): Move the definition of `last', `final_state_number', + `states_number' to... + (prepare_states): here. + * data/yacc.c, data/lalr1.cc, data/glr.c: Normalize `>' into `<'. + +2002-10-20 Akim Demaille + + * src/tables.h, src/tables.c, src/output.c: Comment changes. + +2002-10-20 Akim Demaille + + * data/yacc.c, data/yacc.c (b4_location_if, b4_pure_if): Move to... + * data/c.m4: here. + +2002-10-20 Akim Demaille + + * src/output.c (prepare): Use MUSCLE_INSERT_STRING. + * src/muscle_tab.c (muscle_pair_list_grow): Rename `val as + `pair'. + (muscle_init): Move the `b4_ltype', `b4_maxdepth', `b4_initdepth', + `name' to... + * data/glr.c, data/lalr1.cc, data/yacc.c (b4_location_type) + (b4_stack_depth_init, b4_stack_depth_max, b4_parser_class_name): + These. + +2002-10-19 Paul Eggert + + Do not create a temporary file, as that involves security and + cleanup headaches. Instead, use a pair of pipes. + Derived from a suggestion by Florian Krohm. + * lib/subpipe.c, lib/subpipe.h, m4/subpipe.m4: New files. + * lib/mkstemp.c, lib/readpipe.c, lib/tempname.c, m4/mkstemp.m4: Remove. + * configure.ac (UTILS_FUNC_MKSTEMP, jm_PREREQ_TEMPNAME): Remove. + (BISON_PREREQ_SUBPIPE): Add. + * lib/Makefile.am (libbison_a_SOURCES): Remove readpipe.c. + Add subpipe.h, subpipe.c. + * m4/Makefile.am (EXTRA_DIST): Remove mkstemp.m4. Add subpipe.m4. + * po/POTFILES.in: Add lib/subpipe.c. + * src/output.c: Include "subpipe.h". + (m4_invoke): Remove decl. + (scan_skel): New decl. + (output_skeleton): Use pipe rather than temporary file for m4 input. + Check that m4sugar.m4 is readable, to avoid deadlock. + Check for pipe I/O error. + * src/scan-skel.l (readpipe): Remove decl. + (scan_skel): New function, to be used in place of m4_invoke. + Read from stream rather than file. + + * lib/timevar.c (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to + float, as this generates a warning on Solaris 8 + GCC 3.2 with + --enable-gcc-warnings. Instead, divide into 1.0 rather than 1; + this generates a more-accurate value anyway. + + * lib/timevar.c (timervar_accumulate): Rename locals to + avoid confusion with similarly-named more-global. + * src/muscle_tab.c (muscle_pair_list_grow): Likewise. + + * src/output.c (prepare): Use xstrdup to convert char const * + to char *, to avoid GCC warning. + +2002-10-19 Akim Demaille + + * tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS, + LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS. + Use them to have `calc.y' ready for %pure-parser. + * data/yacc.c (YYLEX): Pass a yylex return type to + b4_c_function_call. + +2002-10-19 Akim Demaille + + Prototype support of %lex-param and %parse-param. + + * src/parse-gram.y: Add the definition of the %lex-param and + %parse-param tokens, plus their rules. + Drop the `_' version of %glr-parser. + Add the "," token. + * src/scan-gram.l (INITIAL): Scan them. + * src/muscle_tab.c: Comment changes. + (muscle_insert, muscle_find): Rename `pair' as `probe'. + * src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused. + (muscle_entry_s): The `value' member is no longer const. + Adjust all dependencies. + * src/muscle_tab.c (muscle_init): Adjust: use + MUSCLE_INSERT_STRING. + Initialize the obstack earlier. + * src/muscle_tab.h, src/muscle_tab.c (muscle_grow) + (muscle_pair_list_grow): New. + * data/c.m4 (b4_c_function_call, b4_c_args): New. + * data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param. + * tests/calc.at: Use %locations, not --locations. + (AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser. + +2002-10-19 Akim Demaille + + * src/getargs.c (usage): Take status as argument and exit + accordingly. + Report the traditional `Try ... --help' message when status != 0. + (usage, version): Don't take a FILE * as arg, it is pointless. + (getargs): When there is an incorrect number of arguments, make it + an error, and report it GNUlically thanks to `usage ()'. + +2002-10-18 Paul Eggert + + * data/glr.c (yyreportParseError): Don't assume that sprintf + yields the length of the printed string, as this is not true + on SunOS 4.1.4. Reported by Peter Klein. + + * tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc. + * tests/conflicts.at (%nonassoc and eof): Likewise. + Fixes SunOS 4.1.4 test failure reported by Peter Klein. + +2002-10-17 Akim Demaille + + * src/getargs.h (trace_e): Add trace_scan, and trace_parse. + * src/getargs.c (trace_types, trace_args): Adjust. + * src/reader.c (grammar_current_rule_prec_set) + (grammar_current_rule_dprec_set, grammar_current_rule_merge_set): + Standardize error messages. + And s/@prec/%prec/! + (reader): Use trace_flag to enable scanner/parser debugging, + instead of an adhoc scheme. + * src/scan-gram.l: Remove trailing debugging code. + +2002-10-16 Paul Eggert + + * src/muscle_tab.h (MUSCLE_TAB_H_): Was misspelled as + MUSCLE_TAB_H. + + * NEWS: Officially drop support for building Bison with K&R C, + since it didn't work anyway and it's not worth worrying about. + * Makefile.maint (wget_files): Remove ansi2knr.c. + (ansi2knr.c-url_prefix): Remove. + * lib/.cvsignore: Remove ansi2knr, ansi2knr.*. + * lib/Makefile.am (AUTOMAKE_OPTIONS): Remove. + * src/Makefile.am (AUTOMAKE_OPTIONS): Remove. + +2002-10-15 Paul Eggert + + Stop using the "enum_" trick for K&R-style function definitions; + it confused me, and I was the author! Instead, assume that people + who want to use K&R C compilers (when using these modules in GCC, + perhaps?) will run ansi2knr. + + * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): Remove. + All uses of "enum_" changed to "enum ". + * lib/ebitset.c (enum_ebitset_find_mode): Likewise. + * lib/lbitset.c (enum_lbitset_find_mode): Likewise. + + * lib/abitset.c (abitset_and, abitset_and_cmp, abitset_and_or, + abitset_and_or_cmp, abitset_andn, abitset_andn_cmp, + abitset_andn_or, abitset_andn_or_cmp, abitset_bytes, abitset_copy, + abitset_copy1, abitset_disjoint_p, abitset_empty_p, + abitset_equal_p, abitset_init, abitset_list, abitset_list_reverse, + abitset_not, abitset_ones, abitset_or, abitset_or_and, + abitset_or_and_cmp, abitset_or_cmp, abitset_reset, abitset_set, + abitset_size, abitset_small_list, abitset_subset_p, abitset_test, + abitset_unused_clear, abitset_xor, abitset_xor_cmp, abitset_zero): + Use function prototypes; this removes the need for declaring + static functions simply to provide their prototypes. + * lib/bitset.c (bitset_alloc, bitset_and_or_, bitset_and_or_cmp_, + bitset_andn_or_, bitset_andn_or_cmp_, bitset_bytes, bitset_copy_, + bitset_count_, bitset_create, bitset_dump, bitset_first, + bitset_free, bitset_init, bitset_last, bitset_next, + bitset_obstack_alloc, bitset_obstack_free, bitset_only_set_p, + bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_, bitset_prev, + bitset_print, bitset_release_memory, bitset_toggle_, + bitset_type_choose, bitset_type_get, bitset_type_name_get, + debug_bitset): Likewise. + * lib/bitset.h (bitset_set, bitset_reset, bitset_test): Likewise. + * lib/bitset_stats.c (bitset_log_histogram_print, + bitset_percent_histogram_print, bitset_stats_and, + bitset_stats_and_cmp, bitset_stats_and_or, + bitset_stats_and_or_cmp, bitset_stats_andn, bitset_stats_andn_cmp, + bitset_stats_andn_or, bitset_stats_andn_or_cmp, bitset_stats_copy, + bitset_stats_count, bitset_stats_disable, bitset_stats_disjoint_p, + bitset_stats_dump, bitset_stats_empty_p, bitset_stats_enable, + bitset_stats_equal_p, bitset_stats_free, bitset_stats_init, + bitset_stats_list, bitset_stats_list_reverse, bitset_stats_not, + bitset_stats_ones, bitset_stats_or, bitset_stats_or_and, + bitset_stats_or_and_cmp, bitset_stats_or_cmp, bitset_stats_print, + bitset_stats_print_1, bitset_stats_read, bitset_stats_reset, + bitset_stats_set, bitset_stats_size, bitset_stats_subset_p, + bitset_stats_test, bitset_stats_toggle, bitset_stats_type_get, + bitset_stats_write, bitset_stats_xor, bitset_stats_xor_cmp, + bitset_stats_zero): Likewise. + * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free, + bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure, + bitsetv_dump, debug_bitsetv): Likewise. + * lib/ebitset.c (ebitset_and, ebitset_and_cmp, ebitset_andn, + ebitset_andn_cmp, ebitset_bytes, ebitset_copy, ebitset_copy_, + ebitset_copy_cmp, ebitset_disjoint_p, ebitset_elt_add, + ebitset_elt_alloc, ebitset_elt_calloc, ebitset_elt_find, + ebitset_elt_free, ebitset_elt_last, ebitset_elt_remove, + ebitset_elt_zero_p, ebitset_elts_grow, ebitset_empty_p, + ebitset_equal_p, ebitset_free, ebitset_init, ebitset_list, + ebitset_list_reverse, ebitset_not, ebitset_ones, ebitset_op3_cmp, + ebitset_or, ebitset_or_cmp, ebitset_release_memory, ebitset_reset, + ebitset_set, ebitset_size, ebitset_subset_p, ebitset_test, + ebitset_weed, ebitset_xor, ebitset_xor_cmp, ebitset_zero): + Likewise. + * lib/lbitset.c (debug_lbitset, lbitset_and, lbitset_and_cmp, + lbitset_andn, lbitset_andn_cmp, lbitset_bytes, lbitset_copy, + lbitset_copy_cmp, lbitset_disjoint_p, lbitset_elt_alloc, + lbitset_elt_calloc, lbitset_elt_find, lbitset_elt_free, + lbitset_elt_link, lbitset_elt_unlink, lbitset_elt_zero_p, + lbitset_empty_p, lbitset_equal_p, lbitset_free, lbitset_init, + lbitset_list, lbitset_list_reverse, lbitset_not, lbitset_ones, + lbitset_op3_cmp, lbitset_or, lbitset_or_cmp, lbitset_prune, + lbitset_release_memory, lbitset_reset, lbitset_set, lbitset_size, + lbitset_subset_p, lbitset_test, lbitset_weed, lbitset_xor, + lbitset_xor_cmp, lbitset_zero): Likewise. + +2002-10-14 Akim Demaille + + Version 1.75. + +2002-10-14 Akim Demaille + + * tests/Makefile.am (maintainer-check-posix): New. + +2002-10-14 Akim Demaille + + * data/glr.c [YYDEBUG] (YYLEFTMOST_STATE): Initialize the yyloc + member. + +2002-10-14 Akim Demaille + + * src/tables.c (table_ninf_remap): base -> tab. + Reported by Matt Rosing. + +2002-10-14 Paul Eggert + + * tests/action.at, tests/calc.at, tests/conflicts.at, + tests/cxx-type.at, tests/headers.at, tests/input.at, + tests/regression.at, tests/synclines.at, tests/torture.at: + Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c", + so that the tests still work even if POSIXLY_CORRECT is set. + * doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise. + + * data/c.m4 (b4_int_type): Use yysigned_char instead of signed char, + for portability to K&R hosts. Fix typo: signed char is guaranteed + only to 127, not to 128. + * data/glr.c (yysigned_char): New type. + * data/yacc.c (yysigned_char): Likewise. + * tests/regression.at (Web2c Actions): signed char -> yysigned_char. + +2002-10-13 Paul Eggert + + * data/yacc.c (yyparse): Rewrite to avoid "comparison is always + true due to limited range of data type" warning from GCC. + + * data/c.m4 (b4_token_defines): Protect against double-inclusion + by wrapping enum yytokentype's definition inside #ifndef + YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12. + +2002-10-13 Akim Demaille + + * data/glr.c (yyglrShiftDefer, yyaddDeferredAction, yydoAction): + Un yy- yyrhs to avoid the name clash with the global YYRHS. + +2002-10-13 Akim Demaille + + * Makefile.maint: Update from Autoconf 2.54. + * m4/strerror_r.m4 (AC_FUNC_STRERROR_R): Remove, shipped with 2.54. + +2002-10-13 Akim Demaille + + * src/print.c (print_state): Separate the list of solved conflicts + from the other items. + * tests/conflicts.at (Resolved SR Conflicts): Adjust. + +2002-10-13 Akim Demaille + + Let nondeterministic skeletons be usable with deterministic + tables. + + With the patch, GAWK compiled by GCC without -O2 passes its test + suite using a GLR parser driven by LALR tables. It fails with -O2 + because `struct stat' gives two different answers on my machine: + 88 (definition of an auto var) and later 96 (memset on this var). + Hence the stack is badly corrumpted. The headers inclusion is to + blame: if I move the awk.h inclusion before GLR's system header + inclusion, the two struct stat have the same size. + + * src/tables.c (pack_table): Always create conflict_table. + (token_actions): Always create conflict_list. + * data/glr.c (YYFLAG): Remove, unused. + +2002-10-13 Akim Demaille + + * configure.ac (AC_GNU_SOURCE): Use it instead of hand written code. + (O0FLAGS): New. + (VALGRIND, GXX): New. + * tests/atlocal.in (CFLAGS): Use O0FLAGS. + * tests/bison.in: Run $PREBISON a pre-command. + * tests/Makefile.am (maintainer-check, maintainer-check-valgrind) + (maintainer-check-g++): New. + * Makefile.am (maintainer-check): New. + +2002-10-13 Akim Demaille + + * data/glr.c: Formatting changes. + Tweak some trace messages to match yacc.c's. + +2002-10-13 Akim Demaille + + GLR parsers sometimes raise parse errors instead of performing the + default reduction. + Reported by Charles-Henry de Boysson. + + * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't + check the length of the traces when %glr. + (_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from + GLR's traces. + (AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New. + Test GLR parsers. + * data/glr.c (YYLEFTMOST_STATE): Fix its value. + (yyltype): Remove the yy prefix from the member names. + (yytable): Complete its comment. + (yygetLRActions): Map error action number from YYTABLE from + YYTABLE_NINF to 0. + (yyisErrorAction): No longer compare YYACTION to YYPACT_NINF + (which was a bug: it should have been YYTABEL_NINF, and yet it was + not satisfying as we could compare an YYACTION computed from + YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the + only value for error actions. + (yyreportParseError): In verbose parse error messages, don't issue + `error' in the list of expected tokens. + * data/yacc.c (yyparse) : Rewrite the decoding of the + next action to perform to match glr.c's decoding. + (yytable): Complete its comment. + +2002-10-13 Paul Eggert + + Fix problem reported by Henrik Grubbstroem in + : + "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected, + because the Bison parser reads the second action before reducing + the first one. + * src/scan-gram.l (rule_length): New static var. + Use it to keep track of the rule length in the scanner, since + we can't expect the parser to be in lock-step sync with the scanner. + (handle_action_dollar, handle_action_at): Use this var. + * tests/actions.at (Exotic Dollars): Test for the problem. + +2002-10-12 Paul Eggert + + * lib/timevar.c [! IN_GCC && HAVE_SYS_TIME_H]: Include . + * m4/timevar.m4 (BISON_PREREQ_TIMEVAR): Check for . + Include when checking for clock_t and struct tms. + Use same include order as source. + This is for the SunOS 4.1.4 porting bug reported by Peter Klein in + . + + * lib/timevar.c: Update copyright date and clarify comments. + (get_time) [IN_GCC]: Keep the GCC version for reference. + + * lib/timevar.c, lib/timevar.h, lib/timevar.def: Import + GCC version as of today, then merge Bison's changes. + Change "GCC" to "Bison" in copyright notice. timevar.def's + author is Akim, so change that too. + + * src/reader.c (grammar_current_rule_check): + Don't worry about the default action if $$ is untyped. + Prevents bogus warnings reported by Jim Gifford in + . + + * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE. + * data/glr.c, data/lalr1.cc, data/yacc.c: + Output token definitions before the first part of user declarations. + Fixes compatibility problem reported by Jim Gifford for kbd in + . + +2002-10-11 Paul Eggert + + * data/yacc.c (yyreport_parse_error): Remove, putting its body into... + (yyparse): here. This undoes some of the 2002-07-25 change. + Compatibility problem reported by Ralf S. Engelschall with + OSSP cfg . + +2002-10-11 Akim Demaille + + * tests/regression.at Characters Escapes): New. + * src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept \' in strings and + characters. + Reported by Jan Nieuwenhuizen. + +2002-10-11 Akim Demaille + + * po/id.po: New. + +2002-10-10 Paul Eggert + + Portability fixes for bitsets; this also avoids several GCC + warnings. + + * lib/abitset.c: Include , for offsetof. + * lib/lbitset.c: Likewise. + + * lib/abitset.c (abitset_bytes): Return a size that is aligned + properly for vectors of objects. Do not assume that adding a + header size to a multiple of a word size yields a value that is + properly aligned for the whole union. + * lib/bitsetv.c (bitsetv_alloc): Likewise. + + * lib/bitset_stats.c (bitset_stats_bytes): Adjust to new, + unique names for structures. + * lib/ebitset.c (ebitset_bytes): Likewise. + * lib/lbitset.c (lbitset_bytes): Likewise. + + * lib/abitset.c (abitset_ones, abitset_zero, abitset_empty_p, + abitset_copy1, abitset_not, abitset_equal_p, abitset_subset_p, + abitset_disjoint_p, abitset_and, abitset_and_cmp, abitset_andn, + abitset_andn_cmp, abitset_or, abitset_or_cmp, abitset_xor, + abitset_xor_cmp, abitset_and_or, abitset_and_or_cmp, + abitset_andn_or, abitset_andn_or_cmp, abitset_or_and, + abitset_or_and_cmp, abitset_copy): Supply prototype decls, + to improve the type-checking that GCC can do. + * lib/bitset.c (bitset_op4_cmp): Likewise. + * lib/bitset_stats.c (bitset_stats_count, + bitset_stats_empty_p, bitset_stats_ones, bitset_stats_zero, + bitset_stats_copy, bitset_stats_disjoint_p, + bitset_stats_equal_p, bitset_stats_not, bitset_stats_subset_p, + bitset_stats_and, bitset_stats_and_cmp, bitset_stats_andn, + bitset_stats_andn_cmp, bitset_stats_or, bitset_stats_or_cmp, + bitset_stats_xor, bitset_stats_xor_cmp, bitset_stats_and_or, + bitset_stats_and_or_cmp, bitset_stats_andn_or, + bitset_stats_andn_or_cmp, bitset_stats_or_and, + bitset_stats_or_and_cmp): Likewise. + * lib/lbitset.c (lbitset_and, lbitset_and_cmp, lbitset_andn, + lbitset_andn_cmp, lbitset_or, lbitset_or_cmp, lbitset_xor, + lbitset_xor_cmp, lbitset_empty_p, lbitset_ones, lbitset_not, + lbitset_subset_p, lbitset_disjoint_p, debug_lbitset): Likewise. + + * lib/abitset.h: Include bitset.h, not bbitset.h. + * lib/ebitset.h: Likewise. + * lib/lbitset.h: Likewise. + + * lib/bbitset.h: (enum_bitset_ops, enum_bitset_type): New types. + All instances of parameters of type enum bitset_opts are now of + type enum_bitset_opts, to conform to the C Standard, and similarly + for enum_bitset_type. + * lib/ebitset.c (enum_ebitset_find_mode): Likewise. + * lib/lbitset.c (enum_lbitset_find_mode): Likewise. + + Do not use "struct bitset_struct" to mean different things in + different modules. Not only is this confusing, it violates + the C Standard, which requires that structure types in different + modules must be compatible if one is to be passed to the other. + * lib/bbitset.h (bitset): Now points to a union, not to a struct. + All instances of "struct bitset_struct *" replaced with "bitset". + * lib/bitset.h (struct bitset_struct): Remove, replacing with.... + (union bitset_union, struct abitset_struct, struct ebitset_struct, + struct lbitset_struct, struct bitset_stats_struct): New types. + All uses of struct bitset_struct changed to union bitset_union, + etc. + * lib/abitset.c (struct abitset_struct, abitset, + struct bitset_struct): Remove. + * lib/bitset_stats.c (struct bitset_stats_struct, bitset_stats, + struct bitset_struct): Remove. + * lib/ebitset.c (struct ebitset_struct, ebitset, struct + bitset_struct): Remove. + * lib/lbitset.c (struct lbitset_struct, lbitset, bitset_struct): + Likewise. + + Do not call a function of type T using a call that assumes the + function is of a different type U. Standard C requires that a + function must be called with a type that is compatible with its + definition. + * lib/bbitset.h (bitset_and_or_, bitset_andn_or_, bitset_or_and_): + New decls. + * lib/bitset.c (bitset_and_or_, bitset_andn_or_, bitset_or_and_): + New functions. + * lib/ebitset.c (PFV): Remove. + * lib/lbitset.c (PFV): Likewise. + * lib/ebitset.c (ebitset_and, ebitset_andn, ebitset_or, + ebitset_xor, ebitset_copy, ebitset_ones, ebitset_empty_p): New + decls. + (ebitset_and, ebitset_andn, ebitset_or, ebitset_xor): New functions. + (ebitset_vtable): Use them. + * lib/lbitset.c (lbitset_and, lbitset_andn, lbitset_or, + lbitset_xor): New functions. + (lbitset_vtable): Use them. + + * lib/bitset.h (bitset_next, bitset_prev, bitset_only_set_p): + Declare. + + * lib/bitsetv.c (bitsetv_alloc): Add a cast to (void *) to avoid a + GCC warning. + * lib/lbitset.c (LBITSET_CURRENT1): Likewise. + Use offsetof, for simplicity. + +2002-10-06 Paul Eggert + + * lib/bitset.h (bitset_reset): Do not assume that bitset_word is + the same width as int. This reapplies a hunk of the 2002-08-12 patch + , + which was inadvertently undone by the 2002-09-30 patch. + * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is + the same width as int. + +2002-10-04 Paul Eggert + + Version 1.50. + + * configure.ac (AC_INIT), NEWS: Increment version number. + + * doc/bison.texinfo: Minor spelling, grammar, and white space + fixes. + (Symbols): Mention that any negative value returned from yylex + signifies end-of-input. Warn about negative chars. Mention + the portable Standard C character set. + + The GNU coding standard says CFLAGS and YFLAGS are reserved + for the installer to set. + * lib/Makefile.am (AM_CFLAGS): Renamed from CFLAGS. + * src/Makefile.am (AM_CFLAGS): Likewise. + (AM_YFLAGS): Renamed from YFLAGS. + + Fix some MAX and MIN problems. + * src/gram.h (ITEM_NUMBER_MIN): MIN_MAX -> INT_MIN. + * src/lalr.h (GOTO_NUMBER_MAX): INT_MAX -> SHRT_MAX. + * src/symtab.h (SYMBOL_NUMBER_MAX): New macro. + * src/reader.c (reader): Use it. + + * tests/regression.at (Braces parsing): Use grep, not fgrep, as + POSIX 1003.1-2001 has removed fgrep. + +2002-10-04 Michael Hayes + + * lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be + interpreted as signed. + * lib/ebitset.c (ebitset_list): Fix bug. + +2002-10-01 Paul Eggert + + More fixes for 64-bit hosts and large bitsets. + + * lib/abitset.c (struct abitset_struct.n_bits, abitset_small_list, + abitset_size, abitset_list, abitset_list_reverse, abitset_list): + Use bitset_bindex, not int or unsigned int or size_t, to count bits. + * lib/bbitset.h (struct bitset_vtable.size, struct bitset_vtable.count, + struct bitset_vtable.list, struct bitset_vtable.list_reverse, + bitset_count_, bitset_next, bitset_prev, bitset_first, bitset_last, + bitset_count_): Likewise. + * lib/bitset.h (bitset_iterator.num, bitset_iterator.i, + bitset_first, bitset_last): Likewise. + * lib/bitset_stats.c (bitset_stats_size, bitset_stats_list, + bitset_stats_list_reverse, bitset_stats_size, + bitset_stats_count, bitset_stats_list, bitset_stat_list_reverse): + Likewise. + * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise. + * lib/bitsetv.c (bitsetv_alloc, bitsetv_create, bitsetv_free, + bitsetv_zero, bitsetv_ones, bitsetv_transitive_closure, + bitsetv_reflexive_transitive_closure): Likewise. + * lib/bitsetv.h (bitsetv_alloc, bitsetv_create): Likewise. + * lib/ebitset.c (ebitset_size, ebitset_list, ebitset_list_reverse): + Likewise. + * lib/lbitset.c (lbitset_size, lbitset_list, lbitset_list_merge): + Likewise. + + * lib/abitset.c (abitset_ones, abitset_zero, abitset_bytes): + Use size_t, not unsigned int, to count bytes. + * lib/abitset.h (abitset_bytes): Likewise. + * lib/bitset.c (bitset_bytes, bitset_alloc, bitset_obstack_alloc): + Likewise. + * lib/bitset.h (bitset_bytes): Likewise. + * lib/bitset_stats.c (bitset_stats_bytes, bitset_stats_init): Likewise. + * lib/bitset_stats.h (bitset_stats_bytes): Likewise. + * lib/bitsetv.c (bitsetv_alloc): Likewise. + * lib/ebitset.c (ebitset_bytes): Likewise. + * lib/ebitset.h (ebitset_bytes): Likewise. + * lib/lbitset.c (lbitset_bytes): Likewise. + * lib/lbitset.h (lbitset_bytes): Likewise. + + * lib/abitset.c (abitset_empty_p, abitset_not, abitset_equal_p, + abitset_subset_p, abitset_disjoint_p, abitset_and, + abitset_and_cmp, abitset_andn, abitset_andn_cmp, abitset_or, + abitset_or_cmp, abitset_xor, abitset_xor_cmp, abitset_and_or, + abitset_and_or_cmp, abitset_andn_or, abitset_andn_or_cmp, + abitset_or_and, abitset_or_and_cmp): + Use bitset_windex instead of unsigned int. + * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise. + * lib/ebitset.c (struct ebitset_struct.size, ebitset_elts_grow, + ebitset_elt_add, ebitset_elt_remove, ebitset_weed, + ebitset_elt_find, ebitset_list_reverse, ebitset_list, ebitset_init): + Likewise. + * lib/lbitset.c (lbitset_ones, lbitset_not): Likewise. + + * lib/bitset.c (bitset_print): + Use proper printf formats for widths of integer types. + * lib/bitset_stats.c (bitset_percent_histogram_print, + bitset_log_histogram_print, bitset_stats_print_1): Likewise. + * lib/bitsetv-print.c (bitsetv_matrix_dump): Likewise. + * lib/bitsetv.c (bitsetv_dump, debug_bitsetv): Likewise. + * lib/lbitset.c (lbitset_bytes): Likewise. + + * lib/bbitset.h (BITSET_BINDEX_MAX, BITSET_WINDEX_MAX, + BITSET_SIZE_MAX): New macros. + (BITSET_INDEX_MAX): Remove. It wasn't right, since it assumed that + sizeof (bitset_word) == sizeof (bitset_windex). All uses changed + to BITSET_WINDEX_MAX. + + * lib/bitset.c (bitset_next, bitset_prev, bitset_first, + bitset_last): Return BITSET_BINDEX_MAX (not -1) for no value, + since we now return the bitset_bindex type (not int). + + * lib/bitsetv.c (bitsetv_alloc): Check for arithmetic overflow + when computing sizes. + * lib/ebitset.c (ebitset_elts_grow): Likewise. + + * lib/lbitset.c (lbitset_elt_find): Simplify windex calculation + and avoid cast to unsigned. + +2002-09-30 Akim Demaille + + * lib/abitset.c, lib/bbitset.h, lib/bitset.c, lib/bitset.h, + * lib/bitset_stats.c, lib/bitsetv.c, lib/ebitset.c, lib/lbitset.c: + Updates from Michael Hayes. + +2002-09-30 Art Haas + + * configure.ac: Update AC_OUTPUT and AM_CONFIG_HEADER + invocations. + * tests/cxx-type.at (declarator): Don't rely on NDEBUG being not + defined. + +2002-09-27 Akim Demaille + + Version 1.49c. + +2002-09-27 Akim Demaille + + * configure.ac (AM_INIT_AUTOMAKE): We _need_ 1.7. + (Because of AC_LIBSOURCE). + +2002-09-27 Akim Demaille + + Playing with Autoscan. + + * configure.ac: Remove the old LIBOBJ tweaks. + (AC_REPLACE_FUNCS): Add strrchr and strtol. + * lib/strrchr.c: New. + * lib/strtol.c: New, from the Coreutils 4.5.1. + +2002-09-27 Akim Demaille + + Playing with Autoscan. + + * m4/prereq.m4 (jm_PREREQ_ARGMATCH, jm_FUNC_ARGMATCH): New. + * lib/Makefile.am (libbison_a_SOURCES): No longer include + argmatch.c and argmatch.h, since they are AC_LIBSOURCE'd. + * lib/strcasecmp.c, lib/strncasecmp.c, lib/memcmp.c: New, from the + Coreutils 4.5.1. + +2002-09-24 Akim Demaille + + * doc/bison.texinfo (Stack Overflow): xref to Recursion. + (Frequently Asked Questions, Parser Stack Overflow): New. + +2002-09-13 Akim Demaille + + Playing with autoscan. + + * src/reader.c (get_merge_function): Use xstrdup, not strdup. + * src/files.c (skeleton_find): Remove, unused. + * m4/memcmp.m4: New, from the Coreutils 4.5.1. + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Run jm_FUNC_MEMCMP. + +2002-09-13 Akim Demaille + + * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.6.3. + * Makefile.am (AUTOMAKE_OPTIONS): Don't. + +2002-09-13 Akim Demaille + + * configure.ac: Require 2.54. + s/jm_FUNC_MALLOC/AC_FUNC_MALLOC/. + s/jm_FUNC_REALLOC/AC_FUNC_REALLOC/. + * m4/c-bs-a.m4, m4/malloc.m4, m4/mbstate_t.m4, m4/realloc.m4: + Remove, provided by Autoconf macros. + +2002-09-12 Akim Demaille + + * m4/prereq.m4: Update, from Coreutils 4.5.1. + +2002-09-12 Akim Demaille + + * m4/prereq.m4: Update, from Fileutils 4.1.5. + * configure.ac (jm_PREREQ_TEMPNAME): Invoke it. + Reported by Martin Mokrejs. + +2002-09-10 Akim Demaille + + * src/parse-gram.y: Associate a human readable string to each + token type. + * tests/regression.at (Invalid inputs): Adjust. + +2002-09-10 Gary V. Vaughan + + * tests/Makefile.am ($(srcdir)/package.m4): Bison now ships + with an Autoconf-2.5x style configure.ac. + +2002-09-06 Paul Eggert + + * doc/bison.texinfo (Conditions): Make explicit that the GPL + exception applies only to yacc.c. This is a modification of a + patch originally suggested by Akim Demaille. + +2002-09-06 Akim Demaille + + * data/c.m4 (b4_copyright): Move the GPL exception comment from + here to... + * data/yacc.c: here. + + * data/lalr1.cc (struct yyltype): Don't define it, since we use + LocationType. + (b4_ltype): Default to yy::Location from location.hh. + +2002-09-04 Jim Meyering + + * data/yacc.c: Guard the declaration of yytoknum also with + `#ifdef YYPRINT', so it is declared only when used. + +2002-09-04 Akim Demaille + + * configure.in: Rename as... + * configure.ac: this. + Bump to 1.49c. + +2002-09-04 Akim Demaille + + * src/assoc.c, src/closure.c, src/gram.c, src/injections.c, + * src/lalr.c, src/LR0.c, src/relation.c, src/tables.c: Don't + translate maintainer only messages. + +2002-08-12 Paul Eggert + + Version 1.49b. + + * Makefile.am (SUBDIRS): Remove intl. + (DISTCLEANFILES): Remove. + * NEWS: Mention that GNU M4 is now required. Clarify what is + meant by "larger grammars". Mention the pt_BR translation. + * configure.in (AC_CHECK_DECLS): Add getenv, getopt. + (AM_GNU_GETTEXT_VERSION): New macro, replacing GETTEXT_VERSION var. + Bump version from 0.11.2 to 0.11.5. + (BISON_PREREQ_STAGE): Remove. + (AM_GNU_GETTEXT): Use external gettext. + (AC_OUTPUT): Remove intl/Makefile. + + * config/depcomp, config/install-sh: Sync with Automake 1.6.3. + + * data/glr.c: Include string.h, for strlen. + (yyreportParseError): Use size_t for yysize. + (yy_yypstack): No longer nested inside yypstates, as nested + functions are not portable. Do not assume size_t is the + same width as int. + (yypstates): Do not assume that ptrdiff_t is the same width + as int, and similarly for yyposn and YYINDEX. + + * data/yacc.c: Fix comment about `$$ = $1': it can copy garbage. + + * lib/Makefile.am (INCLUDES): Do not include from the intl + directory, which has been removed. + * src/Makefile.am (INCLUDES): Likewise. + + * lib/Makefile.am (libbison_a_SOURCES): Add unlocked-io.h. + (bitsets_sources, additional_bitsets_sources, timevars_sources): + New vars. + + * lib/Makefile.am (libbison_a_SOURCES): Avoid +=, a GNU make extension. + * tests/Makefile.am (EXTRA_DIST): Likewise. + + * lib/abitset.c (abitset_reverse_list, ebitset_reverse_list): + Do not assume that bitset_windex is the same width as unsigned. + + * lib/abitset.c (abitset_unused_clear): Do not assume that + bitset_word is the same width as int. + * lib/bbitset.h (BITSET_INDEX_MAX, BITSET_MSB): Likewise. + * lib/bitset.h (bitset_set, bitset_reset): Likewise. + * lib/bitset_stats.c (bitset_stats_set, bitset_stats_reset): Likewise. + * lib/ebitset.c (ebitset_set, ebitset_reset): Likewise. + * lib/lbitset.c (lbitset_set, lbitset_reset): Likewise. + + * lib/abitset.c (abitset_op1): Use -1, not ~0, as memset arg (for + portability to one's complement hosts!). + * lib/ebitset.c (ebitset_op1): Likewise. + * lib/lbitset.c (lbitset_op1): Likewise. + + * lib/argmatch.c, lib/quotearg.c, quotearg.h: Sync with GNU tar. + * lib/argmatch.h, lib/basename.c, lib/dirname.c, lib/dirname.h, + lib/hash.c, lib/hash.h, lib/strnlen.c, lib/xmalloc.c: + Sync with fileutils. + * lib/error.c, lib/getopt.c, lib/getopt.h, lib/getopt1.c, + lib/gettext.h: Sync with diffutils. + + * lib/memrchr.c, lib/mkstemp.c, lib/strchr.c, lib/strnlen.c, + lib/strspn.c, lib/tempname.c: Use GPL, not LGPL. + + * lib/obstack.c, lib/obstack.h: Sync with fileutils, except use + PROTOTYPES to check for prototypes, and "defined __STDC__" to + check for void *. + + * lib/bbitset.h (BITSET_WORD_BITS): Now of type unsigned, not + size_t; the old version tried to do this but casted improperly. + (bitset_bindex, bitset_windex): Now size_t, not unsigned long. + (bitset_test): Now returns int, not unsigned long. + + * lib/bitset_stats.c: Include "gettext.h". + (_): New macro. + (bitset_stats_set, bitset_stats_reset, bitset_stats_test): Don't + name locals "index", as it generates unnecessary warnings on some + hosts that have an "index" function. + + * lib/bitset_stats.c (bitset_stats_print_1, bitset_stats_print, + bitset_stats_read, bitset_stats_write): Wrap strings in _() if + they need translation. + * src/LR0.c (state_list_append, new_itemsets, get_state, + append_states, generate_states): Likewise. + * src/assoc.c (assoc_to_string): Likewise. + * src/closure.c (print_closure, set_firsts, closure): Likewise. + * src/gram.c (grammar_dump): Likewise. + * src/injections.c (injections_compute): Likewise. + * src/lalr.c (lookaheads_print): Likewise. + * src/relation.c (relation_transpose): Likewise. + * src/scan-gram.l: Likewise. + * src/tables.c (table_grow, pack_vector): Likewise. + + * m4/Makefile.am (EXTRA_DIST): Remove codeset.m4, + glibc21.m4, isc-posix.m4 lcmessage.m4, stage.m4. + * m4/malloc.m4, m4/realloc.m4: Sync with diffutils. + * m4/mbstate_t.m4: Sync with fileutils. + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): AC_MBSTATE_T -> AC_TYPE_MBSTATE_T. + + * po/LINGUAS: Add pt_BR. + * po/POTFILES.in: Add src/assoc.c, src/closure.c, src/gram.c, + src/main.c, src/relation.c, src/state.c, lib/bitset_stats.c, + lib/timevar.c. + Use src/parse-gram.y instead of src/parse-gram.c, as the gettext + manual recommends. + Similarly, use src/scan-gram.l instead of src/scan-gram.c. + + * src/complain.c (strerror_r): Remove decl; not needed. + (strerror): Use same pattern as ../lib/error.c. + + * src/files.c, src/files.h (compute_header_macro): Remove; unused. + + * src/gram.c (grammar_dump): Do not assume ptrdiff_t fits in int. + + * src/main.c (main): Cast result of bindtextdomain and textdomain + to void, to avoid a GCC warning when --disable-nls is in effect. + + * src/scan-gram.l: Use strings rather than escapes when possible, + to minimize the number of warnings from xgettext. + (handle_action_dollar, handle_action_at): Don't use isdigit, + as it mishandles negative chars and it may not work as expected + outside the C locale. + + * src/symtab.c (symbol_get): Don't cast LHS of an assignment; + this is a GCC extension and is not portable to other compilers. + + * src/system.h (alloca): Use same pattern as ../lib/error.c. + Do not include ; no longer needed. + Do not include ; no longer needed (and generates + warnings on OpenBSD 3.0). + + * tests/cxx-type.at (yylex): Do not pass signed char to isupper; + it's not portable. + + * tests/regression.at: Do not use 'cc -c input.c -o input'; + Sun C rejects this. Instead, use 'cc -c input.c -o input.o'. + + * tests/synclines.at (AC_SYNCLINES_COMPILE): Accept any nonzero + exit status as failure, not just exit status 1. Sun C exits + with status 2 sometimes. + + * tests/torture.at (AT_INCREASE_DATA_SIZE): New macro. + Use it for the two large tests. + +2002-08-02 Akim Demaille + + * src/conflicts.c (conflicts_output): Don't output rules never + reduced here, since anyway that computation doesn't work. + * src/gram.h, src/gram.h (rule_filter_t, rule_useful_p) + (rule_useless_p, rule_never_reduced_p): New. + (grammar_rules_partial_print): Use a filter instead of a range. + Display the title only if needed. + (grammar_rules_print): Adjust. + (grammar_rules_never_reduced_report): New. + * src/tables.c (action_row): Move the computation of rules never + reduced to... + (token_actions): here. + * src/main.c (main): Make the parser before making the report, so + that rules never reduced are computed. + Call grammar_rules_never_reduced_report. + * src/print.c (print_results): Report rules never reduced. + * tests/conflicts.at, tests/reduce.at: Adjust. + +2002-08-01 Akim Demaille + + Instead of attaching lookaheads and duplicating the rules being + reduced by a state, attach the lookaheads to the reductions. + + * src/state.h (state_t): Remove the `lookaheads', + `lookaheads_rule' member. + (reductions_t): Add a `lookaheads' member. + Use a regular array for the `rules'. + * src/state.c (reductions_new): Initialize the lookaheads member + to 0. + (state_rule_lookaheads_print): Adjust. + * src/state.h, src/state.c (state_reductions_find): New. + * src/conflicts.c (resolve_sr_conflict, set_conflicts) + (count_rr_conflicts): Adjust. + * src/lalr.c (LArule): Remove. + (add_lookback_edge): Adjust. + (state_lookaheads_count): New. + (states_lookaheads_initialize): Merge into... + (initialize_LA): this. + (lalr_free): Adjust. + * src/main.c (main): Don't free nullable and derives too early: it + is used by --verbose. + * src/print.c, src/print_graph.c, src/tables.c: Adjust. + +2002-08-01 Akim Demaille + + * src/derives.h, src/derives.c (derives): A `rule_t***' instead of + `rule_number_t**'. + (set_derives, free_derives): Rename as... + (derives_compute, derives_free): this. + Adjust all dependencies. + * src/nullable.c (set_nullable, free_nullable): Rename as... + (nullable_compute, nullable_free): these. + (rule_list_t): Store rule_t *, not rule_number_t. + * src/state.c (state_rule_lookaheads_print): Directly compare rule + pointers, instead of their numbers. + * src/main.c (main): Call nullable_free, and derives_free earlier, + as they were lo longer used. + +2002-08-01 Akim Demaille + + * lib/timevar.c (get_time): Include children time. + * src/lalr.h (LA, LArule): Don't export them: used with the + state_t. + * src/lalr.c (LA, LArule): Static. + * src/lalr.h, src/lalr.c (lalr_free): New. + * src/main.c (main): Call it. + * src/tables.c (pack_vector): Check whether loc is >= to the + table_size, not >. + (pack_tables): Don't free froms, tos, conflict_tos, and pos... + (tables_generate): do it, since that's also it which allocates + them. + Don't free LA and LArule, main does. + +2002-07-31 Akim Demaille + + Separate parser tables computation and output. + + * src/output.c (nvectors, base_t, base, base_ninf, conflict_table) + (conflict_list, conflict_list_cnt, table, check, table_ninf) + (yydefgoto, yydefact, high): Move to... + * src/tables.h, src/tables.c: here. + * src/output.c (vector_number_t, VECTOR_NUMBER_MAX) + (VECTOR_NUMBER_MIN, state_number_to_vector_number) + (symbol_number_to_vector_number, nvectors, BASE_MAX, BASE_MIN) + (froms, tos, conflict_tos, tally, width, action_t, ACTION_MAX) + (ACTION_MIN, actrow, order, nentries, pos, conflrow) + (conflict_list_free, table_size, lowzero, table_grow, conflict_row) + (action_row, save_row, token_actions, save_column, default_goto) + (goto_actions, sort_actions, matching_state, pack_vector) + (table_ninf_remap, pack_table, prepare_actions): Move to... + * src/tables.c: here. + * src/tables.h, src/tables.c(tables_generate, tables_free): New. + * src/output.c (token_actions, output_base, output_conflicts) + (output_check): Merge into... + (prepare_actions): this. + (actions_output): Rename as... + (user_actions_output): this. + * src/main.c (main): Call tables_generate and tables_free. + +2002-07-31 Akim Demaille + + Steal GCC's --time-report support. + + * lib/timevar.c, lib/timevar.h, lib/timevar.def: New, + stolen/adjusted from GCC. + * m4/stage.m4: Remove time related checks. + * m4/timevar.m4: New. + * configure.in: Adjust. + * src/system.h: Adjust to using timevar.h. + * src/getargs.h, src/getargs.c: Support trace_time for + --trace=time. + * src/main.c (stage): Remove. + (main): Replace `stage' invocations with timevar calls. + * src/output.c: Insert pertinent timevar calls. + +2002-07-31 Akim Demaille + + Let --trace have arguments. + + * src/getargs.h (enum trace_e): New. + * src/getargs.c (trace_args, trace_types, trace_argmatch): New. + (long_options, short_options): --trace/-T takes an optional + argument. + Change all the uses of trace_flag to reflect the new flags. + * tests/sets.at (Firsts, Nullable, Broken Closure): Use --trace=sets. + + Strengthen `stage' portability. + + * m4/stage.m4 (BISON_PREREQ_STAGE): New. + * configure.in: Use it. + Don't check for malloc.h and sys/times.h. + * src/system.h: Include them when appropriate. + * src/main.c (stage): Compile only when mallinfo, struct mallinfo, + times and struct tms are available. + +2002-07-30 Akim Demaille + + In verbose parse error message, don't report `error' as an + expected token. + * tests/actions.at (Printers and Destructors): Adjust. + * tests/calc.at (Calculator $1): Adjust. + * data/yacc.c, data/glr.c, data/lalr1.c: When making the verbose + error message, do not report the parser accepts the error token in + that state. + +2002-07-30 Akim Demaille + + Normalize conflict related messages. + + * src/complain.h, src/complain.c (warn, complain): New. + * src/conflicts.c (conflicts_print): Use them. + (conflict_report_yacc): New, extracted from... + (conflicts_print): here. + * tests/conflicts.at, tests/existing.at: Adjust. + +2002-07-30 Akim Demaille + + Report rules which are never reduced by the parser: those hidden + by conflicts. + + * src/LR0.c (save_reductions): Don't make the final state too + different: save its reduction (accept) instead of having a state + without any action (no shift or goto, no reduce). + Note: the final state is now a ``regular'' state, i.e., the + parsers now contain `reduce 0' as default reduction. + Nevertheless, since they decide to `accept' when yystate = + final_state, they still will not reduce rule 0. + * src/print.c (print_actions, print_reduction): Adjust. + * src/output.c (action_row): Track reduced rules. + (token_actions): Report rules never reduced. + * tests/conflicts.at, tests/regression.at: Adjust. + +2002-07-30 Akim Demaille + + `stage' was accidently included in a previous patch. + Initiate its autoconfiscation. + + * configure.in: Look for malloc.h and sys/times.h. + * src/main.c (stage): Adjust. + Report only when trace_flag. + +2002-07-29 Akim Demaille + + * src/state.h, src/state.c (transitions_t): Holds state_t*'s, not + state_number_t. + (errs_t): symbol_t*, not symbol_number_t. + (reductions_t): rule_t*, not rule_number_t. + (FOR_EACH_SHIFT): New. + * src/LR0.c, src/conflicts.c, src/lalr.c, src/output.c + * src/print.c, src/print_graph.c: Adjust. + +2002-07-29 Akim Demaille + + Use $accept and $end, as BYacc and BTYacc do, instead of $axiom and $. + + * src/symtab.h, src/symtab.c (eoftoken, axiom): Rename as... + (endtoken, accept): these. + * src/reader.c (reader): Set endtoken's default tag to "$end". + Set undeftoken's tag to "$undefined" instead of "$undefined.". + * doc/bison.texinfo (Table of Symbols): Mention $accept and $end. + Adjust. + +2002-07-29 Akim Demaille + + * src/reduce.c (reduce_grammar): When the language is empty, + complain about the start symbol, not the axiom. + Use its location. + * tests/reduce.at (Empty Language): New. + +2002-07-26 Akim Demaille + + * src/reader.h, src/reader.c (gram_error): ... can't get + yycontrol without making too strong assumptions on the parser + itself. + * src/output.c (prepare_tokens): Use the real 0th value of + token_translations instead of `0'. + * src/parse-gram.y (yyerror): Don't rely on yycontrol being + visible here. + * data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc + for the time being: %locations ought to provide it to yyerror. + +2002-07-25 Akim Demaille + + * src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1. + * doc/bison.texinfo (Decl Summary): s/$illegal/$undefined./. + * tests/regression.at (Web2c Actions): Adjust. + +2002-07-25 Akim Demaille + + Stop storing rules from 1 to nrules + 1. + + * src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c + * src/nullable.c, src/output.c, src/print.c, src/reader.c + * src/reduce.c: Allocate and free from &rules[0], not &rules[1]. + Iterate from 0 to nrules. + Use rule_number_as_item_number and item_number_as_rule_number. + Adjust to `derive' now containing possibly 0. + * src/gram.h (rule_number_as_item_number, item_number_as_rule_number): + Handle the `- 1' part in rule numbers from/to item numbers. + * src/conflicts.c (log_resolution): Fix the message which reversed + shift and reduce. + * src/output.c (action_row): Initialize default_rule to -1. + (token_actions): Adjust. + * tests/sets.at (Nullable, Firsts): Fix the previously bogus + expected output. + * tests/conflicts.at (Resolved SR Conflicts): Likewise. + +2002-07-25 Akim Demaille + + * data/c.m4 (b4_c_function, b4_c_ansi_args, b4_c_ansi_arg) + (b4_c_knr_arg_names, b4_c_knr_arg_name, b4_c_knr_arg_decls) + (b4_c_knr_arg_decl): New. + * data/yacc.c: Use it to define yysymprint, yydestruct, and + yyreport_parse_error. + +2002-07-25 Akim Demaille + + * data/yacc.c (yyreport_parse_error): New, extracted from... + (yyparse): here. + (yydestruct, yysymprint): Move above yyparse. + Be K&R compliant. + +2002-07-25 Akim Demaille + + * data/c.m4 (b4_ints_in, b4_int_type, b4_int_type_for): New, + replace... + (b4_sint_type, b4_uint_type): these. + * data/yacc.c, data/glr.c, data/lalr1.cc: Use b4_int_type_for. + * tests/regression.at (Web2c Actions): Adjust. + +2002-07-25 Akim Demaille + + * src/gram.h (TIEM_NUMBER_MAX): New. + (item_number_of_rule_number, rule_number_of_item_number): Rename + as... + (rule_number_as_item_number, item_number_as_rule_number): these. + Adjust dependencies. + * src/output.c (vector_number_t, VECTOR_NUMBER_MAX) + (VECTOR_NUMBER_MIN, state_number_to_vector_number) + (symbol_number_to_vector_number): New. + (order): Of vector_number_t* type. + (base_t, BASE_MAX, BASE_MIN): New. + (froms, tos, width, pos, check): Of base_t type. + (action_number_t, ACTION_MIN, ACTION_MAX): New. + (actrow): Of action_number_t type. + (conflrow): Of unsigned int type. + (table_ninf, base_ninf): New. + (GENERATE_MUSCLE_INSERT_TABLE): Also output the `*_min' value. + (muscle_insert_int_table, muscle_insert_base_table) + (muscle_insert_rule_number_table): New. + (prepare_tokens): Output `toknum' as int_table. + (action_row): Returns a rule_number_t. + Use ACTION_MIN, not SHRT_MIN. + (token_actions): yydefact is rule_number_t*. + (table_ninf_remap): New. + (pack_table): Use it for `base' and `table'. + * data/yacc.c, data/glr.c, data/lalr1.cc (YYFLAG): Remove, + replaced with... + (YYPACT_NINF, YYTABLE_NINF): these. + (yypact, yytable): Compute their types instead of hard-coded + `short'. + * tests/regression.at (Web2c Actions): Adjust. + +2002-07-19 Akim Demaille + + * src/scan-gram.l (id): Can start with an underscore. + +2002-07-16 Akim Demaille + + * src/assoc.c, src/asssoc.h (assoc_t, assoc_to_string): New. + Adjust all former `associativity' dependencies. + * src/symtab.c (symbol_new): Default associativity is `undef', not + `right'. + (symbol_check_alias_consistence): Adjust. + +2002-07-09 Akim Demaille + + * doc/bison.texinfo: Properly set the ``header'' part. + Use @dircategory ``GNU programming tools'' as per Texinfo's + documentation. + Use @copying. + +2002-07-09 Akim Demaille + + * lib/quotearg.h: Protect against multiple inclusions. + * src/location.h (location_t): Add a `file' member. + (LOCATION_RESET, LOCATION_PRINT): Adjust. + * src/complain.c (warn_at, complain_at, fatal_at): Drop + `error_one_per_line' support. + +2002-07-09 Akim Demaille + + * src/complain.h, src/complain.c (warn, complain): Remove, unused. + * src/reader.c (lineno): Remove. + Adjust all dependencies. + (get_merge_function): Take a location and use complain_at. + * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise. + * tests/regression.at (Invalid inputs, Mixing %token styles): + Adjust. + +2002-07-09 Akim Demaille + + * src/parse-gram.y (rules_or_grammar_declaration): Add an error + recovery rule, and forbid extensions when --yacc. + (gram_error): Use complain_at. + * src/reader.c (reader): Exit if there were parse errors. + +2002-07-09 Akim Demaille + + * tests/synclines.at (AT_SYNCLINES_COMPILE): New. + (AT_TEST_SYNCLINE): Adjust to unusual GCC outputs. + Reported by R Blake . + +2002-07-09 Akim Demaille + + * data/yacc.c: Output the copyright notive in the header. + +2002-07-03 Akim Demaille + + * src/output.c (froms, tos): Are state_number_t. + (save_column): sp, sp1, and sp2 are state_number_t. + (prepare): Rename `final' as `final_state_number', `nnts' as + `nterms_number', `nrules' as `rules_number', `nstates' as + `states_number', and `ntokens' as `tokens_number'. Remove `nsym', + unused. + * data/yacc.c, data/glr.c, data/lalr1.cc: Adjust. + * data/lalr1.cc (nsym_): Remove, unused. + +2002-07-03 Akim Demaille + + * src/lalr.h, src/lalr.c (goto_number_t): New. + * src/lalr.c (goto_list_t): New. + Propagate them. + * src/nullable.c (rule_list_t): New. + Propagate. + * src/types.h: Remove. + +2002-07-03 Akim Demaille + + * src/closure.c (print_fderives): Use rule_rhs_print. + * src/derives.c (print_derives): Use rule_rhs_print. + (rule_list_t): New, replaces `shorts'. + (set_derives): Add comments. + * tests/sets.at (Nullable, Firsts): Adjust. + +2002-07-03 Akim Demaille + + * src/output.c (prepare_actions): Free `tally' and `width'. + (prepare_actions): Allocate and free `order'. + * src/symtab.c (symbols_free): Free `symbols'. + * src/scan-gram.l (scanner_free): Clear Flex's scanners memory. + * src/output.c (m4_invoke): Move to... + * src/scan-skel.l: here. + (<>): Close yyout, and free its name. + +2002-07-03 Akim Demaille + + Fix some memory leaks, and fix a bug: state 0 was examined twice. + + * src/LR0.c (new_state): Merge into... + (state_list_append): this. + (new_states): Merge into... + (generate_states): here. + (set_states): Don't ensure a proper `errs' state member here, do it... + * src/conflicts.c (conflicts_solve): here. + * src/state.h, src/state.c: Comment changes. + (state_t): Rename member `shifts' as `transitions'. + Adjust all dependencies. + (errs_new): For consistency, also take the values as argument. + (errs_dup): Remove. + (state_errs_set): New. + (state_reductions_set, state_transitions_set): Assert that no + previous value was assigned. + (state_free): New. + (states_free): Use it. + * src/conflicts.c (resolve_sr_conflict): Don't use an `errs_t' as + temporary storage: use `errs' and `nerrs' as elsewhere. + (set_conflicts): Allocate and free this `errs'. + +2002-07-02 Akim Demaille + + * lib/libiberty.h: New. + * lib: Update the bitset implementation from upstream. + * src/closure.c, src/lalr.c, src/output.c, src/print_graph.c, + * src/state.c: Use BITSET_FOR_EACH, not BITSET_EXECUTE. + * src/main.c: Adjust bitset stats calls. + +2002-07-01 Paul Eggert + + * src/scan-gram.l (): Convert to unsigned + char, so that negative chars don't collide with $. + +2002-06-30 Akim Demaille + + Have the GLR tests be `warning' checked, and fix the warnings. + + * data/glr.c (YYFPRINTF): Always define it, not only when YYDEBUG + (yyuserAction, yyreportAmbiguity): `Use' all the arguments. + (yyremoveDeletes): `yyi' and `yyj' are size_t. + Use YYFPRINTF when under if (YYDEBUG) to avoid empty `if' bodies. + (yyaddDeferredAction): static. + (yyglrReduce): yyi, yyk, amd yyposn are size_t. + (yyreportParseError): yyprefix is const. + yytokenp is used only when verbose. + (yy__GNUC__): Replace with __GNUC__. + (yypdumpstack): yyi is size_t. + (yypreference): Un-yy local variables and arguments, to avoid + clashes with `yyr1'. Anyway, we are not in the user name space. + (yytname_size): be an int, as is compared with ints. + * tests/testsuite.at (AT_COMPILE, AT_PARSER_CHECK): New. + Use them. + * tests/cxx-gram.at: Use quotation to protect $1. + Use AT_COMPILE to enable warnings hunts. + Prototype yylex and yyerror. + `Use' argc. + Include `string.h', not `strings.h'. + Produce and prototype stmtMerge only when used. + yylex takes a location. + +2002-06-30 Akim Demaille + + We spend a lot of time in quotearg, in particular when --verbose. + + * src/symtab.c (symbol_get): Store a quoted version of the key. + (symbol_tag_get, symbol_tag_get_n, symbol_tag_print): Remove. + Adjust all callers. + +2002-06-30 Akim Demaille + + * src/state.h (reductions_t): Rename member `nreds' as num. + (errs_t): Rename members `nerrs' and `errs' as `num' and `symbols'. + * src/state.c (ERRS_ALLOC, REDUCTIONS_ALLOC): Use the correct types. + +2002-06-30 Akim Demaille + + * src/state.h, src/state.c (shift_t, SHIFT_SYMBOL, SHIFT_IS_SHIFT) + (SHIFT_IS_GOTO, SHIFT_IS_ERROR, SHIFT_DISABLE, SHIFT_IS_DISABLED) + (shifts_to): Rename as... + (transition_t, TRANSITION_SYMBOL, TRANSITION_IS_TRANSITION) + (TRANSITION_IS_GOTO, TRANSITION_IS_ERROR, TRANSITION_DISABLE) + (TRANSITION_IS_DISABLED, transitions_to): these. + +2002-06-30 Akim Demaille + + * src/print.c (print_shifts, print_gotos): Merge into... + (print_transitions): this. + (print_transitions, print_errs, print_reductions): Align the + lookaheads columns. + (print_core, print_transitions, print_errs, print_state, + print_grammar): Output empty lines separator before, not after. + (state_default_rule_compute): Rename as... + (state_default_rule): this. + * tests/conflicts.at (Defaulted Conflicted Reduction), + (Unresolved SR Conflicts, Resolved SR Conflicts): Adjust. + * tests/regression.at (Rule Line Numbers, Web2c Report): Adjust. + +2002-06-30 Akim Demaille + + Display items as we display rules. + + * src/gram.h, src/gram.c (rule_lhs_print): New. + * src/gram.c (grammar_rules_partial_print): Use it. + * src/print.c (print_core): Likewise. + * tests/conflicts.at (Defaulted Conflicted Reduction), + (Unresolved SR Conflicts): Adjust. + (Unresolved SR Conflicts): Adjust and rename as... + (Resolved SR Conflicts): this, as was meant. + * tests/regression.at (Web2c Report): Adjust. + +2002-06-30 Akim Demaille + + * src/print.c (state_default_rule_compute): New, extracted from... + (print_reductions): here. + Pessimize, but clarify the code. + * tests/conflicts.at (Defaulted Conflicted Reduction): New. + +2002-06-30 Akim Demaille + + * src/output.c (action_row): Let default_rule be always a rule + number. + +2002-06-30 Akim Demaille + + * src/closure.c (print_firsts, print_fderives, closure): + Use BITSET_EXECUTE. + * src/lalr.c (lookaheads_print): Likewise. + * src/state.c (state_rule_lookaheads_print): Likewise. + * src/print_graph.c (print_core): Likewise. + * src/print.c (print_reductions): Likewise. + * src/output.c (action_row): Likewise. + Use SHIFT_IS_DISABLED, SHIFT_IS_SHIFT and SHIFT_SYMBOL. + +2002-06-30 Akim Demaille + + * src/print_graph.c: Use report_flag. + +2002-06-30 Akim Demaille + + * src/lalr.c (traverse, digraph, matrix_print, transpose): Move + to... + * src/relation.h, src/relation.c (traverse, relation_digraph) + (relation_print, relation_transpose): New. + +2002-06-30 Akim Demaille + + * src/state.h, src/state.c (shifts_to): New. + * src/lalr.c (build_relations): Use it. + +2002-06-30 Akim Demaille + + * src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number) + (item_number_of_rule_number, rule_number_of_item_number): New. + * src/LR0.c, src/closure.c, src/derives.c, src/derives.h, + * src/gram.c, src/lalr.c, src/nullable.c, src/output.c, src/print.c, + * src/print_graph.c, src/reader.c, src/reduce.c, src/reduce.h: + Propagate their use. + Much remains to be done, in particular wrt `shorts' from types.h. + +2002-06-30 Akim Demaille + + * src/symtab.c (symbol_new): Initialize the `printer' member. + +2002-06-30 Akim Demaille + + * src/LR0.c (save_reductions): Remove, replaced by... + * src/state.h, src/state.c (state_reductions_set): New. + (reductions, errs): Rename as... + (reductions_t, errs_t): these. + Adjust all dependencies. + +2002-06-30 Akim Demaille + + * src/LR0.c (state_list_t, state_list_append): New. + (first_state, last_state): Now symbol_list_t. + (this_state): Remove. + (new_itemsets, append_states, save_reductions): Take a state_t as + argument. + (set_states, generate_states): Adjust. + (save_shifts): Remove, replaced by... + * src/state.h, src/state.c (state_shifts_set): New. + (shifts): Rename as... + (shifts_t): this. + Adjust all dependencies. + * src/state.h (state_t): Remove the `next' member. + +2002-06-30 Akim Demaille + + * src/vcg.c (quote): Use slot 2, since we often pass symbol tag + escaped in slot 0. + +2002-06-30 Akim Demaille + + Use hash.h for the state hash table. + + * src/LR0.c (STATE_HASH_SIZE, state_hash): Remove. + (allocate_storage): Use state_hash_new. + (free_storage): Use state_hash_free. + (new_state, get_state): Adjust. + * src/lalr.h, src/lalr.c (states): Move to... + * src/states.h (state_t): Remove the `link' member, no longer + used. + * src/states.h, src/states.c: here. + (state_hash_new, state_hash_free, state_hash_lookup) + (state_hash_insert, states_free): New. + * src/states.c (state_table, state_compare, state_hash): New. + * src/output.c (output_actions): Do not free states now, since we + still need to know the final_state number in `prepare', called + afterwards. Do it... + * src/main.c (main): here: call states_free after `output'. + +2002-06-30 Akim Demaille + + * src/state.h, src/state.c (state_new): New, extracted from... + * src/LR0.c (new_state): here. + * src/state.h (STATE_ALLOC): Move to... + * src/state.c: here. + * src/LR0.h, src/LR0.c (nstates, final_state): Move to... + * src/state.h, src/state.c: here. + +2002-06-30 Akim Demaille + + * src/reader.c (gensym): Rename as... + * src/symtab.h, src/symtab.c (dummy_symbol_get): this. + (getsym): Rename as... + (symbol_get): this. + +2002-06-30 Akim Demaille + + * src/state.h (state_number_t, STATE_NUMBER_MAX): New. + * src/LR0.c, src/LR0.h, src/conflicts.c, src/lalr.c, src/lalr.h, + * src/output.c, src/print.c, src/print_graph.c: Propagate. + * src/LR0.h, src/LR0.h (final_state): Is a state_t*. + +2002-06-30 Akim Demaille + + Make the test suite pass with warnings checked. + + * tests/actions.at (Printers and Destructors): Improve. + Avoid unsigned vs. signed issues. + * tests/calc.at: Don't exercise the scanner here, do it... + * tests/input.at (Torturing the Scanner): here. + +2002-06-28 Paul Hilfinger + + * data/glr.c: Correct typo in Emacs-mode directive. Slightly + reorganize first lines parallel to yacc.c. + +2002-06-28 Akim Demaille + + * data/c.m4 (b4_copyright, b4_sint_type, b4_uint_type, b4_token_define) + (b4_token_enum, b4_token_defines): New, factored from... + * data/lalr1.cc, data/yacc.c, glr.c: here. + +2002-06-28 Akim Demaille + + * data/yacc.c (yydestruct, yysymprint): Pacify GCC warnings for + unused variables. + * src/output.c (merger_output): static. + +2002-06-28 Akim Demaille + + * src/reader.h: s/grammer_current_rule_merge_set/grammar_.../. + * src/conflicts.c (conflicts_total_count): `i' is unsigned, to + pacify GCC. + * src/output.c (save_row): Initialize all the variables to pacify GCC. + +2002-06-27 Paul Hilfinger + + Accumulated changelog for new GLR parsing features. + + * src/conflicts.c (count_total_conflicts): Change name to + conflicts_total_count. + * src/conflicts.h: Ditto. + * src/output.c (token_actions): Use the new name. + (output_conflicts): Change conflp => conflict_list_heads, and + confl => conflict_list for better readability. + * data/glr.c: Use the new names. + * NEWS: Add self to GLR announcement. + + * src/reader.c (free_merger_functions): Cleanup: XFREE->free. + + * doc/bison.texinfo (GLR Parsers): Make corrections suggested by + Akim Demaille. + + * data/bison.glr: Change name to glr.c + * data/glr.c: Renamed from bison.glr. + * data/Makefile.am: Add glr.c + + * src/getargs.c: + + * src/symlist.h: Add dprec and merger fields to symbol_list_s. + * src/symlist.c (symbol_list_new): Initialize dprec and merger fields. + + Originally 2002-06-16 Paul Hilfinger + + * data/bison.glr: Be sure to restore the + current #line when returning to the skeleton contents after having + exposed the input file's #line. + + Originally 2002-06-13 Paul Hilfinger + + * data/bison.glr: Bring up to date with changes to bison.simple. + + Originally 2002-06-03 Paul Hilfinger + + * data/bison.glr: Correct definitions that use b4_prefix. + Various reformatting. + (GLRStack): Make yychar (in YYPURE case) and yytokenp as part of stack. + (yyreportParseError, yyrecoverParseError, yyprocessOneStack): remove + yytokenp argument; now part of stack. + (yychar): Define to behave as documented. + (yyclearin): Ditto. + + Originally 2002-05-14 Paul Hilfinger + + * src/reader.h: Add declaration for free_merger_functions. + + * src/reader.c (merge_functions): New variable. + (get_merge_function): New function. + (free_merger_functions): New function. + (readgram): Check for %prec that is not followed by a symbol. + Handle %dprec and %merge declarations. + (packgram): Initialize dprec and merger fields in rules array. + + * src/output.c (conflict_tos, conflrow, conflict_table, conflict_list, + conflict_list_cnt, conflict_list_free): New variables. + (table_grow): Also grow conflict_table. + (prepare_rules): Output dprec and merger tables. + (conflict_row): New function. + (action_row): Output conflict lists for GLR parser. Don't use + default reduction in conflicted states for GLR parser so that there + are spaces for the conflict lists. + (save_row): Also save conflict information. + (token_actions): Allocate conflict list. + (merger_output): New function. + (pack_vector): Pack conflict table, too. + (output_conflicts): New function to output yyconflp and yyconfl. + (output_check): Allocate conflict_tos. + (output_actions): Output conflict tables, also. + (output_skeleton): Output b4_mergers definition. + (prepare): Output b4_max_rhs_length definition. + Use 'bison.glr' as default skeleton for GLR parsers. + + * src/gram.c (glr_parser): New flag. + (grammar_free): Call free_merger_functions. + + * src/conflicts.c (count_rr_conflicts): Augment to optionally count + all pairs of conflicting reductions, rather than just all tokens + causing conflicts. Needed to size conflict tables. + (conflicts_output): Modify call to count_rr_conflicts for new + interface. + (conflicts_print): Ditto. + (count_total_conflicts): New function. + + * src/reader.h (merger_list): New type. + (merge_functions): New variable. + + * src/lex.h (tok_dprec, tok_merge): New token types. + + * src/gram.h (rule_s): Add dprec and merger fields. + (glr_parser): New flag. + + * src/conflicts.h (count_total_conflicts): New function. + + * src/options.c (option_table): Add %dprec, %merge, and %glr-parser. + + * doc/bison.texinfo (Generalized LR Parsing): New section. + (GLR Parsers): New section. + (Language and Grammar): Mention GLR parsing. + (Table of Symbols): Add %dprec, %glr-parser, %merge, GLR + Correct typo ("tge" -> "the"). + + * data/bison.glr: New skeleton for GLR parsing. + + * tests/cxx-gram.at: New tests for GLR parsing. + + * tests/testsuite.at: Include cxx-gram.at. + + * tests/Makefile.am: Add cxx-gram.at. + + * src/parse-gram.y: + + * src/scan-gram.l: Add %dprec, %glr-parser, %merge. + + * src/parse-gram.y: Grammar for %dprec, %merge, %glr-parser. + +2002-06-27 Akim Demaille + + * src/options.h, src/options.c: Remove. + * src/getargs.c (short_options, long_options): New. + +2002-06-27 Akim Demaille + + * data/bison.simple, data/bison.c++: Rename as... + * data/yacc.c, data/lalr1.cc: these. + * doc/bison.texinfo (Environment Variables): Remove. + +2002-06-25 Raja R Harinath + + * src/getargs.c (report_argmatch): Initialize strtok(). + +2002-06-20 Akim Demaille + + * data/bison.simple (b4_symbol_actions): New, replaces... + (b4_symbol_destructor, b4_symbol_printer): these. + (yysymprint): Be sure to call YYPRINT only for tokens, and using + user token numbers. + +2002-06-20 Akim Demaille + + * data/bison.simple (yydestructor): Rename as... + (yydestruct): this. + +2002-06-20 Akim Demaille + + * src/symtab.h, src/symtab.c (symbol_type_set) + (symbol_destructor_set, symbol_precedence_set): The location is + the last argument. + Adjust all callers. + +2002-06-20 Akim Demaille + + * src/parse-gram.y (YYPRINT, yyprint): Don't mess with the parser + internals. + * src/reader.h, src/reader.c (grammar_current_rule_prec_set): + Takes a location. + * src/symtab.h, src/symtab.c (symbol_class_set) + (symbol_user_token_number_set): Likewise. + Adjust all callers. + Promote complain_at. + * tests/input.at (Type Clashes): Adjust. + +2002-06-20 Akim Demaille + + * data/bison.simple (YYLEX): Fix the declaration when + %pure-parser. + +2002-06-20 Akim Demaille + + * data/bison.simple (yysymprint): Don't print the token number, + just its name. + * tests/actions.at (Destructors): Rename as... + (Printers and Destructors): this. + Also exercise %printer. + +2002-06-20 Akim Demaille + + * data/bison.simple (YYDSYMPRINT): New. + Use it to remove many of the #if YYDEBUG/if (yydebug). + +2002-06-20 Akim Demaille + + * src/symtab.h, src/symtab.c (symbol_t): printer and + printer_location are new members. + (symbol_printer_set): New. + * src/parse-gram.y (PERCENT_PRINTER): New token. + Handle its associated rule. + * src/scan-gram.l: Adjust. + (handle_destructor_at, handle_destructor_dollar): Rename as... + (handle_symbol_code_at, handle_symbol_code_dollar): these. + * src/output.c (symbol_printers_output): New. + (output_skeleton): Call it. + * data/bison.simple (yysymprint): New. Cannot be named yyprint + since there are already many grammar files with a user `yyprint'. + Replace the calls to YYPRINT to calls to yysymprint. + * tests/calc.at: Adjust. + * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was + taking advantage of parser very internal details (stack size!). + +2002-06-20 Akim Demaille + + * src/scan-gram.l: Complete the scanner with the missing patterns + to pacify Flex. + Use `quote' and `symbol_tag_get' where appropriate. + +2002-06-19 Akim Demaille + + * tests/actions.at (Destructors): Augment to test locations. + * data/bison.simple (yydestructor): Pass it the current location + if locations are enabled. + Prototype only when __STDC__ or C++. + Change the argument names to move into the yy name space: there is + user code here. + +2002-06-19 Akim Demaille + + * data/bison.simple (b4_pure_if): New. + Use it instead of #ifdef YYPURE. + +2002-06-19 Akim Demaille + + * data/bison.simple (b4_location_if): New. + Use it instead of #ifdef YYLSP_NEEDED. + +2002-06-19 Akim Demaille + + Prepare @$ in %destructor, but currently don't bind it in the + skeleton, as %location use is not cleaned up yet. + + * src/scan-gram.l (handle_dollar, handle_destructor_at) + (handle_action_at): New. + (handle_at, handle_action_dollar, handle_destructor_dollar): Take + a braced_code_t and a location as additional arguments. + (handle_destructor_dollar): Instead of requiring `b4_eval', just + unquote one when outputting `b4_dollar_dollar'. + Adjust callers. + * data/bison.simple (b4_eval): Remove. + (b4_symbol_destructor): Adjust. + * tests/input.at (Invalid @n): Adjust. + +2002-06-19 Zack Weinberg + + * doc/bison.texinfo: Document ability to have multiple + prologue sections. + +2002-06-18 Akim Demaille + + * src/files.c (compute_base_names): When computing the output file + names from the input file name, strip the directory part. + +2002-06-18 Akim Demaille + + * data/bison.simple.new: Comment changes. + Reported by Andreas Schwab. + +2002-06-18 Matt Kraai + + * data/bison.simple (yyoverflowlab): #ifndef yyoverflow, so that + there are no `label `yyoverflowlab' defined but not used' warnings + when yyoverflow is defined. + +2002-06-18 Akim Demaille + + * src/symtab.h, src/symtab.c (symbol_t): destructor_location is a + new member. + (symbol_destructor_set): Adjust. + * src/output.c (symbol_destructors_output): Output the destructor + locations. + Output the symbol name. + * data/bison.simple (b4_symbol_destructor): Adjust. + +2002-06-18 Cris Bailiff + and Akim Demaille + + * data/bison.simple.new (yyerrlab1): Be sure to pop and destroy + what's left on the stack when the error recovery hits EOF. + * tests/actions.at (Destructors): Complete to exercise this case. + +2002-06-17 Akim Demaille + + * data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of + arguments is really empty, not only equal to `[]'. + * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new + member. + (symbol_destructor_set): New. + * src/output.c (symbol_destructors_output): New. + * src/reader.h (brace_code_t, current_braced_code): New. + * src/scan-gram.l (BRACED_CODE): Use it to branch on... + (handle_dollar): Rename as... + (handle_action_dollar): this. + (handle_destructor_dollar): New. + * src/parse-gram.y (PERCENT_DESTRUCTOR): New. + (grammar_declaration): Use it. + * data/bison.simple (yystos): Is always defined. + (yydestructor): New. + * tests/actions.at (Destructors): New. + * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep. + +2002-06-17 Akim Demaille + + * src/symlist.h, src/symlist.c (symbol_list_length): New. + * src/scan-gram.l (handle_dollar, handle_at): Compute the + rule_length only when needed. + * src/output.c (actions_output, token_definitions_output): Output + the full M4 block. + * src/symtab.c: Don't access directly to the symbol tag, use + symbol_tag_get. + * src/parse-gram.y: Use symbol_list_free. + +2002-06-17 Akim Demaille + + * src/reader.h, src/reader.c (symbol_list, symbol_list_new) + (symbol_list_prepend, get_type_name): Move to... + * src/symlist.h, src/symlist.c (symbol_list_t, symbol_list_new) + (symbol_list_prepend, symbol_list_n_type_name_get): here. + Adjust all callers. + (symbol_list_free): New. + * src/scan-gram.l (handle_dollar): Takes a location. + * tests/input.at (Invalid $n): Adjust. + +2002-06-17 Akim Demaille + + * src/reader.h, src/reader.c (symbol_list_new): Export it. + (symbol_list_prepend): New. + * src/parse-gram.y (%union): `list' is a new member. + (symbols.1): New, replaces... + (terms_to_prec.1, nterms_to_type.1): these. + * src/symtab.h, src/symtab.c (symbol_type_set, symbol_precedence_set) + Take a location as additional argument. + Adjust all callers. + +2002-06-15 Akim Demaille + + * src/parse-gram.y: Move %token in the declaration section so that + we don't depend upon CVS Bison. + +2002-06-15 Akim Demaille + + * src/state.h, src/state.c (state_rule_lookaheads_print): New. + * src/print.c (print_core): Use it. + +2002-06-15 Akim Demaille + + * src/conflicts.c (log_resolution): Accept the rule involved in + the sr conflicts instead of the lookahead number that points to + that rule. + (flush_reduce): Accept the current lookahead vector as argument, + instead of the index in LA. + (resolve_sr_conflict): Accept the current number of lookahead + bitset to consider for the STATE, instead of the index in LA. + (set_conflicts): Adjust. + * src/lalr.c, src/lalr.h, src/state.h: Comment changes. + +2002-06-15 Akim Demaille + + * src/state.h (state_t): Replace the `lookaheadsp' member, a + short, with `lookaheads' (bitsetv), `lookaheads_rule' (rule_t**). + Adjust all dependencies. + * src/lalr.c (initialize_lookaheads): Split into... + (states_lookaheads_count, states_lookaheads_initialize): these. + (lalr): Adjust. + +2002-06-15 Akim Demaille + + * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved + out of... + (grammar_rules_print): here. + * src/reduce.c (reduce_output): Use it. + * tests/reduce.at (Useless Rules, Reduced Automaton) + (Underivable Rules): Adjust. + +2002-06-15 Akim Demaille + + Copy BYacc's nice way to report the grammar. + + * src/gram.h, src/gram.c (grammar_rhs_print, grammar_rules_print): + New. + Don't print the rules' location, it is confusing and useless. + (rule_print): Use grammar_rhs_print. + * src/print.c (print_grammar): Use grammar_rules_print. + +2002-06-15 Akim Demaille + + Complete and rationalize `useless thing' warnings. + + * src/symtab.h, src/symtab.c (symbol_tag_get, symbol_tag_get_n) + (symbol_tag_print): New. + Use them everywhere in place of accessing directly the tag member. + * src/gram.h, src/gram.c (rule_print): New. + Use it where a rule used to be printed `by hand'. + * src/reduce.c (nonterminals_reduce): Report the use nonterminals. + (reduce_grammar_tables): Report the useless rules. + (reduce_print): Useless things are a warning, not an error. + Report it as such. + * tests/reduce.at (Useless Nonterminals, Useless Rules): + (Reduced Automaton, Underivable Rules): Adjust. + * tests/regression.at (Web2c Report, Web2c Report): Adjust. + * tests/conflicts.at (Unresolved SR Conflicts) + (Solved SR Conflicts): Adjust. + +2002-06-15 Akim Demaille + + Let symbols have a location. + + * src/symtab.h, src/symtab.c (symbol_t): Location is a new member. + (getsym): Adjust. + Adjust all callers. + * src/complain.h, src/complain.c (complain_at, fatal_at, warn_at): + Use location_t, not int. + * src/symtab.c (symbol_check_defined): Take advantage of the + location. + * tests/regression.at (Invalid inputs): Adjust. + +2002-06-15 Akim Demaille + + * src/parse-gram.y (YYLLOC_DEFAULT, current_lhs_location): New. + (input): Don't try to initialize yylloc here, do it in the + scanner. + * src/scan-gram.l (YY_USER_INIT): Initialize yylloc. + * src/gram.h (rule_t): Change line and action_line into location + and action_location, of location_t type. + Adjust all dependencies. + * src/location.h, src/location.c (empty_location): New. + * src/reader.h, src/reader.c (grammar_start_symbol_set) + (grammar_symbol_append, grammar_rule_begin, grammar_rule_end) + (grammar_current_rule_symbol_append) + (grammar_current_rule_action_append): Expect a location as argument. + * src/reader.c (grammar_midrule_action): Adjust to attach an + action's location as dummy symbol location. + * src/symtab.h, src/symtab.c (startsymbol_location): New. + * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust + the line numbers. + +2002-06-14 Akim Demaille + + Grammar declarations may be found in the grammar section. + + * src/parse-gram.y (rules_or_grammar_declaration): New. + (declarations): Each declaration may end with a semicolon, not + just... + (grammar_declaration): `"%union"'. + (grammar): Branch to rules_or_grammar_declaration. + +2002-06-14 Akim Demaille + + * src/main.c (main): Invoke scanner_free. + +2002-06-14 Akim Demaille + + * src/output.c (m4_invoke): Extracted from... + (output_skeleton): here. + Free tempfile. + +2002-06-14 Akim Demaille + + * src/parse-gram.y (directives, directive, gram) + (grammar_directives, precedence_directives, precedence_directive): + Rename as... + (declarations, declaration, grammar, grammar_declaration) + (precedence_declaration, precedence_declarator): these. + (symbol_declaration): New. + +2002-06-14 Akim Demaille + + * src/files.c (action_obstack): Remove, unused. + (output_obstack): Remove it, and all its dependencies, as it is no + longer needed. + * src/reader.c (epilogue_set): Build the epilogue in the + muscle_obstack. + * src/output.h, src/output.c (muscle_obstack): Move to... + * src/muscle_tab.h, src/muscle_tab.h: here. + (muscle_init): Initialize muscle_obstack. + (muscle_free): New. + * src/main.c (main): Call it. + +2002-06-14 Akim Demaille + + * src/location.h: New, extracted from... + * src/reader.h: here. + * src/Makefile.am (noinst_HEADERS): Merge into + (bison_SOURCES): this. + Add location.h. + * src/parse-gram.y: Use location_t instead of Bison's. + * src/reader.h, src/reader.c (prologue_augment, epilogue_set): + Use location_t instead of ints. + +2002-06-14 Akim Demaille + + * data/bison.simple, data/bison.c++: Be sure to restore the + current #line when returning to the skeleton contents after having + exposed the input file's #line. + +2002-06-12 Akim Demaille + + * src/scan-gram.l (SC_BRACED_CODE): Don't use `<.*>', it is too + eager. + * tests/actions.at (Exotic Dollars): New. + +2002-06-12 Akim Demaille + + * src/scan-gram.l (SC_PROLOGUE): Don't eat characters amongst + ['"/] too eagerly. + * tests/input.at (Torturing the Scanner): New. + +2002-06-11 Akim Demaille + + * src/scan-gram.l (YY_OBS_INIT): Remove, replace with... + [SC_COMMENT,SC_STRING,SC_CHARACTER,SC_BRACED_CODE,SC_PROLOGUE] + [SC_EPILOGUE]: Output the quadrigraphs only when not in a comment. + * src/reader.h, src/scan-gram.l (scanner_initialize): this. + * src/reader.c (reader): Use it. + +2002-06-11 Akim Demaille + + * src/scan-gram.l (YY_OBS_FINISH): Don't set yylval. + Adjust all callers. + (scanner_last_string_free): New. + +2002-06-11 Akim Demaille + + * src/scan-gram.l (YY_INIT, YY_GROW, YY_FINISH): Rename as... + (YY_OBS_INIT, YY_OBS_GROW, YY_OBS_FINISH): these. + (last_string, YY_OBS_FREE): New. + Use them when returning an ID. + +2002-06-11 Akim Demaille + + Have Bison grammars parsed by a Bison grammar. + + * src/reader.c, src/reader.h (prologue_augment): New. + * src/reader.c (copy_definition): Remove. + + * src/reader.h, src/reader.c (gram_start_symbol_set, prologue_augment) + (grammar_symbol_append, grammar_rule_begin, grammar_midrule_action) + (grammar_current_rule_prec_set, grammar_current_rule_check) + (grammar_current_rule_symbol_append) + (grammar_current_rule_action_append): Export. + * src/parse-gram.y (symbol_list_new, symbol_list_symbol_append_ + (symbol_list_action_append): Remove. + Hook the routines from reader. + * src/scan-gram.l: In INITIAL, characters and strings are tokens. + * src/system.h (ATTRIBUTE_NORETURN, ATTRIBUTE_UNUSED): Now. + + * src/reader.c (read_declarations): Remove, unused. + + * src/parse-gram.y: Handle the epilogue. + * src/reader.h, src/reader.c (gram_start_symbol_set): Rename as... + (grammar_start_symbol_set): this. + * src/scan-gram.l: Be sure to ``use'' yycontrol to keep GCC quiet. + * src/reader.c (readgram): Remove, unused. + (reader): Adjust to insert eoftoken and axiom where appropriate. + + * src/reader.c (copy_dollar): Replace with... + * src/scan-gram.h (handle_dollar): this. + * src/parse-gram.y: Remove `%thong'. + + * src/reader.c (copy_at): Replace with... + * src/scan-gram.h (handle_at): this. + + * src/complain.h, src/complain.c (warn_at, complain_at, fatal_at): + New. + + * src/scan-gram.l (YY_LINES): Keep lineno synchronized for the + time being. + + * src/reader.h, src/reader.c (grammar_rule_end): New. + + * src/parse.y (current_type, current_class): New. + Implement `%nterm', `%token' support. + Merge `%term' into `%token'. + (string_as_id): New. + * src/symtab.h, src/symtab.c (symbol_make_alias): Don't pass the + type name. + + * src/parse-gram.y: Be sure to handle properly the beginning of + rules. + + * src/parse-gram.y: Handle %type. + * src/reader.c (grammar_rule_end): Call grammar_current_rule_check. + + * src/parse-gram.y: More directives support. + * src/options.c: No longer handle source directives. + + * src/parse-gram.y: Fix %output. + + * src/parse-gram.y: Handle %union. + Use the prologue locations. + * src/reader.c (parse_union_decl): Remove. + + * src/reader.h, src/reader.c (epilogue_set): New. + * src/parse-gram.y: Use it. + + * data/bison.simple, data/bison.c++: b4_stype is now either not + defined, then default to int, or to the contents of %union, + without `union' itself. + Adjust. + * src/muscle_tab.c (muscle_init): Don't predefine `stype'. + + * src/output.c (actions_output): Don't output braces, as they are + already handled by the scanner. + + * src/scan-gram.l (SC_CHARACTER): Set the user_token_number of + characters to themselves. + + * tests/reduce.at (Reduced Automaton): End the grammars with %% so + that the epilogue has a proper #line. + + * src/parse-gram.y: Handle precedence/associativity. + + * src/symtab.c (symbol_precedence_set): Requires the symbol to be + a terminal. + * src/scan-gram.l (SC_BRACED_CODE): Catch strings and characters. + * tests/calc.at: Do not use `%token "foo"' as it makes not sense + at all to define terminals that cannot be emitted. + + * src/scan-gram.l: Escape M4 characters. + + * src/scan-gram.l: Working properly with escapes in user + strings/characters. + + * tests/torture.at (AT_DATA_TRIANGULAR_GRAMMAR) + (AT_DATA_HORIZONTAL_GRAMMAR): Respect the `%token ID NUM STRING' + grammar. + Use more modest sizes, as for the time being the parser does not + release memory, and therefore the process swallows a huge amount + of memory. + + * tests/torture.at (AT_DATA_LOOKAHEADS_GRAMMAR): Adjust to the + stricter %token grammar. + + * src/symtab.h (associativity): Add `undef_assoc'. + (symbol_precedence_set): Do nothing when passed an undef_assoc. + * src/symtab.c (symbol_check_alias_consistence): Adjust. + + * tests/regression.at (Invalid %directive): Remove, as it is now + meaningless. + (Invalid inputs): Adjust to the new error messages. + (Token definitions): The new grammar doesn't allow too many + eccentricities. + + * src/lex.h, src/lex.c: Remove. + * src/reader.c (lastprec, skip_to_char, read_signed_integer) + (copy_character, copy_string2, copy_string, copy_identifier) + (copy_comment, parse_token_decl, parse_type_decl, parse_assoc_decl) + (parse_muscle_decl, parse_dquoted_param, parse_skel_decl) + (parse_action): Remove. + * po/POTFILES.in: Adjust. + +2002-06-11 Akim Demaille + + * src/reader.c (parse_action): Don't store directly into the + rule's action member: return the action as a string. + Don't require `rule_length' as an argument: compute it. + (grammar_current_rule_symbol_append) + (grammar_current_rule_action_append): New, eved out from + (readgram): here. + Remove `action_flag', `rulelength', unused now. + +2002-06-11 Akim Demaille + + * src/reader.c (grammar_current_rule_prec_set). + (grammar_current_rule_check): New, eved out from... + (readgram): here. + Remove `xaction', `first_rhs': useless. + * tests/input.at (Type clashes): New. + * tests/existing.at (GNU Cim Grammar): Adjust. + +2002-06-11 Akim Demaille + + * src/reader.c (grammar_midrule_action): New, Eved out from + (readgram): here. + +2002-06-11 Akim Demaille + + * src/reader.c (grammar_rule_begin, previous_rule, current_rule): + New. + (readgram): Use them as replacement of inlined code, crule and + crule1. + +2002-06-11 Akim Demaille + + * src/reader.c (grammar_end, grammar_symbol_append): New. + (readgram): Use them. + Make the use of `p' as local as possible. + +2002-06-10 Akim Demaille + + GCJ's parser requires the tokens to be defined before the prologue. + + * data/bison.simple: Output the token definition before the user's + prologue. + * tests/regression.at (Braces parsing, Duplicate string) + (Mixing %token styles): Check the output from bison. + (Early token definitions): New. + +2002-06-10 Akim Demaille + + * src/symtab.c (symbol_user_token_number_set): Don't complain when + assigning twice the same user number to a token, so that we can + use it in... + * src/lex.c (lex): here. + Also use `symbol_class_set' instead of hand written code. + * src/reader.c (parse_assoc_decl): Likewise. + +2002-06-10 Akim Demaille + + * src/symtab.c, src/symtab.c (symbol_class_set) + (symbol_user_token_number_set): New. + * src/reader.c (parse_token_decl): Use them. + Use a switch instead of ifs. + Use a single argument. + +2002-06-10 Akim Demaille + + Remove `%thong' support as it is undocumented, unused, duplicates + `%token's job, and creates useless e-mail traffic with people who + want to know what it is, why it is undocumented, unused, and + duplicates `%token's job. + + * src/reader.c (parse_thong_decl): Remove. + * src/options.c (option_table): Remove "thong". + * src/lex.h (tok_thong): Remove. + +2002-06-10 Akim Demaille + + * src/symtab.c, src/symtab.c (symbol_type_set) + (symbol_precedence_set): New. + * src/reader.c (parse_type_decl, parse_assoc_decl): Use them. + (value_components_used): Remove, unused. + +2002-06-09 Akim Demaille + + Move symbols handling code out of the reader. + + * src/reader.h, src/reader.c (errtoken, undeftoken, eoftoken) + (axiom): Move to... + * src/symtab.h, src/symtab.c: here. + + * src/gram.c (start_symbol): Remove: use startsymbol->number. + * src/reader.c (startval): Rename as... + * src/symtab.h, src/symtab.c (startsymbol): this. + * src/reader.c: Adjust. + + * src/reader.c (symbol_check_defined, symbol_make_alias) + (symbol_check_alias_consistence, symbol_pack, symbol_translation) + (token_translations_init) + Move to... + * src/symtab.c: here. + * src/reader.c (packsymbols): Move to... + * src/symtab.h, src/symtab.c (symbols_pack): here. + * src/symtab.h, src/symtab.c (symbol_make_alias): Takes SYMVAL as + argument. + +2002-06-03 Akim Demaille + + * src/muscle_tab.c (muscle_insert, muscle_find): Declarations, + then statements. + +2002-06-03 Akim Demaille + + * src/muscle_tab.c (muscle_find, muscle_insert): Don't initialize + structs with non literals. + * src/scan-skel.l: never-interactive. + * src/conflicts.c (enum conflict_resolution_e): No trailing + comma. + * src/getargs.c (usage): Split long literal strings. + Reported by Hans Aberg. + +2002-05-28 Akim Demaille + + * data/bison.c++: Use C++ ostreams. + (cdebug_): New member. + +2002-05-28 Akim Demaille + + * src/output.c (output_skeleton): Be sure to allocate enough room + for `/' _and_ for `\0' in full_skeleton. + +2002-05-28 Akim Demaille + + * data/bison.c++: Catch up with bison.simple: + 2002-05-24 Paul Hilfinger + and Paul Eggert : `error' handing. + 2002-05-26 Akim Demaille : stos_, token_number_, + and popping traces. + +2002-05-27 Paul Hilfinger + + * src/output.c (output_skeleton): Put an explicit path in front of + the skeleton file name, rather than relying on the -I directory, + to partially alleviate effects of having a skeleton file lying around + in the current directory. + +2002-05-27 Paul Hilfinger + + * src/conflicts.c (log_resolution): Correct typo: + obstack_printf should be obstack_fgrow1. + +2002-05-26 Akim Demaille + + * src/state.h (state_t): `solved_conflicts' is a new member. + * src/LR0.c (new_state): Set it to 0. + * src/conflicts.h, src/conflicts.c (print_conflicts) + (free_conflicts, solve_conflicts): Rename as... + (conflicts_print, conflicts_free, conflicts_solve): these. + Adjust callers. + * src/conflicts.c (enum conflict_resolution_e) + (solved_conflicts_obstack): New, used by... + (log_resolution): this. + Adjust to attach the conflict resolution to each state. + Complete the description with the precedence/associativity + information. + (resolve_sr_conflict): Adjust. + * src/print.c (print_state): Output its solved_conflicts. + * tests/conflicts.at (Unresolved SR Conflicts) + (Solved SR Conflicts): Exercise --report=all. + +2002-05-26 Akim Demaille + + * src/LR0.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, src/state.h, src/symtab.h + (token_number_t, item_number_as_token_number) + (token_number_as_item_number, muscle_insert_token_number_table): + Rename as... + (symbol_number_t, item_number_as_symbol_number) + (symbol_number_as_item_number, muscle_insert_symbol_number_table): + these, since it is more appropriate. + 2002-05-26 Akim Demaille * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional @@ -32,7 +3354,7 @@ 2002-05-24 Paul Hilfinger and Paul Eggert - + * data/bison.simple (yyparse): Correct error handling to conform to POSIX and yacc. Specifically, after syntax error is discovered, do not reduce further before shifting the error token. @@ -45,15 +3367,15 @@ * data/bison.simple (yyr1): Don't use yy_token_number_type as element type; it isn't always big enough, since it doesn't necessarily include non-terminals. - (yytranslate): Expand definition of yy_token_number_type, so that + (yytranslate): Expand definition of yy_token_number_type, so that the latter can be removed. (yy_token_number_type): Remove, only one use. * data/bison.c++ (r1_): Parallel change to yyr1 in bison.simple--- don't use TokenNumberType as element type. - + * tests/regression.at: Modify expected output to agree with change to yyr1 and yytranslate. - + 2002-05-13 Florian Krohm * src/reader.c (parse_action): Use copy_character instead of @@ -6578,19 +9900,19 @@ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. -This file is part of GNU Autoconf. +This file is part of GNU Bison. -GNU Autoconf is free software; you can redistribute it and/or modify +GNU Bison is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. -GNU Autoconf is distributed in the hope that it will be useful, +GNU Bison is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with autoconf; see the file COPYING. If not, write to +along with GNU Bison; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.