Paul Eggert [Mon, 30 Dec 2002 22:40:52 +0000 (22:40 +0000)]
(<SC_BRACED_CODE>"}"): Append ";" 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.
Paul Eggert [Sun, 29 Dec 2002 01:59:13 +0000 (01:59 +0000)]
(Unresolved SR Conflicts, Defaulted
Conflicted Reduction, %expect not enough, %expect too much,
%expect with reduce conflicts): Switch to Yacc-style reports.
Paul Eggert [Sun, 29 Dec 2002 01:58:49 +0000 (01:58 +0000)]
(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.
Paul Eggert [Sun, 29 Dec 2002 01:22:30 +0000 (01:22 +0000)]
(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.
Paul Eggert [Sat, 28 Dec 2002 08:36:02 +0000 (08:36 +0000)]
(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.
Paul Eggert [Thu, 26 Dec 2002 22:10:52 +0000 (22:10 +0000)]
(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.
Paul Eggert [Thu, 26 Dec 2002 09:12:05 +0000 (09:12 +0000)]
Don't use m4_include on relative file names, as it doesn't work.
Remove obsolete references to bison.simple and bison.hairy.
* src/getargs.c (getargs) [MSDOS]: Don't assume optarg != NULL.
* src/parse-gram.y (declaration): Use enum "report_states".
* src/scan-skel.l ("@output ".*\n): Close any old yyout before new one.
Paul Eggert [Thu, 26 Dec 2002 08:25:56 +0000 (08:25 +0000)]
(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.
Paul Eggert [Tue, 24 Dec 2002 07:47:36 +0000 (07:47 +0000)]
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.
Paul Eggert [Tue, 24 Dec 2002 07:46:49 +0000 (07:46 +0000)]
(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.
(<INITIAL>"%destructor", <INITIAL>"%lex-param",
<INITIAL>"%parse-param", <INITIAL>"%printer,
<INITIAL>"%union"): Set token type and BEGIN SC_PRE_CODE
instead of returning a token type immediately.
(<INITIAL>"{"): Set token type.
(<SC_BRACED_CODE>"}"): 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.
Paul Eggert [Tue, 24 Dec 2002 07:44:40 +0000 (07:44 +0000)]
(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 <chars>.
(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.
Paul Eggert [Tue, 24 Dec 2002 07:43:43 +0000 (07:43 +0000)]
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.
Paul Eggert [Tue, 24 Dec 2002 07:41:47 +0000 (07:41 +0000)]
(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.
(YYSTYPE): Declare as union YYSTYPE if the user
does not specify a union tag. This is for compatibility with
Solaris 9 yacc.
Paul Eggert [Tue, 24 Dec 2002 07:40:58 +0000 (07:40 +0000)]
(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.
Paul Eggert [Tue, 24 Dec 2002 07:40:14 +0000 (07:40 +0000)]
* 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.
Paul Eggert [Sun, 15 Dec 2002 09:20:24 +0000 (09:20 +0000)]
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. This should fix the bug
reported by Andrew Walrond in
<http://mail.gnu.org/pipermail/bug-bison/2002-December/001949.html>.
(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.
Paul Eggert [Fri, 13 Dec 2002 09:33:23 +0000 (09:33 +0000)]
Fix a bad interaction with flex 2.5.23 reported by Bruce Lilly in
<http://mail.gnu.org/pipermail/bug-bison/2002-November/001929.html>.
(YYLTYPE, struct yyltype): Do not define unless
locations are requested.
(union yyalloc): Do not depend on YYLTYPE_IS_TRIVIAL unless
locations are requested.
Paul Eggert [Fri, 13 Dec 2002 08:47:15 +0000 (08:47 +0000)]
(uniqstr_print): Now inline. Return bool, not int.
(uniqstr_print_processor): New function, to avoid casts.
(uniqstrs_new, hash_initialize, uniqstrs_do):
Use new functions instead of casting old functions unportably.
(hash_compare_uniqstr): Remove unnecessary casts.
Paul Eggert [Fri, 13 Dec 2002 08:45:38 +0000 (08:45 +0000)]
(state_number_to_vector_number,
symbol_number_to_vector_number):
Now inline functions rather than macros, to avoid casts.
(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.
Paul Eggert [Fri, 13 Dec 2002 08:44:28 +0000 (08:44 +0000)]
(alloca): Remove; decl no longer needed.
(<stddef.h>): Include, for offsetof.
(<inttypes.>, <stdint.h>): 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.
Paul Eggert [Fri, 13 Dec 2002 08:42:03 +0000 (08:42 +0000)]
(symbol_check_defined,
symbol_check_alias_consistency, symbol_pack, symbol_translation,
hash_compare_symbol, hash_symbol):
Now inline. Return bool, not int.
(symbol_check_defined_processor,
symbol_check_alias_consistency_processor, symbol_pack_processor,
symbol_translation_processor, hash_symbol_comparator,
hash_symbol_hasher): New functions, to avoid casts.
(symbols_new, symbols_do, symbols_check_defined,
symbols_token_translations_init):
Use new functions instead of casting old functions unportably.
(symbol_free): Remove; unused.
(symbol_get): Remove cast in lhs of assignment.
(symbols_do): Now static. Accept generic arguments, not hashing-related ones.
Paul Eggert [Fri, 13 Dec 2002 08:37:52 +0000 (08:37 +0000)]
(state_compare): Now inline. Return bool, not int.
(state_comparator, stage_hasher): New function, to avoid casts.
(state_hash_new): Use new functions instead of casting old functions unportably.
(state_hash_lookup): Use MALLOC rather than alloca, so that we don't
have to worry about alloca.
(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.
(state_hash): Use unsigned accumulator, not signed.
Paul Eggert [Fri, 13 Dec 2002 08:29:05 +0000 (08:29 +0000)]
(muscle_m4_output): Now inline. Return bool, not int.
(muscle_m4_output_processor): New function, to avoid casts.
(muscles_m4_output): Use new functions instead
of casting old functions unportably.