X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/193eb6b7efb6323b1e867df69a9122320396fa19..d02b25f99b7d3d4f30538381eef43d8134874681:/ChangeLog diff --git a/ChangeLog b/ChangeLog index d3ff5695..a406c7d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,1624 @@ +2003-02-20 Akim Demaille + + * tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Define + AT_YACC_IF. + Redefine AT_YYERROR_SEES_LOC_IF using it. + (_AT_DATA_CALC_Y): Don't declare yyerror when lalr1.cc, as it is + not defined. + Don't use the location in yy::Parser::error_ and + yy::Parser::print_ when not %locations. + Activate more lalr1.cc tests. + +2003-02-19 Akim Demaille + + * data/lalr1.cc: When displaying a line number, be sure to make it + an int. + +2003-02-19 Akim Demaille + + * data/lalr1.cc (b4_stack_depth_init, yy::Parser::initdepth_): + Remove, useless. + (YYABORT, YYACCEPT, YYERROR): New. + * tests/calc.at: Renable the lalr1.cc test. + +2003-02-19 Akim Demaille + + * tests/calc.at (AT_CHECK_CALC): Check different scenarios of + error recovery, mixing with/without pops and discarding of the + lookahead. + Exercise YYERROR. + Disable the lalr1.cc tests as currently it doesn't support YYERROR. + +2003-02-17 Paul Eggert + + * tests/atlocal.in (LDFLAGS, LIBS): New vars. + * tests/testsuite.at (AT_COMPILE): Use them. + This fixes the testsuite problem reported by Robert Lentz in + . + +2003-02-12 Paul Eggert + + * data/yacc.c (yyerrlab) [YYERROR_VERBOSE]: + Avoid subscript error in yycheck. Bug reported by Andrew Suffield in + . + * data/glr.c (yyreportSyntaxError) [YYERROR_VERBOSE]: Likewise. + Check for malloc failure, for consistency with yacc.c. + (yytname_size): Remove, for consistency with yacc.c. + + The bug still remains in data/lalr1.cc, as I didn't have time + to fix it there. + +2003-02-06 Akim Demaille + + * configure.ac (GXX): Rename as... + (CXX): this, to keep the original Autoconf semantics. + Require 2.57. + * data/lalr1.cc: Fix b4_copyright invocations. + If YYDEBUG is not defined, don't depend upon name_ being defined. + (location.hh): Include string and iostream. + (Position::filename): New member. + (Position::Position ()): New. + (operator<< (Position)): New. + (operator- (Position, int)): New. + (Location::first, Location::last): Rename as... + (Location::begin, Location::end): these, to mock the conventional + iterator names. + (operator<< (Location)): New. + * tests/atlocal.in (CXX): New. + * tests/testsuite.at (AT_COMPILE_CXX): New. + * tests/calc.at (_AT_DATA_CALC_Y): Adjust yyerror to report the + locations in a more synthetic way. + (AT_CHECK_PUSHDEFS): AT_YYERROR_SEES_LOC_IF is positive if + lalr1.cc is used. + Adjust the C locations to match those from Emacs: first column is + column 0. + Change all the expected results. + Conform to the GCS: simplify the locations when applicable. + (LOC, VAL, YYLLOC_FORMAL, YYLLOC_ARG, USE_YYLLOC, LEX_FORMALS) + (LEX_ARGS, USE_LEX_ARGS, LEX_PRE_FORMALS, LEX_PRE_ARGS): Replace + these CPP macros with the m4 macros new defined by... + (AT_CHECK_PUSHDEFS): this, i.e.: + (AT_LALR1_CC_IF, AT_PURE_LEX_IF, AT_LOC, AT_VAL, AT_LEX_FORMALS) + (AT_LEX_ARGS, AT_USE_LEX_ARGS, AT_LEX_PRE_FORMALS, AT_LEX_PRE_ARGS) + New macros. + (AT_CHECK_POPDEFS): Undefine them. + (AT_CHECK_CALC_LALR1_CC): New. + Use it for the first lalr1.cc test. + +2003-02-04 Akim Demaille + + * data/lalr1.cc (YYLLOC_DEFAULT): Fix its definition: be based on + Location as is defined. + +2003-02-04 Akim Demaille + + * data/lalr1.cc: If YYDEBUG is not defined, don't depend upon + name_ being defined. + +2003-02-03 Paul Eggert + + * src/gram.h (start_symbol): Remove unused decl. + + Use more-consistent naming conventions for local vars. + + * src/derives.c (derives_compute): Change type of local var from + int to rule_number. + * src/gram.c (grammar_rules_partial_print): Likewise. + * src/print.c (print_core): Likewise. + * src/reduce.c (reduce_grammar_tables): Likewise. + + * src/gram.c (grammar_dump): Change name of item_number * + local var from r to rp. + * src/nullable.c (nullable_compute): Likewise. + + * src/gram.h (ISTOKEN, ISVAR): Use i, not s, for int var. + + * src/gram.h (symbol_number_as_item_number): Use sym, not s, + for symbol or symbol_number var. + * src/reader.c (grammar_start_symbol_set): Likewise. + * src/reader.h (grammar_start_symbol_set, grammar_symbol_append): + Likewise. + * src/state.c (transitions_to): Likewise. + * src/state.h: Likewise. + * src/tables.c (symbol_number_to_vector_number): Likewise. + + * src/muscle_tab.h (MUSCLE_OBSTACK_SGROW): Use p, not s, for + char * var. + + * src/parse-gram.y (lloc_default): Use loc, not r, for YYLTYPE + var. + + * src/scan-gram.l (no_cr_read): Use bytes_read, not s, for size + var. + + * src/system.h (xstrndup, strchr, strspn, strnlen, memchr, memrchr): + Use str, not s, for char * var. Use ch, not c, for character var. + Use size for size var. + + * src/uniqstr.c (uniqstr_new, uniqstr_assert): Use str, not s, for + char * var. + (uniqstr_print, uniqst_print_processor): Use ustr, not s, for + uniqstr var. + * src/uniqstr.h: Likewise. + + * src/vcg.c (get_color_str, get_textmode_str, get_shape_str, + get_layoutalgorithm_str, get_decision_str, get_orientation_str, + get_node_alignment_str, get_arrow_mode_str, get_crossing_type_str, + get_view_str, get_linestyle_str, get_arrowstyle_str): Rename + param to have same name as that of enum, so that we don't use + "s" to stand for a non-state. + +2003-02-02 Akim Demaille + + * src/scan-skel.l: Scan more than one inert character per yylex + invocation. + +2003-02-01 Paul Eggert + + Version 1.875a. + + * po/LINGUAS: Add ms. + +2003-01-30 Akim Demaille + + * doc/Makefile.am (CLEANFILES): Add bison.fns for distcheck. + +2003-01-29 Paul Hilfinger + + * tests/cxx-type.at: Correct apparent typo in Bison input: $$ instead + of $1. + + Changes in response to error report by S. Eken: GLR mode does not + handle negative $ indices or $ indices in embedded rules correctly. + See . + + * data/glr.c (b4_rhs_value): Change to use YYFILL macro. + (b4_rhs_location): Ditto. + (yyfill): New function to copy from stack tree into array + incrementally. + (yyuserAction): Modify to allow incremental move of semantic values + to rhs array when in GLR mode. + Define YYFILL to use in user-defined actions to fill semantic array + as needed. + Remove dummy use of yystack, as there is now a guaranteed use. + (yydoAction): Modify to allow incremental move of semantic values + to rhs array when in GLR mode. + (yyresolveAction): Ditto. + (yyglrShiftDefer): Update comment. + (yyresolveStates): Use X == NULL for pointers, not !X. + (yyglrReduce): Ditto. + (yydoAction): Ditto + + * tests/glr-regr1.at: Rename to ... + * tests/glr-regression.at: Add new regression test for the problems + described above (adapted from S. Eken). + Update copyright notice. + * tests/testsuite.at: Rename glr-regr1.at to glr-regression.at. + * tests/Makefile.am: Ditto. + +2003-01-28 Paul Eggert + + * data/lalr1.cc: Do not use @output_header_name@ unless + b4_defines_flag is set. This fixes two bugs reported by + Tim Van Holder in + + and . + +2003-01-21 Paul Eggert + + * data/yacc.c (YYERROR): Move code from yyerrlab1 to here, so that + we don't need to worry about yyerrlab1 being reported as an + "unused label" by non-GCC C compilers. The downside is that if + locations are used then a couple of statements are duplicated each + time YYERROR is invoked, but the upside is that the warnings + should vanish. + (yyerrlab1): Move code to YERROR. + (yyerrlab2): Remove. Change uses back to yyerrlab1. + This reverts some of the 2002-12-27 change. + +2003-01-17 Paul Eggert + + * src/output.c (symbol_printers_output): Fix typo that led + to core dump. Problem reported by Antonio Rus in + . + +2003-01-13 Akim Demaille , + Quoc Peyrot , + Robert Anisko + + * data/lalr1.cc (parse::yyerrlab1): When popping the stack, stop + when the stacks contain one element, as the loop would otherwise + free the last state, and then use the top state (the one we just + popped). This means that the initial elements will not be freed + explicitly, as is the case in yacc.c; it is not a problem, as + these elements have fake values. + +2003-01-11 Paul Eggert + + * NEWS: %expect-violations are now just warnings, reverting + to Bison 1.30 and 1.75 behavior. This fixes the GCC 3.2 + bootstrapping problem reported by Matthias Klose; see + . + * src/conflicts.c (conflicts_print): Likewise. + * tests/conflicts.at (%expect not enough, %expect too much, + %expect with reduce conflicts): Likewise. + * doc/bison.texinfo (Expect Decl): Document this. Also mention + that the warning is enabled if the number of conflicts changes + (not necessarily increases). + + * src/getargs.c (version): Update copyright year. + +2003-01-09 Akim Demaille + + * src/Makefile.am, lib/Makefile.am: Use $(VAR) instead of @VAR@. + +2003-01-08 Paul Eggert + + * Makefile.maint (WGETFLAGS): + New macro, containing "-C off" to disable proxy caches. + All uses of $(WGET) changed to $(WGET) $(WGETFLAGS). + (rel-check): Use $(WGET) instead of wget. + +2003-01-06 Paul Eggert + + * doc/bison.texinfo (Generalized LR Parsing): Add a reference to + the GLR paper of Scott, Johnstone and Hussain. + +2003-01-04 Paul Eggert + + * configure.ac (AC_ARG_ENABLE): Add --disable-yacc. + (YACC_SCRIPT, YACC_LIBRARY): New vars to AC_SUBST. + * lib/Makefile.am (lib_LIBRARIES): liby.a -> @YACC_LIBRARY@. + (EXTRA_LIBRARIES): New var, for liby.a. + * src/Makefile.am (bin_SCRIPTS): yacc -> @YACC_SCRIPT@. + (EXTRA_SCRIPTS): New var, for yacc. + + * data/yacc.c (yyerrlab1): Omit attribute if __cplusplus is defined, + since GNU C++ (as of 3.2.1) does not allow attributes on labels. + Problem reported by Nelson H. F. Beebe. + +2003-01-03 Paul Eggert + + * lib/obstack.h (__INT_TO_PTR) [__STDC__]: Cast result to + (void *) to avoid diagnostic with native c89 on SGI IRIX 6.5 + when compiling Bison 1.875's `bitset bset = obstack_alloc + (bobstack, bytes);'. Problem reported by Nelson H. F. Beebe. + + * src/scan-skel.l (QPUTS): Omit redundant `;' from macro definition. + ([^@\n]): Renamed from [^@\n]+ so that the token buffer does not + grow to a huge size with typical invocation. + + * lib/hash.c (_Bool, bool, false, true, __bool_true_false_are_defined): + Use the pattern recommended by Autoconf 2.57, except also protect + against double-definition. + * src/system.h: Likewise. + Portability issues reported by Nelson H. F. Beebe. + + * data/glr.c (yybool): Renamed from bool, to avoid collisions in C. + All uses changed. Provide a definition in both C and C++. + (yytrue, yyfalse): Define even if defined (__cplusplus). + + * lib/bitset_stats.c (bitset_stats_list): Remove unused var. + Reported by Nelson H. F. Beebe. + + * src/scan-skel.l ("@oline@"): Output lineno+1, not lineno. + +2003-01-02 Paul Eggert + + * data/yacc.c (yyerrlab1): Append `;' after attribute, to + pacify the buggy "smart preprocessor" in MacOS 10.2.3. + Bug reported by Nelson H. F. Beebe. + +2003-01-01 Paul Eggert + + * Version 1.875. + +2002-12-30 Paul Eggert + + * src/scan-gram.l (","): + Moved here from... + (","): Here. This causes stray "," to be treated + more uniformly. + + * src/scan-gram.l ("}"): Output ";" before the + last brace in braced code when not in Yacc mode, for compatibility + with Bison 1.35. This resurrects the 2001-12-15 patch to + src/reader.c. + + * src/reader.h (YYDECL): Use YYSTYPE, not its deprecated alias + yystype. This follows up the 2002-12-24 YYSTYPE bug fix. + +2002-12-28 Paul Eggert + + * src/symtab.c (symbol_make_alias): Set type of SYMVAL to be + that of SYM's type. This fixes Debian bug 168069, reported by + Thomas Olsson. + +2002-12-28 Paul Eggert + + Version 1.75f. + + Switch back to the Yacc style of conflict reports, undoing some + of the 2002-07-30 change. + * doc/bison.texinfo (Understanding): Use Yacc style for + conflict reports. Also, use new way of locating rules. + * src/conflicts.c (conflict_report): + Renamed from conflict_report_yacc, removing the old + 'conflict_report'. Translate the entire conflict report at once, + so that we don't assume that "," has the same interpretation in + all languages. + (conflicts_output): Use Yacc-style conflict report for each state, + instead of our more-complicated style. + (conflicts_print): Use Yacc-style conflict report, except print + the input file name when not emulating Yacc. + * tests/conflicts.at (Unresolved SR Conflicts, Defaulted + Conflicted Reduction, %expect not enough, %expect too much, + %expect with reduce conflicts): Switch to Yacc-style conflict reports. + * tests/existing.at (GNU Cim Grammar): Likewise. + * tests/glr-regr1.at (Badly Collapsed GLR States): Likewise. + + * src/complain.c (warn_at, warn, complain_at, complain, fatal_at, + fatal): Don't invoke fflush; it's not needed and it might even be + harmful for stdout, as stdout might not be open. + * src/reduce.c (reduce_print): Likewise. + +2002-12-27 Paul Eggert + + Fix a bug where error locations were not being recorded correctly. + This problem was originally reported by Paul Hilfinger in + . + + * data/yacc.c (yyparse): New local var yylerrsp, to record the + top of the location stack's error locations. + (yyerrlab): Set it. When discarding a token, push its location + onto yylerrsp so that we don't lose track of the error's end. + (yyerrlab1): Now is only the target of YYERROR, so that we can + properly record the location of the action that failed. For GCC + 2.93 and later, insert an __attribute__ ((__unused__)) to avoid + GCC warning about yyerrlab1 being unused if YYERROR is unused. + (yyerrlab2): New label, which yyerrlab now falls through to. + Compute the error's location by applying YYLLOC_DEFAULT to + the locations of all the symbols that went into the error. + * doc/bison.texinfo (Location Default Action): Mention that + YYLLOC_DEFAULT is also invoked for syntax errors. + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): + Error locations include the locations of all the tokens that were + discarded, not just the last token. + +2002-12-26 Paul Eggert + + * src/files.c: Include quote.h. + (compute_output_file_names): Warn if we detect conflicting + outputs to the same file. This should catch the misunderstanding + exemplified by Debian Bug 165349, reported by Bruce Stephens.. + + * src/conflicts.c (conflicts_print): If the user specifies + "%expect N", report an error if there are any reduce/reduce + conflicts. This is what the manual says should happen. + This fixes Debian bug 130890, reported by Anthony DeRobertis. + * tests/conflicts.at (%expect with reduce conflicts): New test. + + Don't use m4_include on relative file names, as it doesn't work as + desired if there happens to be a file with that name under ".". + + * m4sugar/version.m4: Remove; it was included but it wasn't used. + * data/Makefile.am (dist_m4sugar_DATA): Remove m4sugar/version.m4. + * data/m4sugar/m4sugar.m4: Don't include m4sugar/version.m4. + * data/glr.c, data/lalr1.cc, data/yacc.c: Don't include c.m4. + * src/output.c (output_skeleton): Use full path names when + specifying a file to include; don't rely on include path, as + it's unreliable when the working file contains a file with + that name. + +2002-12-25 Paul Eggert + + Remove obsolete references to bison.simple and bison.hairy. + Problem mentioned by Aubin Mahe in + . + * data/glr.c: Comment fix. + * doc/bison.1: Remove references. Also, mention "yacc". + + * src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL + with -g option. + + * src/parse-gram.y (declaration): Use enum "report_states" rather + than its numeric value 1. + + * src/scan-skel.l ("@output ".*\n): Close any old yyout before + opening a new one. This fixes Debian bug 165349, reported by + Bruce Stephens. + +2002-12-24 Paul Eggert + + Version 1.75e. + + * Makefile.maint (cvs-update): Don't assume that the shell + supports $(...), as Solaris sh doesn't. + + * src/parse-gram.y (lloc_default): Remove test for empty + nonterminals at the end, since it didn't change the result. + +2002-12-24 Paul Eggert + + If the user does not define YYSTYPE as a macro, Bison now declares it + using typedef instead of defining it as a macro. POSIX requires this. + For consistency, YYLTYPE is also declared instead of defined. + + %union directives can now have a tag before the `{', e.g., the + directive `%union foo {...}' now generates the C code + `typedef union foo { ... } YYSTYPE;'; this is for Yacc compatibility. + The default union tag is `YYSTYPE', for compatibility with Solaris 9 + Yacc. For consistency, YYLTYPE's struct tag is now `YYLTYPE' + instead of `yyltype'. + + `yystype' and `yyltype' are now obsolescent macros instead of being + typedefs or tags; they are no longer documented and will be + withdrawn in a future release. + + * data/glr.c (b4_location_type): Remove. + (YYSTYPE): Renamed from yystype. + (YYSTYPE_IS_DECLARED): New macro, used to prevent double-typedef. + (struct YYLTYPE): Renamed from struct yyltype. + (YYLTYPE): Renamed from yyltype. + (yyltype, yystype): New (and obsolescent) macros, + for backward compatibility. + * data/yacc.c: Likewise. + + * data/yacc.c (YYSTYPE): Declare as union YYSTYPE if the user + does not specify a union tag. This is for compatibility with + Solaris 9 yacc. + + * src/parse-gram.y (add_param): 2nd arg is now char * not char + const *, since it is now modified by stripping surrounding { }. + (current_braced_code): Remove. + (PERCENT_DESTRUCTOR, PERCENT_PRINTER, PERCENT_UNION, + PERCENT_LEX_PARAM, PERCENT_PARSE_PARAM): Change names to include + trailing " {...}". Now of type . + (grammar_declaration): Adjust to bundled tokens. + (code_content): Remove; stripping is now done by add_param. + (print_token_value): Print contents of bundled tokens. + (token_name): New function. + + * src/reader.h (braced_code, current_braced_code): Remove. + (token_name): New decl. + + * src/scan-gram.l (handle_dollar, handle_at): Now takes int + token_type, not braced_code code_kind. All uses changed. + (SC_PRE_CODE): New state, for scanning after a keyword that + has (or usually has) an immediately-following braced code. + (token_type): New local var, to keep track of which token type + to return when scanning braced code. + ("%destructor", "%lex-param", + "%parse-param", "%printer", + "%union"): Set token type and BEGIN SC_PRE_CODE + instead of returning a token type immediately. + ("{"): Set token type. + ("}"): Use it. + (handle_action_dollar, handle_action_at): Now returns bool + indicating success. Fail if ! current_rule; this prevents a core dump. + (handle_symbol_code_dollar, handle_symbol_code_at): + Remove; merge body into caller. + (handle_dollar, handle_at): Complain in invalid contexts. + + * NEWS, doc/bison.texinfo: Document the above. + * NEWS: Fix years and program names in copyright notice. + +2002-12-17 Paul Eggert + + * NEWS, doc/bison.texinfo (Parser Function, Pure Calling, Error + Reporting, Table of Symbols): Omit mentions of %lex-param and + %parse-param from the documentation for now. + +2002-12-15 Paul Eggert + + Undo most of the 2002-11-12 yychar -> yytoken patch, as it broke + GCC 3.2.1 (which depends on yychar == YYEMPTY when there is no + lookahead symbol, and which sets yychar in parser actions) and it + disagreed with the Bison documentation. Bug + reported by Andrew Walrond. + + * data/yacc.c (YYTRANSLATE): Don't check for negative argument, + as the caller now does that. + (yyclearin, YYBACKUP, yyparse): Use yychar, not yytoken. + (YYEMPTY): Parenthesize right hand side, since others use it. + (yyparse): Don't assume that our generated code is the only code + that sets yychar. + +2002-12-13 Paul Eggert + + Version 1.75d. + + POSIX requires a "yacc" command. + * src/Makefile.am (bin_SCRIPTS): New macro, for yacc. + (MOSTLYCLEANFILES): Add yacc. + (yacc): New rule. + * doc/bison.texinfo (Invocation, Bison Options): Mention yacc + as an alias for bison y. + + * po/LINGUAS: Add da. + + * src/getargs.c (__GNU_LIBRARY__) [lint]: Define to work around + problem with latest . + (HACK_FOR___GNU_LIBRARY___PROTOTYPE): New macro. + + * doc/fdl.texi: Upgrade to 1.2. + * lib/alloca.c, lib/error.c, lib/getopt.c, lib/getopt.h + lib/getopt1.c, lib/gettext.h, lib/memrchr.c, lib/obstack.c, + lib/obstack.h, lib/strnlen.c, lib/unlocked-io.h: Sync with + gnulib. + * config/install-sh: Sync with autotools. + + Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in + . + * data/yacc.c (YYLTYPE, struct yyltype): Do not define unless + locations are requested. + (union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless + locations are requested. + +2002-12-12 Paul Eggert + + Remove unportable casts and storage allocation tricks. + While we're at it, remove almost all casts, since they + usually aren't needed and are a sign of trouble. + + * configure.ac (AC_CHECK_TYPES): Check for uintptr_t. + + * src/derives.c (derives_compute): Do not subtract NTOKENS from + the pointer DSET returned by malloc; this isn't portable. + Instead, always use DSET[i - NTOKENS] rather than DSET[i]. + Similarly for DERIVES. + * src/lalr.c (set_goto_map): Likewise, for GOTO_MAP and TEMP_MAP. + * src/nullable.c (nullable_compute): Likewise, for RSETS and NULLABLE. + * src/reduce.c (reduce_grammar_tables): Likewise, for nontermmap + + * src/derives.c (derives_compute): Do not bother invoking + int_of_rule_number, since rule numbers are integers. + + * src/files.c (concat2, tr, compute_base_name): Use xmalloc (N) + rather than XMALLOC (char, N). + + * src/files.c (filename_split): Rewrite to avoid cast. + + * src/gram.h (symbol_number_as_item_number, + item_number_as_symbol_number, rule_number_as_item_number, + item_number_as_rule_number): + Now inline functions rather than macros, to avoid casts. + * src/state.h (state_number_as_int): Likewise. + * src/tables.c (state_number_to_vector_number, + symbol_number_to_vector_number): Likewise. + + * src/gram.h (int_of_rule_number): Remove; no longer used. + + * src/lalr.c (add_lookback_edge): Use malloc rather than calloc, + since the resulting storage is always stored into. + + * src/main.c (alloca) [C_ALLOCA]: Add decl here, the only place + where it's needed. + + * src/muscle_tab.c (muscle_m4_output): + Now inline. Return bool, not int. + * src/state.c (state_compare): Likewise. + * src/symtab.c (symbol_check_defined, + symbol_check_alias_consistency, symbol_pack, symbol_translation, + hash_compare_symbol, hash_symbol): + Likewise. + * src/uniqstr.c (uniqstr_print): Likewise. + * src/muscle_tab.c (muscle_m4_output_processor): + New function, to avoid casts. + * src/state.c (state_comparator, stage_hasher): Likewise. + * src/symtab.c (symbol_check_defined_processor, + symbol_check_alias_consistency_processor, symbol_pack_processor, + symbol_translation_processor, hash_symbol_comparator, + hash_symbol_hasher): Likewise. + * src/uniqstr.c (uniqstr_print_processor): Likewise. + * src/muscle_tab.c (muscles_m4_output): + Use new functions instead of casting old functions unportably. + * src/state.c (state_hash_new): Likewise. + * src/symtab.c (symbols_new, symbols_do, symbols_check_defined, + symbols_token_translations_init): + Likewise. + * src/uniqstr.c (uniqstrs_new, hash_initialize, uniqstrs_do): Likewise. + + * src/output.c (GENERATE_MUSCLE_INSERT_TABLE): Use long local + var instead of casting to long, to avoid casts. + (prepare_states): Use MALLOC rather than alloca, so that we don't + have to worry about alloca. + * src/state.c (state_hash_lookup): Likewise. + + * src/scan-gram.l ("'"): Use unsigned char + local var instead of casting to unsigned char, to avoid casts. + + * src/state.c (TRANSITIONS_ALLOC, ERRS_ALLOC, REDUCTIONS_ALLOC, + STATE_ALLOC): Remove. + (transitions_new, errs_new, reductions_new, state_new): Use malloc + rather than calloc, and use offsetof to avoid allocating slightly + too much storage. + (state_new): Initialize all members. + + * src/state.c (state_hash): Use unsigned accumulator, not signed. + + * src/symtab.c (symbol_free): Remove; unused. + (symbol_get): Remove cast in lhs of assignment. + (symbols_do): Now static. Accept generic arguments, not + hashing-related ones. + + * src/symtab.h: (NUMBER_UNDEFINED): Remove unnecessary cast. + (symbol_processor): Remove. + (symbols_do): Remove decl; now static. + + * src/system.h (alloca): Remove; decl no longer needed. + (): Include, for offsetof. + (, ): Include if available. + (uintptr_t): New type, if system lacks it. + (CALLOC, MALLOC, REALLOC): New macros. + All uses of XCALLOC, XMALLOC, and XREALLOC changed to use these + new macros. + + * src/tables.c (table_size): Now int, to pacify GCC. + (table_grow, table_ninf_remap): Use signed table size. + (save_row): Don't bother initializing locals when not needed. + (default_goto, goto_actions, pack_vector): Remove unnecessary casts. + * src/uniqstr.c (hash_compare_uniqstr): Likewise. + + * src/vcg.h: Correct misspellings. + + * src/vcg_defaults.h (G_CMAX): Now INT_MAX. + + + * src/getargs.c (getargs): Don't assume EOF == -1. + +2002-12-09 Paul Eggert + + Change identifier spellings to avoid collisions with names + that are reserved by POSIX. + + Don't use names ending in _t, since POSIX reserves them. + For consistency, remove _e and _s endings -- they're weren't + needed to remove ambiguity. All uses changed. + * src/uniqstr.h (uniqstr): Renamed from uniqstr_t, which in + turn was just renamed from struniq_t. + * src/uniqstr.c (uniqstr_processor): Renamed from struniq_processor, + which in turn was just renamed from struniq_processor_t. + (hash_compare_uniqstr): Renamed from hash_compare_struniq, which + in turn was renamed from hash_compare_struniq_t. + * src/LR0.c (struct state_list): Renamed from struct state_list_s. + (state_list): Renamed from state_list_t. + * src/assoc.h (assoc): Renamed from assoc_t. + * src/conflicts.c (enum conflict_resolution): Renamed from + enum conflict_resolution_e. + * src/derives.c (struct rule_list): Renamed from struct rule_list_s. + (rule_list): Renamed from rule_list_t. + * src/getargs.h (enum trace): Renamed from enum trace_e. + (enum report): Renamed from enum report_e. + * src/gram.h (item_number): Renamed from item_number_t. + (rule_number): Renamed from rule_number_t. + (struct rule_s): Remove the "rule_s" part; not used. + (rule): Renamed from rule_t. + (rule_filter): Renamed from rule_filter_t. + * src/lalr.c (struct goto_list): Renamed from struct goto_list_s. + (goto_list): Renamed from goto_list_t. + * src/lalr.h (goto_number): Renamed from goto_number_t. + * src/location.h (location): Renamed from location_t. + * src/muscle_tab.c (muscle_entry): Renamed from muscle_entry_t, + and moved here from: + * src/muscle_tab.h (muscle_entry_t): here. + * src/nullable.c (struct rule_list): Renamed from struct rule_list_s. + (rule_list): Renamed from rule_list_t. + * src/print_graph.c (static_graph): Renamed from graph. + * src/reader.h (braced_code): Renamed from braced_code_t. + Remove brace_code_e tag. + * src/relation.h (relation_node): Renamed from relation_node_t. + (relation_nodes): Renamed from relation_nodes_t. + (relation): Renamed from relation_t. + * src/state.h (state_number): Renamed from state_number_t. + (struct state): Renamed from struct state_s. + (state): Renamed from state_t. + (transitions): Renamed from transitions_t. Unused (and + misspelled) transtion_s tag removed. + (errs): Renamed from errs_t. Unused errs_s tag removed. + (reductions): Renamed from reductions_t. Unused tag + reductions_s removed. + * src/symlist.h (symbol_list): Renamed from symbol_list_t. + (struct symbol_list): Renamed from struct symbol_list_s. + * src/symtab.h (symbol_number): Renamed from symbol_number_t. + (struct symbol): Renamed from struct symbol_s. + (symbol): Renamed from symbol_t. + * src/tables.c (vector_number): Renamed from vector_number_t. + (action_number): Renamed from action_t. + * src/tables.h (base_number): Renamed from base_t. + * src/vcg.h (enum color): Renamed from enum color_e. + (enum textmode): Renamed from enum textmode_e. + (enum shape): Renamed from enum shape_e. + (struct colorentry): Renamed from struct colorentry_s. + (struct classname): Renamed from struct classname_s. + (struct infoname): Renamed from struct infoname_s. + (enum layoutalgorithm): Renamed from enum layoutalgorithm_e. + (enum decision): Renamed from enum decision_e. + (enum orientation): Renamed from enum orientation_e. + (enum alignment): Renamed from enum alignment_e. + (enum arrow_mode): Renamed from enum arrow_mode_e. + (enum crossing_type): Renamed from enum crossing_type_e. + (enum view): Renamed from enum view_e. + (struct node): Renamed from struct node_s. + (node): Renamed from node_t. + (enum linestyle): Renamed from enum linestyle_e. + (enum arrowstyle): Renamed from enum arrowstyle_e. + (struct edge): Renamed from struct edge. + (edge): Renamed from edge_t. + (struct graph): Renamed from struct graph_s. + (graph): Renamed from graph_t. + * tests/calc.at (_AT_DATA_CALC_Y, Simple LALR Calculator): + Rename value_t -> value. + * tests/input.at (Torturing the Scanner): Rename value_t -> value, + value_t_as_yystype -> value_as_yystype. + + Don't include in the mainstream code, since it + reserves E[A-Z0-9]* and we want to use symbols like 'EQUALS'. + * lib/get-errno.c, lib/get-errno.h: New files. + * lib/Makefile.am (libbison_a_SOURCES): Add get-errno.h, + get-errno.c. + * src/files.c (xfopen, xfclose): Use get_errno instead of errno. + * src/output.c (output_skeleton): Likewise. + * src/scan-gram.l ({int}): Use set_errno and get_errno + instead of errno. + (\\x[0-9abcdefABCDEF]+): + Likewise. + (handle_action_dollar, handle_action_at): Likewise. + * src/system.h: Do not include . + (TAB_EXT): Renamed from EXT_TAB. + (OUTPUT_EXT): Renamed from EXT_OUTPUT. + + Avoid str[a-z]*, since reserves that name space. + Change all instances of "struniq" in names to "uniqstr", and + likewise for "STRUNIQ" and "UNIQSTR". + * src/uniqstr.c: Renamed from src/struniq.c. + * src/uniqstr.h: Renamed from src/struniq.h. + * src/Makefile.am (bison_SOURCES): Adjust to these renamings. + * src/files.c (strsuffix): Remove; unused. + (concat2): Renamed from stringappend. Now static. + * src/files.h (strsuffix, stringappend): Remove; unused. + * src/parse-gram.y (): Renamed from . + (): Renamed from . + * src/scan-gram.l (obstack_for_string): Renamed from string_obstack. + * src/vcg.h (struct node_s.expand): Renamed from struct node_s.stretch. + (struct graph_s.expand): Renamed from struct graph_s.stretch. + * src/vcg_defaults.h (G_EXPAND): Renamed from G_STRETCH. + (G_LONG_STRAIGHT_PHASE): Renamed from G_STRAIGHT_PHASE. + (N_EXPAND): Renamed from N_STRETCH. + + Avoid *_MAX and *_MIN, since reserves that name space. + * data/yacc.c (YYSTACK_GAP_MAXIMUM): Renamed from YYSTACK_GAP_MAX. + * src/gram.h (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX): + Remove; unused. + * src/lalr.h (GOTO_NUMBER_MAXIMUM): Renamed from GOTO_NUMBER_MAX. + * src/state.h (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX. + * src/symtab.h (SYMBOL_NUMBER_MAXIMUM): Renamed from SYMBOL_NUMBER_MAX. + * src/tables.c (VECTOR_NUMBER_MAX, VECTOR_NUMBER_MIN): Remove; unused. + (BASE_MAXIMUM): Renamed from BASE_MAX. + (BASE_MINIMUM): Renamed from BASE_MIN. + (ACTION_MAX): Remove; unused. + (ACTION_NUMBER_MINIMUM): Renamed from ACTION_MIN. + Unnecessary casts removed from above defines. + + + Fix misspelling in names. + * src/vcg.h (enum_alignment_e): Renamed from enum_alignement_e. + * src/vcg_defaults.h (G_NODE_ALIGNMENT): Renamed from + G_NODE_ALIGNEMENT. + + + * lib/timevar.c (timevar_report): Renamed from time_report, + for consistency with other names. + * lib/timevar.h (timevar_report): New decl. + * src/system.h (time_report): Remove; decl is now in lib/timevar.h. + + + Sort include-file uses. + + Reorder all include files under src to be in the order "system.h". + then the ../lib include files in angle brackets (alphabetized), + then the . include files in double-quotes (alphabetized). Fix + dependency breakages encountered in this process, as follows: + * src/closure.h, src/derives.h, src/state.h: Include "gram.h". + * src/complain.c: Don't include stdlib.h, string.h _LIBC stuff. + * src/state.h: Include "symtab.h". + +2002-12-08 Paul Eggert + + * data/glr.c, data/lalr1.cc, data/yacc.c: Do not use __file__, + since this causes problems when __file__ contains character + sequences like "@" that are treated specially by src/scan-skel.l. + Instead, just use the file's basename. This fixes the bug + reported by Martin Mokrejs in + . + +2002-12-06 Paul Eggert + + Add support for rules that do not have trailing semicolons, as + POSIX requires. Improve the quality of locations in Bison + diagnostics. + + * src/location.c: Include . + (empty_location): Now const. + (location_print): New function. Follow the recommendation of the + GNU Coding Standards for locations that span file boundaries. + * src/location.h: Do not include ; no longer needed. + (boundary): New type. + (location_t): Use it. This allows locations to span file boundaries. + All member uses changed: file -> start.file or end.file (as needed), + first_line -> start.line, first_column -> start.column, + last_line -> end.line, last_column -> end.column. + (equal_boundaries): New function. + (LOCATION_RESET, LOCATION_STEP): Remove. + (LOCATION_PRINT): Remove. All callers changed to use location_print. + (empty_location): Now const. + (location_print): New decl. + * src/parse-gram.y (lloc_default): New function, which handles + empty locations more accurately. + (YYLLOC_DEFAULT): Use it. + (%token COLON): Remove. + (%token ID_COLON): New token. + (rules): Use it. + (declarations, rules): Remove trailing semicolon. + (declaration, rules_or_grammar_declaration): + Allow empty (";") declaration. + (symbol_def): Remove empty actions; no longer needed. + (rules_or_grammar_declaration): Remove trailing semicolon. + (semi_colon.opt): Remove. + * src/reader.h: Include location.h. + (scanner_cursor): New decl. + * src/reduce.c (nonterminals_reduce): Use warn_at rather than + rolling our own. + * src/scan-gram.l (YY_USER_INIT): Initialize scanner_cursor instead + of *loc. + (STEP): Remove. No longer needed, now that adjust_location does + the work. All uses removed. + (scanner_cursor): New var. + (adjust_location): Renamed from extend_location. It now sets + *loc and adjusts the scanner cursor. All uses changed. + Don't bother testing for CR. + (handle_syncline): Remove location arg; now updates scanner cursor. + All callers changed. + (unexpected_end_of_file): Now accepts start boundary of token or + comment, not location. All callers changed. Update scanner cursor, + not the location. + (SC_AFTER_IDENTIFIER): New state. + (context_state): Renamed from c_context. All uses changed. + (id_loc, code_start, token_start): New local vars. + (): New initial context. Move all + processing of Yacc white space and equivalents here. + ({id}): Save id_loc. Begin state SC_AFTER_IDENTIFIER + instead of returning ID immediately, since we need to search for + a subsequent colon. + ("'", "\""): Save token_start. + ("%{", "{", "%%"): Save code_start. + (): New state, looking for a colon. + (, , ): + BEGIN context_state at end, not INITIAL. + ("\"", "'", + "}", "%}", <>): + Return correct token start. + (): Save start boundary when + the start of a character, string or multiline comment is found. + * tests/conflicts.at (S/R in initial, Defaulted Conflicted + Reduction): Adjust reported locations to match the more-precise + results now expected. + * tests/input.at (Invalid $n, Invalid @n, Type Clashes): Likewise. + * tests/reduce.at (Useless Rules, Reduced Automaton, + Underivable Rules): Likewise. + * tests/regression.at (Invalid inputs): No longer `expecting ";" + or "|"' now that so many other tokens are allowed by the new grammar. + + * src/complain.h (current_file): Remove duplicate decl; + current_file is now owned by files.h. + * src/complain.c, src/scan-gram.l: Include files.h. + +2002-12-06 Paul Eggert + + * data/glr.c (yy_reduce_print): Don't assume that yyrline[yyrule] + promotes to int; it might be unsigned int. + * data/yacc.c (yy_reduce_print): Likewise. + + * doc/bison.texinfo (Table of Symbols): YYERROR_VERBOSE should + be #defined in the prologue, not in the Bison declarations. + This fixes Debian Bug 102878, reported by Shaul Karl. + +2002-12-02 Paul Eggert + + * configure.ac (AC_REPLACE_FUNCS): Add strtoul. + * lib/strtoul.c: New file, from gnulib. + This fixes a porting bug reported by Peter Klein in + . + +2002-11-30 Paul Eggert + + * src/scan-gram.l (no_cr_read, extend_location): Move to epilogue, + and put only a forward declaration in the prologue. This is for + consistency with the other scanner helper functions. + + Type clashes now generate warnings, not errors, since it + appears that POSIX may allow some grammars with type clashes. + * src/reader.c (grammar_current_rule_check): Warn about + type clashes instead of complaining. + * tests/input.at (Type Clashes): Expect warnings, not complaints. + + Add Yacc library, since POSIX requires it. + * doc/bison.texinfo (Yacc Library): New node. Regenerate top menu. + * lib/Makefile.am (lib_LIBRARIES, liby_a_SOURCES): New macros. + * lib/main.c, lib/yyerror.c: New files. + + gram_error can be static; it need not be extern. + * src/reader.h (gram_error): Remove decl. + * src/parse-gram.y (gram_error): Now static. Add static decl. + (print_token_value): Omit parameter names from forward decl, + for consistency. + +2002-11-29 Paul Eggert + + * doc/bison.texinfo: Emphasize that yylex and yyerror must + be declared before being used. E.g., one should typically + declare them in the prologue. Use GNU coding style in examples. + Put "const" consistently after the type it modifies. Mention + that C99 supports "inline". Mention that yyerror traditionally + returns "int". + + %parse-param and %lex-param now take just one argument, the + declaration; the argument name is deduced from the declaration. + + * doc/bison.texinfo (Parser Function, Pure Calling, Error + Reporting, Table of Symbols): Document this. + * src/parse-gram.y (add_param): New function. + (COMMA): Remove. + (declaration): Implement new rule for %parse-param and %lex-param. + * src/scan-gram.l: "," now elicits a warning, rather than being + a token; this is more compatible with byacc. + * tests/calc.at (Simple LALR Calculator): Adopt new convention. + +2002-11-27 Paul Eggert + + Rename identifiers to avoid real and potential collisions. + + * data/c.m4 (b4_yysymprint_generate): yyout -> yyoutput, + to avoid collision with lex macro described by Bruce Lilly in + . + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise. + * doc/bison.texinfo (Prologue, Tracing): yyprint -> print_token_value. + * src/parse-gram.y (print_token_value): Renamed from yyprint. + All uses changed. + (YYPARSE_PARAM, YYLEX_PARAM, yycontrol): Remove. All uses changed. + The name "yycontrol" violates the name space rules, and this stuff + wasn't being used anyway. + (input): Remove action; this stuff wasn't being used. + (gram_error): Rename local variable yylloc -> loc. + * src/reader.h (struct gram_control_s, gram_control_t): Remove. + (YY_DECL): Don't use "yy" at start of local variables. + All uses changed, e.g., yylloc -> loc. + * src/scan-gram.l (STEP): Renamed from YY_STEP. All uses changed. + (STRING_GROW): Renamed from YY_OBS_GROW. All uses changed. + (STRING_FINISH): Renamed from YY_OBS_FINISH. All uses changed. + (STRING_FREE): Renamed from YY_OBS_FREE. All uses changed. + + * src/parse-gram.y (gram_error): loc is now const *. + * src/reader.h (gram_error): Likewise. + +2002-11-24 Paul Eggert + + Version 1.75c. + + * tests/actions.at (Actions after errors): Use an output format + more similar to that of the Printers and Destructors test. + Test the position of the ';' token too. + (Printers and Destructors): Likewise. + (Printers and Destructors: %glr-parser): Remove for now, to avoid + unnecessarily alarming people when the test fails. + + * data/yacc.c (yyerrlab1): Move this label down, so that the + parser does not discard the lookahead token if the user code + invokes YYERROR. This change is required for POSIX conformance. + + * lib/error.c: Sync with gnulib. + +2002-11-22 Paul Eggert + + * lib/quotearg.c, lib/quotearg.h: Sync with gnulib. + * lib/mbswidth.c, lib/mbswidth.h: Likewise. + * lib/xmalloc.c: Likewise. + +2002-11-20 Paul Eggert + + * lib/argmatch.c, lib/argmatch.h: Sync with gnulib. + +2002-11-20 Paul Eggert + + Avoid use of , as the GNU Coding Standards hint that one + should use `if (! x) abort ();' rather than `assert (x);', and + anyway it's one less thing to worry about configuring. + + * data/glr.c, lib/hash.c, src/system.h: Do not include . + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Likewise, + and replace all instances of assert with abort. + * tests/calc.at (_AT_DATA_CALC_Y): Likewise. + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Likewise. + + * data/glr.c (yydoAction, yyglrReduce, yysplitStack, yyresolveStates, + yyresolveAction, yyprocessOneStack): Use abort rather than assert. + * lib/hash.c (hash_lookup, hash_get_first, hash_get_next, + hash_find_entry, hash_rehash, hash_insert): Likewise. + * src/conflicts.c (resolve_sr_conflict): Likewise. + * src/lalr.c (set_goto_map, map_goto): Likewise. + * src/nullable.c (nullable_compute): Likewise. + * src/output.c (prepare_rules, token_definitions_output): Likewise. + * src/reader.c (packgram, reader): Likewise. + * src/state.c (state_new, state_free, state_transitions_set, + state_reduction_find): Likewise. + * src/symtab.c (symbol_user_token_number_set, symbol_make_alias, + symbol_pack): Likewise. + * src/tables.c (conflict_row, pack_vector): Likewise. + * src/vcg.c (get_color_str, get_textmode_str, get_shape_str, + get_layoutalgorithm_str, get_decision_str, get_orientation_str, + get_node_alignement_str, get_arrow_mode_str, get_crossing_type_str, + get_view_str, get_linestyle_str, get_arrowstyle_str): Likewise. + + * lib/argmatch.h (ARRAY_CARDINALITY): Do not bother to #undef. + (ARGMATCH_CONSTRAINT): New macro. + (ARGMATCH_ASSERT): Use it. + + * src/system.h (verify): New macro. + * src/getargs.c (trace_argmatch, report_argmatch): Use verify + rather than assert. + * src/tables.c (tables_generate): Likewise. + + * src/struniq.c (struniq_assert): Now returns void, and aborts + if the assertion is false. + (struniq_assert_p): Remove. + * src/struniq.h: Likewise. + +2002-11-18 Paul Eggert + + * data/glr.c (yygetLRActions): Replace `yyindex' with + `yytable[yyindex]' to fix typo introduced in my 2002-11-09 patch. + This fixes the regression with Sun ONE Studio 7 cc that I reported in + . + +2002-11-18 Akim Demaille + + * doc/bison.texinfo (Tracing): `yyprint' shouldn't prepend a + space. + From Tim Van Holder. + +2002-11-17 Paul Eggert + + Pacify Sun ONE Studio 7 lint. Also, rename "ParseError" + to "SyntaxError" for consistency with my 2002-11-15 change. + + * data/glr.c (YYDPRINTF, YYDSYMPRINT, YYDSYMPRINTF) [!YYDEBUG]: Do + not define to {}, since this breaks the common use of `YYDPRINTF + ((...));' if a single statement is desired (e.g. before `else'). + Work around GCC warnings by surrounding corresponding calls with + {} if needed. + (yyhasResolvedValue): Remove unused function. + (yymergeOptionSets, yyresolvStack): Use `continue;' for empty + loop body. + (yyreportSyntaxError): Renamed from yyreportParseError. + (yyrecoverSyntaxError): Renamed from yyrecoverParseError. + All uses changed. + * tests/calc.at (_AT_DATA_CALC_Y): Make vars static instead of + extern when possible. Remove unused initializations. + +2002-11-16 Akim Demaille + + Augment the similarity between GLR and LALR traces. + + * data/yacc.c (yy_stack_print, YY_STACK_PRINT, yy_reduce_print) + (YY_REDUCE_PRINT): New. + (yyparse): Use them. + * data/glr.c (yy_reduce_print): Use YYFPRINTF, no need for + YYDPRINT here. + (yyglrReduce, yyrecoverParseError, yyparse): Don't report the + state reached after the reduction/recovery, since... + (yyparse, yyprocessOneStack): Report the state we are entering in. + +2002-11-16 Akim Demaille + + * src/getargs.h, src/getargs.c (trace_e, trace_args, trace_types): + Add support for --trace=skeleton. + * src/scan-skel.l: %option debug. + Scan strings of non-@ or \n instead of character by character. + (scan_skel): Handle trace_skeleton. + (QPUTS): New. + (@output_parser_name@, @output_header_name@): ``Restore'' their + support (used to be M4 macros). + * data/yacc.c: Quote larger chunks, a la glr.c. + * data/lalr1.cc: Likewise. + The header guards are no longer available, so use some other + string than `YYLSP_NEEDED'. + +2002-11-16 Akim Demaille + + Make the ``Printers and Destructors'' test more verbose, taking + `yacc.c''s behavior as (possibly wrong) reference. + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Use printf + instead of fprint on stdout. + Set and report the last_line of the symbols. + Consistently display values and locations. + +2002-11-16 Paul Eggert + + * data/yacc.c: Avoid over-quoting of __line__ and __file__. + +2002-11-15 Paul Eggert + + * tests/actions.at (Actions after errors): New test case. + + * data/glr.c, data/lalr1.cc, data/yacc.cc, doc/bison.texinfo, + src/conflicts.c, src/parse-gram.y, src/tables.c, src/tables.h, + tests/action.at, tests/calc.at, tests/conflicts.at, + tests/cxx-type.at, tests/regression.at: + "parse error" -> "syntax error" for POSIX compatibility. + "parsing stack overflow..." -> "parser stack overflow" so + that code matches Bison documentation. + +2002-11-15 Akim Demaille + + * src/parse-gram.y (declaration): Have %parse-param and %lex-param + take two BRACED_CODE, not two string_content. + Free the scanner's obstack when we are done. + (code_content): New. + * tests/calc.at: Adjust. + * doc/bison.texinfo: Adjust. + Also, make sure to include the `,' for these declarations. + +2002-11-15 Tim Van Holder + + * m4/prereq.m4: Removed the commented jm_PREREQ_HASH + definition; avoids potential autoreconf problems. + +2002-11-15 Akim Demaille + + Always check the value returned by yyparse. + + * tests/calc.at (_AT_DATA_CALC_Y): Have `main' exit with the value + returned by yyparse. + (_AT_CHECK_CALC_ERROR): Take the expected exit value as argument. + Adjust calls. + * tests/glr-regr1.at (glr-regr1.y): Have `main' exit with the value + returned by yyparse. + +2002-11-14 Paul Hilfinger + + * data/glr.c (yyFail): Always set yyerrflag. Corrects regression + on input.at test. + +2002-11-14 Paul Eggert + + * src/output.c (output_skeleton): Call xfopen instead of + duplicating xfopen's body. + + Fix bugs reported by Nelson H. F. Beebe in + . + + * tests/headers.at (AT_TEST_CPP_GUARD_H): Don't assume that + "$CC -E foo.h" is allowed, as this doesn't work with the Portland + Group compiler. Instead, use "$CC -E bar.c". Include the .h + file twice in the grammar, as an extra check. + + * tests/input.at (Torturing the Scanner): Surround the + backslash-newline tests with "#if 0", to make it less likely that + we'll run into compiler bugs. Bring back solitary \ inside + comment, but add a closing comment to work around HP C bug. Don't + test backslash-newline in C character constant. + +2002-11-14 Akim Demaille + + * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore the exit + status of the compiler. + Calling `exit 1' is no longer needed. + Reported by Nelson H. F. Beebe. + +2002-11-14 Akim Demaille + + * tests/atlocal.in (CPPFLAGS): We have config.h. + * tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR): + New. + * tests/actions.at, tests/calc.at, tests/conflicts.at, + * tests/cxx-type.at, tests/glr-regr1.at, tests/headers.at, + * tests/regression.at, tests/torture.at: Use them for all the + grammars that are to be compiled. + * tests/cxx-type.at (_AT_TEST_GLR_CALC): Rename as... + * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): this. + * doc/bison.texinfo (GLR Parsers): Document `inline'. + +2002-11-14 Akim Demaille + + * doc/bison.texinfo: Various formatting changes (alignments in + samples, additional @group/@end group, GCS in samples. + Use @deffn instead of simple @table to define the directives, + macros, variables etc. + +2002-11-13 Paul Eggert + + Fix some bugs reported by Albert Chin-A-Young in + . + + * tests/input.at (Torturing the Scanner): Don't invoke "cc a.c b.c + -o c"; the HP C compiler chatters during compilation. + Instead, invoke "cc -c a.c -o a.o; cc -c b.c -o b.o; cc a.o b.o -o c". + * tests/headers.at (export YYLTYPE): Likewise. + + * tests/input.at (Torturing the Scanner): Remove lines containing + solitary backslashes, as they tickle a bug in the HP C compiler. + + * tests/glr-regr1.at (Badly Collapsed GLR States): Avoid // + comments, since they're not portable. Use GNU coding style. + +2002-11-13 Akim Demaille + + * data/yacc.c: Leave bigger chunks of quoted text. + (YYDSYMPRINTF): New. + Use it to report symbol activities. + * data/glr.c (YYDSYMPRINTF): New. + Use it. + +2002-11-12 Paul Eggert + + Version 1.75b. + + * data/glr.c (yydoAction): Return YYRESULTTAG, not int. + (yyglrReduce): Return yyok, not 0. + This should avoid the enumerated-type warnings reported + by Nelson H. F. Beebe in + . + + * lib/bbitset.h (BITSET_INLINE): Remove. + * lib/bitset.h [! BITSET_INLINE]: Remove. + (bitset_set, bitset_reset, bitset_test): Rename local vars + to avoid shadowing warnings by GCC. + + * data/glr.c (inline): Remove #define. It's the user's + responsibility to #define it away, just like 'const'. + This fixes one of the bugs reported by Nelson H. F. Beebe in + . + + * Makefile.maint (po-check): Scan .l and .y files instead of the + .c and the .h files that they generate. This fixes the bug + reported by Tim Van Holder in: + + Look for N_ as well as for _. Try to avoid matching #define for + N_ and _. + * po/POTFILES.in: Remove src/parse-gram.c, src/scan-gram.c, + src/system.h. Add src/parse-gram.y, src/scan-gram.l. + * src/scan-gram.l: Revamp regular expressions so that " and ' + do not confuse xgettext. + + * src/struniq.h (struniq_new): Do not declare the return type + to be 'const'; this violates the C standard. + * src/struniq.c (struniq_new): Likewise. + +2002-11-12 Albert Chin-A-Young + + * src/Makefile.am (LDADD): Link $(LIBINTL) last to avoid the + duplicate definition of optind on Tru64 UNIX 4.0D with the Compaq + linker. + +2002-11-12 Akim Demaille + + * Makefile.maint: Sync with Autoconf: + (local_updates): New. + +2002-11-12 Akim Demaille + + * po/POTFILES.in (src/lalr.c, src/state.c): Remove + +2002-11-12 Akim Demaille + + * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Display the + locations. + +2002-11-12 Akim Demaille + + * data/c.m4 (b4_yysymprint_generate): Pass *yyvaluep to YYPRINT, + 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. @@ -184,6 +1803,12 @@ * 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. @@ -239,10 +1864,8 @@ * data/glr.c (struct yyltype): Define members even when not doing locations. This is more consistent with yacc.c, and it works around the following bug reports: - http://mail.gnu.org/pipermail/bug-bison/2002-October/001764.html - http://mail.gnu.org/pipermail/bug-bison/2002-October/001769.html - and I hope it also fixes this bug report: - http://mail.gnu.org/pipermail/bug-bison/2002-October/001748.html + http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00106.html + http://mail.gnu.org/archive/html/bug-bison/2002-10/msg00111.html * doc/bison.texinfo: Minor spelling and typographical fixes. Use @acronym consistently. Standardize on "Yacc" instead of "YACC", @@ -674,7 +2297,7 @@ 2002-10-13 Paul Eggert Fix problem reported by Henrik Grubbstroem in - : + : "nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected, because the Bison parser reads the second action before reducing the first one. @@ -691,7 +2314,7 @@ Include when checking for clock_t and struct tms. Use same include order as source. This is for the SunOS 4.1.4 porting bug reported by Peter Klein in - . + . * lib/timevar.c: Update copyright date and clarify comments. (get_time) [IN_GCC]: Keep the GCC version for reference. @@ -704,13 +2327,13 @@ * src/reader.c (grammar_current_rule_check): Don't worry about the default action if $$ is untyped. Prevents bogus warnings reported by Jim Gifford in - . + . * data/c.m4 (b4_token_enum): Do not define YYTOKENTYPE. * data/glr.c, data/lalr1.cc, data/yacc.c: Output token definitions before the first part of user declarations. Fixes compatibility problem reported by Jim Gifford for kbd in - . + . 2002-10-11 Paul Eggert @@ -835,7 +2458,7 @@ * lib/bitset.h (bitset_reset): Do not assume that bitset_word is the same width as int. This reapplies a hunk of the 2002-08-12 patch - , + , which was inadvertently undone by the 2002-09-30 patch. * lib/lbitset.c (debug_lbitset): Do not assume that bitset_word is the same width as int. @@ -5937,7 +7560,7 @@ 2001-11-12 Akim Demaille - %expext was not functioning at all. + %expect was not functioning at all. * src/conflicts.c (expected_conflicts): Set to -1. (conflict_report): Use ngettext. @@ -9295,23 +10918,25 @@ 1987-12-16 Richard Stallman * REFERENCES: entered into RCS + ----- -Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, +1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -This file is part of GNU Bison. +This file is part of Bison, the GNU Compiler Compiler. -GNU Bison is free software; you can redistribute it and/or modify +Bison is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. -GNU Bison is distributed in the hope that it will be useful, +Bison is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Bison; see the file COPYING. If not, write to +along with Bison; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.