X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/51b4a04cd02d4b1b2aea65ae42a65d59bc51ab20..fe22d5d20ff5a88a3a0dba28a11623b235a422ab:/ChangeLog?ds=sidebyside diff --git a/ChangeLog b/ChangeLog index a211e961..422caf39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,551 @@ -2002-11-04 Paul Hilfinger +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. - * src/tables.c (matching_state): Don't allow states to match if + * 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. @@ -194,7 +735,7 @@ * 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.