platform/upstream/bison.git
22 years agoRevert the previous patch. before-m4-back-end
Akim Demaille [Tue, 5 Feb 2002 10:04:24 +0000 (10:04 +0000)]
Revert the previous patch.

22 years ago* lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
Akim Demaille [Tue, 5 Feb 2002 10:00:47 +0000 (10:00 +0000)]
* lib/hash.c, lib/hash.h: Replace with Fileutils 4.1's version.
* configure.in: Check for the declarations of free and malloc.
* src/muscle_tab.c: Adjust.

22 years ago* src/muscle_tab.c (muscle_init): Don't default to NULL muscle
Akim Demaille [Tue, 5 Feb 2002 09:58:57 +0000 (09:58 +0000)]
* src/muscle_tab.c (muscle_init): Don't default to NULL muscle
which have no values.

22 years ago* src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
Akim Demaille [Tue, 5 Feb 2002 09:57:52 +0000 (09:57 +0000)]
* src/bison.simple, src/bison.hairy, src/bison.c++: Move to...
* data/: here.

22 years ago* src/bison.simple (YYSIZE_T): Do not define merely because
Paul Eggert [Tue, 29 Jan 2002 13:58:06 +0000 (13:58 +0000)]
* src/bison.simple (YYSIZE_T): Do not define merely because
YYSTACK_USE_ALLOCA is nonzero or alloca or _ALLOCA_H are defined.
On some platforms, <alloca.h> does not declare YYSTD (size_t).

22 years ago(YYSIZE_T): Do not define merely because YYSTACK_USE_ALLOCA is nonzero
Paul Eggert [Tue, 29 Jan 2002 13:55:32 +0000 (13:55 +0000)]
(YYSIZE_T): Do not define merely because YYSTACK_USE_ALLOCA is nonzero
or alloca or _ALLOCA_H are defined.  On some platforms, <alloca.h>
does not declare YYSTD (size_t).

22 years agoFix `%nonassoc and eof'.
Akim Demaille [Sun, 27 Jan 2002 13:57:17 +0000 (13:57 +0000)]
Fix `%nonassoc and eof'.
* src/state.c (errs_dup): Aaaah!  The failure was due to bytes
which were not properly copied!  Replace
memcpy (res->errs, src->errs, src->nerrs);
with
memcpy (res->errs, src->errs, src->nerrs * sizeof (src->errs[0]));
!!!
* tests/regression.at (%nonassoc and eof): Adjust to newest
Autotest: `.' is not in the PATH.

22 years ago* tests/sets.at (AT_EXTRACT_SETS): New.
Akim Demaille [Sun, 27 Jan 2002 13:57:03 +0000 (13:57 +0000)]
* tests/sets.at (AT_EXTRACT_SETS): New.
(Nullable): Use it.
(Firsts): New.

22 years ago* tests/actions.at, tests/calc.at, tests/headers.at,
Akim Demaille [Sun, 27 Jan 2002 10:59:15 +0000 (10:59 +0000)]
* tests/actions.at, tests/calc.at, tests/headers.at,
* tests/torture.at: Adjust to the newest Autotest which no longer
forces `.' in the PATH.

22 years ago* tests/regression.at (%nonassoc and eof): New.
Akim Demaille [Fri, 25 Jan 2002 16:24:40 +0000 (16:24 +0000)]
* tests/regression.at (%nonassoc and eof): New.
Suggested by Robert Anisko.

22 years agoBison dumps core when trying to complain about broken input files.
Akim Demaille [Thu, 24 Jan 2002 17:09:34 +0000 (17:09 +0000)]
Bison dumps core when trying to complain about broken input files.
Reported by Cris van Pelt.
* src/lex.c (parse_percent_token): Be sure to set token_buffer.
* tests/regression.at (Invalid input: 1, Invalid input: 2): Merge
into...
(Invalid inputs): Strengthen: exercise parse_percent_token.

22 years ago* src/Makefile.am: Add bison.c++.
Robert Anisko [Thu, 24 Jan 2002 16:50:07 +0000 (16:50 +0000)]
* src/Makefile.am: Add bison.c++.
* src/bison.c++: New skeleton.

22 years ago* po/it.po: New.
Akim Demaille [Mon, 21 Jan 2002 19:29:04 +0000 (19:29 +0000)]
* po/it.po: New.

22 years agoAdjust.
Akim Demaille [Mon, 21 Jan 2002 19:27:55 +0000 (19:27 +0000)]
Adjust.

22 years ago* src/files.c (skeleton_find) [MSDOS]: Fix cp definition.
Akim Demaille [Mon, 21 Jan 2002 15:50:39 +0000 (15:50 +0000)]
* src/files.c (skeleton_find) [MSDOS]: Fix cp definition.

22 years ago* src/files.c (compute_output_file_names): Fix
Marc Autret [Sun, 20 Jan 2002 15:59:34 +0000 (15:59 +0000)]
* src/files.c (compute_output_file_names): Fix

22 years ago* tests/output.at: New test.
Marc Autret [Sun, 20 Jan 2002 15:46:19 +0000 (15:46 +0000)]
* tests/output.at: New test.
* src/files.c (compute_base_names): Don't map extensions when
the YACC flag is set, use defaults.
Reported by Evgeny Stambulchik.

22 years agoUpdate.
Marc Autret [Sun, 20 Jan 2002 14:37:39 +0000 (14:37 +0000)]
Update.

22 years ago* src/system.h: Need to define __attribute__ away for non-GCC
Marc Autret [Sun, 20 Jan 2002 11:34:02 +0000 (11:34 +0000)]
* src/system.h: Need to define __attribute__ away for non-GCC
compilers as well (i.e. the vendor C compiler).
Suggested by Albert Chin-A-Young.

22 years ago* src/system.h, lib/hash.h, lib/hash.c: PARAMS fixes.
Tim Van Holder [Fri, 11 Jan 2002 15:32:06 +0000 (15:32 +0000)]
* src/system.h, lib/hash.h, lib/hash.c: PARAMS fixes.

22 years ago* src/system.h: Use canonical definition for PARAMS (avoids clash with macro from...
Tim Van Holder [Fri, 11 Jan 2002 15:27:54 +0000 (15:27 +0000)]
* src/system.h: Use canonical definition for PARAMS (avoids clash with macro from hash.h).

22 years ago* lib/hash.h, lib/hash.c (__P): Renamed to PARAMS; canonical definition used.
Tim Van Holder [Fri, 11 Jan 2002 15:26:56 +0000 (15:26 +0000)]
* lib/hash.h, lib/hash.c (__P): Renamed to PARAMS; canonical definition used.

22 years agoMore thanks.
Akim Demaille [Fri, 11 Jan 2002 13:37:39 +0000 (13:37 +0000)]
More thanks.

22 years ago* configure.in: Use AC_FUNC_STRNLEN.
Akim Demaille [Fri, 11 Jan 2002 13:33:05 +0000 (13:33 +0000)]
* configure.in: Use AC_FUNC_STRNLEN.

22 years ago* src/files.c, src/files.h (output_infix): New.
Akim Demaille [Wed, 9 Jan 2002 13:03:45 +0000 (13:03 +0000)]
* src/files.c, src/files.h (output_infix): New.
(tab_extension): Remove.
(compute_base_names): Compute the former, drop the latter.
* src/output.c (prepare): Insert the muscles `output-infix', and
`output-suffix'.
* src/parse-skel.y (string, string.1): New.
(section.header): Use it.
(section.yacc): Remove.
(prefix): Remove too.
* src/scan-skel.l: Adjust.
* src/bison.simple, src/bison.hairy: Adjust.

22 years ago* configure.in (WERROR_CFLAGS): Compute it.
Akim Demaille [Wed, 9 Jan 2002 13:03:20 +0000 (13:03 +0000)]
* configure.in (WERROR_CFLAGS): Compute it.
* src/Makefile.am (CFLAGS): Pass it.
* tests/atlocal.in (CFLAGS): Idem.
* src/files.c: Fix a few warnings.
(get_extension_index): Remove, unused.

22 years ago* src/getargs.c (AS_FILE_NAME): New.
Akim Demaille [Tue, 8 Jan 2002 17:28:18 +0000 (17:28 +0000)]
* src/getargs.c (AS_FILE_NAME): New.
(getargs): Use it to convert DOSish file names.
* src/files.c (base_name): Rename as full_base_name to avoid
clashes with `base_name ()'.
(filename_split): New.
(compute_base_names): N-th rewrite, using filename_split.

22 years ago* lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
Akim Demaille [Tue, 8 Jan 2002 17:27:46 +0000 (17:27 +0000)]
* lib/basename.c, lib/dirname.h, lib/dirname.c, lib/memrchr.c:
New, stolen from the Fileutils 4.1.
* lib/Makefile.am (libbison_a_SOURCES): Adjust.
* configure.in: Check for the presence of memrchr, and of its
prototype.

22 years ago* lib/hash.h (__P): Added definition for this macro.
Tim Van Holder [Mon, 7 Jan 2002 23:00:39 +0000 (23:00 +0000)]
* lib/hash.h (__P): Added definition for this macro.
* src/Makefile.am: Add parse-skel.c and scan-skel.c to BUILT_SOURCES, to ensure they are generated first.
* src/parse-skel.y: Use YYERROR_VERBOSE instead of %error-verbose to allow bootstrapping with bison 1.30x.

22 years agoRegen.
Akim Demaille [Mon, 7 Jan 2002 08:44:08 +0000 (08:44 +0000)]
Regen.

22 years ago* src/reader.c (parse_braces): Don't fetch the next char, the
Akim Demaille [Sun, 6 Jan 2002 20:50:08 +0000 (20:50 +0000)]
* src/reader.c (parse_braces): Don't fetch the next char, the
convention is to fetch on entry.
* tests/torture.at (GNU Cim Grammar): Reintroduce their weird
'switch' without a following semicolon.
* tests/regression.at (braces parsing): New.

22 years agoBison is dead wrong in its RR conflict reports.
Akim Demaille [Sun, 6 Jan 2002 20:49:53 +0000 (20:49 +0000)]
Bison is dead wrong in its RR conflict reports.
* tests/torture.at (GNU Cim Grammar): New.
* src/conflicts.c (count_rr_conflicts): Fix.

22 years agoCreating package.m4 from configure.ac causes too many problems.
Akim Demaille [Sun, 6 Jan 2002 20:49:40 +0000 (20:49 +0000)]
Creating package.m4 from configure.ac causes too many problems.
* tests/Makefile.am (package.m4): Create it by hand,
AC_CONFIG_TESTDIR no longer does in the most recent CVS Autoconf.

22 years ago* src/Makefile.am (bison_SOURCES): Add parse-skel.h and
Akim Demaille [Sun, 6 Jan 2002 20:49:27 +0000 (20:49 +0000)]
* src/Makefile.am (bison_SOURCES): Add parse-skel.h and
skeleton.h.

22 years ago* doc/bison.texinfo (Debugging):
Paul Eggert [Sat, 5 Jan 2002 01:26:32 +0000 (01:26 +0000)]
* doc/bison.texinfo (Debugging):
Remove YYSTDERR; it's no longer defined or used.
Also, s/cstdio.h/cstdio/.

22 years ago(Debugging): Remove YYSTDERR; it's no longer defined or used.
Paul Eggert [Sat, 5 Jan 2002 01:25:38 +0000 (01:25 +0000)]
(Debugging): Remove YYSTDERR; it's no longer defined or used.
Also, s/cstdio.h/cstdio/.

22 years ago* src/parse-skel.y (process_skeleton): Don't bind the parser's
Akim Demaille [Thu, 3 Jan 2002 09:56:04 +0000 (09:56 +0000)]
* src/parse-skel.y (process_skeleton): Don't bind the parser's
tracing code to --trace, wait for a better --trace option, with
args.

22 years ago* src/bison.simple (YYSTDERR): Remove, replace `stderr'.
Akim Demaille [Thu, 3 Jan 2002 09:55:49 +0000 (09:55 +0000)]
* src/bison.simple (YYSTDERR): Remove, replace `stderr'.
The ISO C++ standard is extremely clear about it: stderr is
considered a macro, not a regular symbol (see table 94 `Header
<cstdio> synopsis', [lib.c.files] 27.8.2 C Library files).
Therefore std:: does not apply to it.  It still does with fprintf.
Also, s/cstdio.h/cstdio/.

22 years ago* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
Akim Demaille [Thu, 3 Jan 2002 09:55:33 +0000 (09:55 +0000)]
* lib/quotearg.c: Use `#include "..."' instead of `#include <...>'
for non system headers.

22 years agoEquip the skeleton chain with location tracking, runtime trace,
Akim Demaille [Wed, 2 Jan 2002 14:56:12 +0000 (14:56 +0000)]
Equip the skeleton chain with location tracking, runtime trace,
pure parser and scanner.
* src/parse-skel.y: Request a pure parser, locations, and prefix
renaming.
(%union): Having several members with the same type does not help
type mismatches, simplify.
(YYPRINT, yyprint): New.
(yyerror): ``Rename'' (there is a #define yyerror skel_error) as...
(skel_error): this.
Handle locations.
* src/scan-skel.l: Adjust to these changes.
* src/skeleton.h (LOCATION_RESET, LOCATION_LINES, LOCATION_STEP)
(LOCATION_PRINT, skel_control_t): New.

22 years ago* src/parse-skel.y: Get rid of the shift/reduce conflict:
Akim Demaille [Sun, 30 Dec 2001 21:06:36 +0000 (21:06 +0000)]
* src/parse-skel.y: Get rid of the shift/reduce conflict:
replace `gb' with BLANKS.
* src/scan-skel.l: Adjust.

22 years ago* src/system.h: We don't need nor want bcopy.
Akim Demaille [Sun, 30 Dec 2001 21:06:22 +0000 (21:06 +0000)]
* src/system.h: We don't need nor want bcopy.
Throw away MS-DOS crap: we don't need getpid.
* configure.in: We don't need strndup.  It was even causing
problems: because Flex includes the headers *before* us,
_GNU_SOURCE is not defined by config.h, and therefore strndup was
not visible.
* lib/xstrndup.c: New.
* src/scan-skel.l: Use it.
Be sure to initialize yylval.muscle member when scanning a MUSCLE.
* src/parse-skel.y: Use %directives instead of #defines.

22 years ago* src/skeleton.h: New.
Akim Demaille [Sun, 30 Dec 2001 21:05:12 +0000 (21:05 +0000)]
* src/skeleton.h: New.
* src/output.c (output_parser, output_master_parser): Remove, dead
code.
* src/output.h (get_lines_number, actions_output, guards_output)
(token_definitions_output): Prototype them.
* src/parse-skel.y: Add the license notice.
Include output.h and skeleton.h.
(process_skeleton): Returns void, and takes a single parameter.
* src/scan-skel.l: Add the license notice.
Include skeleton.h.
Don't use %option yylineno: it seems that then Flex imagines
REJECT has been used, and therefore it won't reallocate its
buffers (which makes no other sense to me than a bug).  It results
in warnings for `unused: yy_flex_realloc'.
to guess if the generated parsers should have '.tab' in their
* src/Makefile.am (bison_SOURCES): Add scan-skel.l and

22 years ago* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
Robert Anisko [Sun, 30 Dec 2001 15:01:06 +0000 (15:01 +0000)]
* src/muscle_tab.h (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
(MUSCLE_INSERT_PREFIX): ...to there.
* src/output.c (MUSCLE_INSERT_INT, MUSCLE_INSERT_STRING)
(MUSCLE_INSERT_PREFIX): Move from here...
* src/bison.hairy: Add a section directive.  Put braces around muscle
names.  This parser skeleton is still broken, but Bison should not
choke on a bad muscle 'syntax'.
* src/bison.simple: Add a section directive.  Put braces around muscle
names.
* src/files.h (strsuffix, stringappend): Add declarations.
(tab_extension): Add declaration.
(short_base_name): Add declaration.
* src/files.c (strsuffix, stringappend): No longer static.  These
functions are used in the skeleton parser.
(tab_extension): New.
(compute_base_names): Use the computations done in this function
to guess if the generated parsers should have '.tab' in their
names.
(short_base_name): No longer static.
* src/output.c (output_skeleton): New.
(output): Disable call to output_master_parser, and give a try to
a new skeleton handling system.
(guards_output, actions_output): No longer static.
(token_definitions_output, get_lines_number): No longer static.
* configure.in: Use AM_PROG_LEX and AC_PROG_YACC.
* src/Makefile.am (bison_SOURCES): Add scan-skel.l and
parse-skel.y.
* src/parse-skel.y: New file.
* src/scan-skel.l: New file.

22 years agoRegen.
Akim Demaille [Sat, 29 Dec 2001 14:46:03 +0000 (14:46 +0000)]
Regen.

22 years ago%name-prefix is broken.
Akim Demaille [Sat, 29 Dec 2001 14:27:45 +0000 (14:27 +0000)]
%name-prefix is broken.
* src/files.c (spec_name_prefix): Initialize to NULL, not to "yy".
Adjust all dependencies.
* tests/headers.at (export YYLTYPE): Strengthen this test: use
%name-prefix.
Renaming yylval but not yylloc is not consistent.  Now we do.
* src/bison.simple: Prefix yylloc if used.
* doc/bison.texinfo (Decl Summary): Document that.

22 years ago* doc/bison.texinfo: Promote `%long-directive' over
Akim Demaille [Sat, 29 Dec 2001 14:27:20 +0000 (14:27 +0000)]
* doc/bison.texinfo: Promote `%long-directive' over
`%long_directive'.
Remove all references to fixed-output-files, yacc is enough.

22 years ago* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
Akim Demaille [Sat, 29 Dec 2001 14:27:01 +0000 (14:27 +0000)]
* src/bison.simple: Define YYDEBUG and YYERROR_VERBOSE *after* the
user prologue.  These are defaults.
* tests/actions.at (Mid-rule actions): Make sure the user can
define YYDEBUG and YYERROR_VERBOSE.

22 years ago* src/output.c (header_output): Don't forget to export YYLTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:26:49 +0000 (14:26 +0000)]
* src/output.c (header_output): Don't forget to export YYLTYPE and
yylloc.
* tests/headers.at (export YYLTYPE): New, make sure it does.
* tests/regression.at (%union and --defines, Invalid CPP headers):
Move to...
* tests/headers.at: here.

22 years ago* src/gram.h (rule_s): Member `assoc' is of type `associativity'.
Akim Demaille [Sat, 29 Dec 2001 14:26:21 +0000 (14:26 +0000)]
* src/gram.h (rule_s): Member `assoc' is of type `associativity'.

22 years ago* tests/actions.at (Mid-rule actions): Output on a single line
Akim Demaille [Sat, 29 Dec 2001 14:25:58 +0000 (14:25 +0000)]
* tests/actions.at (Mid-rule actions): Output on a single line
instead of several.

22 years ago* doc/bison.texinfo: Formatting changes.
Akim Demaille [Sat, 29 Dec 2001 14:25:45 +0000 (14:25 +0000)]
* doc/bison.texinfo: Formatting changes.

22 years agoDon't store the token defs in a muscle, just be ready to output it
Akim Demaille [Sat, 29 Dec 2001 14:25:27 +0000 (14:25 +0000)]
Don't store the token defs in a muscle, just be ready to output it
on command.  Now possible via `symbols'.  Fixes a memory leak.
* src/output.c (token_definitions_output): New.
(output_parser, header_output): Use it.
* src/reader.c (symbols_save): Remove.

22 years ago* src/bison.simple: Do not provide a default for YYSTYPE and
Akim Demaille [Sat, 29 Dec 2001 14:25:08 +0000 (14:25 +0000)]
* src/bison.simple: Do not provide a default for YYSTYPE and
YYLTYPE before the user's prologue.  Otherwise it's hardly... a
default.

22 years agoMid-rule actions are simply... ignored!
Akim Demaille [Sat, 29 Dec 2001 14:24:51 +0000 (14:24 +0000)]
Mid-rule actions are simply... ignored!
* src/reader.c (readgram): Be sure to attach mid-rule actions to
the empty-rule associated to the dummy symbol, not to the host
rule.
* tests/actions.at (Mid-rule actions): New.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:24:35 +0000 (14:24 +0000)]
Memory leak.
* src/reader.c (reader): Free grammar.

22 years agoMemory leak.
Akim Demaille [Sat, 29 Dec 2001 14:21:23 +0000 (14:21 +0000)]
Memory leak.
* src/LR0.c (new_itemsets): Don't allocate `shift_symbol' here,
since it allocates it for each state, although only one is needed.
(allocate_storage): Do it here.

22 years ago* src/options.h, src/options.c (create_long_option_table): Rename
Akim Demaille [Sat, 29 Dec 2001 14:21:06 +0000 (14:21 +0000)]
* src/options.h, src/options.c (create_long_option_table): Rename
as...
(long_option_table_new): this, with a clearer prototype.
(percent_table): Remove, unused,
* src/getargs.c (getargs): Adjust.

22 years ago* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
Akim Demaille [Sat, 29 Dec 2001 14:20:47 +0000 (14:20 +0000)]
* src/LR0.c, src/conflicts.c, src/lalr.c, src/lalr.h, src/output.c
* src/print.c, src/print_graph.c, src/state.h: Rename state_table
as states.

22 years ago* src/lalr.c (build_relations): Rename `states' as `states1'.
Akim Demaille [Sat, 29 Dec 2001 14:20:27 +0000 (14:20 +0000)]
* src/lalr.c (build_relations): Rename `states' as `states1'.
Sorry, I don't understand exactly what it is, no better name...

22 years ago* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
Akim Demaille [Sat, 29 Dec 2001 14:20:13 +0000 (14:20 +0000)]
* src/closure.c, src/conflicts.c, src/derives.c, src/gram.c
* src/gram.h, src/lalr.c, src/nullable.c, src/output.c, src/print.c
* src/print_graph.c, src/reader.c, src/reduce.c: Rename rule_table
as rules.

22 years ago* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
Akim Demaille [Sat, 29 Dec 2001 14:19:46 +0000 (14:19 +0000)]
* src/gram.c (rprec, rprecsym, rassoc): Remove, unused since long
ago.

22 years ago* src/reader.c, src/reader.h (user_toknums): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:31 +0000 (14:19 +0000)]
* src/reader.c, src/reader.h (user_toknums): Remove.
Adjust all users to use symbols[i]->user_token_number.

22 years ago* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:19:13 +0000 (14:19 +0000)]
* src/gram.c, src/gram.h (sprec, sassoc): Remove.
Adjust all users to use symbols[i]->prec or ->assoc.

22 years ago* src/reader.c, src/reader.h (tags): Remove.
Akim Demaille [Sat, 29 Dec 2001 14:18:52 +0000 (14:18 +0000)]
* src/reader.c, src/reader.h (tags): Remove.
Adjust all users to use symbols[i]->tag.

22 years ago* src/gram.h, src/gram.c (symbols): New, similar to state_table
Akim Demaille [Sat, 29 Dec 2001 14:18:32 +0000 (14:18 +0000)]
* src/gram.h, src/gram.c (symbols): New, similar to state_table
and rule_table.
* src/reader.c (packsymbols): Fill this table.
Drop sprec.
* src/conflicts.c (resolve_sr_conflict): Adjust.
* src/reduce.c (reduce_grammar): Adjust: just sort symbols, a
single table.
Use symbols[i]->tag instead of tags[i].

22 years ago* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
Akim Demaille [Sat, 29 Dec 2001 14:18:08 +0000 (14:18 +0000)]
* tests/calc.at (_AT_DATA_CALC_Y): Also use %union.
In addition, put a comment in there, to replace...
* tests/regression.at (%union and C comments): Remove.

22 years ago* tests/regression.at (Web2c Actions): Blindly move the actual
Akim Demaille [Sat, 29 Dec 2001 14:17:56 +0000 (14:17 +0000)]
* tests/regression.at (Web2c Actions): Blindly move the actual
output as expected output.  The contents *seem* right to me, but I
can't pretend reading perfectly parser tables...  Nonetheless, all
the other tests pass correctly, the table look OK, even though the
presence of `$axiom' is to be noted: AFAICS it is useless (but
harmless).

22 years ago* src/reader.c (readgram): Don't add the rule 0 if there were no
Akim Demaille [Sat, 29 Dec 2001 14:17:43 +0000 (14:17 +0000)]
* src/reader.c (readgram): Don't add the rule 0 if there were no
rules read.  In other words, add it _after_ having performed
grammar sanity checks.
Fixes the `tests/regression.at (Invalid input: 1)' Failure.

22 years ago* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
Akim Demaille [Sat, 29 Dec 2001 14:17:29 +0000 (14:17 +0000)]
* tests/regression.at (Web2c Report): Catch up: the rule 0 is now
visible, and some states have now a different number.

22 years ago* src/reader.c (readgram): Bind the initial rule's lineno to that
Akim Demaille [Sat, 29 Dec 2001 14:17:18 +0000 (14:17 +0000)]
* src/reader.c (readgram): Bind the initial rule's lineno to that
of the first rule.
* tests/regression.at (Rule Line Numbers, Unresolved SR Conflicts):
(Solved SR Conflicts): Adjust rule 0's line number.

22 years agoFix the `GAWK Grammar' failure.
Akim Demaille [Sat, 29 Dec 2001 14:16:59 +0000 (14:16 +0000)]
Fix the `GAWK Grammar' failure.
* src/LR0.c (final_state): Initialize to -1 so that we do compute
the reductions of the first state which was mistakenly confused
with the final state because precisely final_state was initialized
to 0.
* tests/sets.at (Nullable): Adjust: state 0 does have lookaheads,
now noticed by Bison.
* tests/regression.at (Rule Line Numbers): Adjust: state 0 does
have a reduction on $default.

22 years ago* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
Akim Demaille [Sat, 29 Dec 2001 14:16:46 +0000 (14:16 +0000)]
* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
rule line numbers.
* src/closure.c (print_closure): Likewise.
* src/derives.c (print_derives): Likewise.
* tests/sets.at (Nullable): Adjust: the rule numbers are correct
now.

22 years ago* src/lalr.c (lookaheads_print): New.
Akim Demaille [Sat, 29 Dec 2001 14:16:16 +0000 (14:16 +0000)]
* src/lalr.c (lookaheads_print): New.
(lalr): Call it when --trace-flag.
* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
are dumped.

22 years ago* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
Akim Demaille [Sat, 29 Dec 2001 14:15:33 +0000 (14:15 +0000)]
* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',
when walking through ritem, even via rule->rhs.
* src/reduce.c (dump_grammar, useful_production, reduce_output)
(useful_production, useless_nonterminals): Likewise.
(reduce_grammar_tables): Likewise, plus update nritems.
* src/nullable.c (set_nullable): Likewise.
* src/lalr.c (build_relations): Likewise.
* tests/sets.at (Nullable): Adjust.
Fortunately, now, the $axiom is no longer nullable.

22 years ago* src/LR0.c (generate_states): Use nritems, not nitems, nor using
Akim Demaille [Sat, 29 Dec 2001 14:15:12 +0000 (14:15 +0000)]
* src/LR0.c (generate_states): Use nritems, not nitems, nor using
the 0-sentinel.
* src/gram.c (ritem_longest_rhs): Likewise.
* src/reduce.c (nonterminals_reduce): Likewise.
* src/print_graph.c (print_graph): Likewise.
* src/output.c (output_rule_data): Likewise.
* src/nullable.c (set_nullable):  Likewise.

22 years ago* src/output.c: Comment changes.
Akim Demaille [Sat, 29 Dec 2001 14:14:32 +0000 (14:14 +0000)]
* src/output.c: Comment changes.

22 years ago* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
Akim Demaille [Thu, 27 Dec 2001 18:36:53 +0000 (18:36 +0000)]
* src/bison.simple (YYSTACK_ALLOC, YYSIZE_T): Remove special
cases for non-GNU systems like AIX, HP-UX, SGI, Sun, and
Sparc, as they were causing more porting problems than the
(minor) performance improvement was worth.
Also, catch up with 1.31's YYSTD.

22 years agoChangeLog fixes, and PO regen.
Akim Demaille [Thu, 27 Dec 2001 18:26:20 +0000 (18:26 +0000)]
ChangeLog fixes, and PO regen.

22 years ago* src/output.c (output_gram): Rely on nritems, not the
Akim Demaille [Thu, 27 Dec 2001 18:17:39 +0000 (18:17 +0000)]
* src/output.c (output_gram): Rely on nritems, not the
0-sentinel.  See below.
Use -1 as separator, not 0.
* src/bison.simple (yyparse): Subtract 1 to the rule numbers.
Rely on -1 as separator in yyrhs, instead of 0.
* tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
twice `Now at end of input', therefore there are two lines less to
expect.

22 years ago* tests/regression.at (Unresolved SR Conflicts):
Akim Demaille [Thu, 27 Dec 2001 18:13:59 +0000 (18:13 +0000)]
* tests/regression.at (Unresolved SR Conflicts):
(Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
below.
* src/LR0.c (new_state): Recognize the final state by the fact it
is reached by eoftoken.
(insert_start_shifting_state, insert_eof_shifting_state)
(insert_accepting_state, augment_automaton): Remove, since now
these states are automatically computed from the initial state.
(generate_states): Adjust.
* src/print.c: When reporting a rule number to the user, substract
1, so that the axiom rule is rule 0, and the first user rule is 1.
* src/reduce.c: Likewise.
* src/print_graph.c (print_core): For the time being, just as for
the report, depend upon --trace-flags to dump the full set of
items.
* src/reader.c (readgram): Once the grammar read, insert the rule
0: `$axiom: START-SYMBOL $'.
* tests/set.at: Adjust: rule 0 is now displayed, and since the
number of the states has changed (the final state is no longer
necessarily the last), catch up.
* tests/regression.at: Partly catch up.

22 years ago* src/LR0.c (new_state): Recognize the final state by the fact it
Akim Demaille [Thu, 27 Dec 2001 18:13:47 +0000 (18:13 +0000)]
* src/LR0.c (new_state): Recognize the final state by the fact it
is reached by eoftoken.
(insert_start_shifting_state, insert_eof_shifting_state)
(insert_accepting_state, augment_automaton): Remove, since now
these states are automatically computed from the initial state.
(generate_states): Adjust.
* src/print.c: When reporting a rule number to the user, substract
1, so that the axiom rule is rule 0, and the first user rule is 1.
* src/reduce.c: Likewise.
* src/print_graph.c (print_core): For the time being, just as for
the report, depend upon --trace-flags to dump the full set of
items.
* src/reader.c (readgram): Once the grammar read, insert the rule
0: `$axiom: START-SYMBOL $'.
* tests/set.at: Adjust: rule 0 is now displayed, and since the
number of the states has changed (the final state is no longer
necessarily the last), catch up.

22 years agoTry to make the use of the eoftoken valid. Given that its value
Akim Demaille [Thu, 27 Dec 2001 18:13:31 +0000 (18:13 +0000)]
Try to make the use of the eoftoken valid.  Given that its value
is 0 which was also used as a sentinel in ritem, (i) make sure >= 0
is used instead of > 0 where appropriate, (ii), depend upon nritems
instead of the 0-sentinel.
* src/gram.h, src/gram.c (nritems): New.
Expected to be duplication of nitems, but for the time being...
* src/reader.c (packgram): Assert nritems and nitems are equal.
* src/LR0.c (allocate_itemsets, new_itemsets): Adjust.
* src/closure.c (print_closure, print_fderives): Likewise.
* src/gram.c (ritem_print): Likewise.
* src/print.c (print_core, print_grammar): Likewise.
* src/print_graph.c: Likewise.

22 years ago* src/main.c (main): If there are complains after grammar
Akim Demaille [Thu, 27 Dec 2001 18:13:09 +0000 (18:13 +0000)]
* src/main.c (main): If there are complains after grammar
reductions, then output the report anyway if requested, then die.
* src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
* src/reader.c (eoftoken): New.
(parse_token_decl): If the token being defined has value `0', it
is the eoftoken.
(packsymbols): No longer hack `tags' to insert `$' by hand.
Be sure to preserve the value of the eoftoken.
(reader): Make sure eoftoken is defined.
Initialize nsyms to 0: now eoftoken is created just like the others.
* src/print.c (print_grammar): Don't special case the eof token.
* src/regression.at: Adjust: `$' has value 0, not -1, which was a
lie anyway, albeit pleasant.
* tests/calc.at: Exercise error messages with eoftoken.
Change the grammar so that empty input is invalid.
Adjust expectations.
When yyungeting, be sure to use a valid yylloc: use last_yylloc.

22 years ago* configure.in: Check the protos of strchr ans strspn.
Akim Demaille [Thu, 27 Dec 2001 18:12:48 +0000 (18:12 +0000)]
* configure.in: Check the protos of strchr ans strspn.
Replace strchr if needed.
* src/system.h: Provide the protos of strchr, strspn and memchr if
missing.
* lib/strchr.c: New.
* src/reader.c (symbols_save): Use strchr.

22 years ago* src/print.c, src/print_graph.c (escape): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:20 +0000 (18:11 +0000)]
* src/print.c, src/print_graph.c (escape): New.
Use it to quote the TAGS outputs.
* src/print_graph.c (print_state): Now errors are in red, and
reductions in green.
Prefer high to wide: output the state number on a line of its own.

22 years ago* src/state.h, src/state.c (reductions_new): New.
Akim Demaille [Thu, 27 Dec 2001 18:11:06 +0000 (18:11 +0000)]
* src/state.h, src/state.c (reductions_new): New.
* src/LR0.c (set_state_table): Let all the states have a
`reductions', even if reduced to 0.
(save_reductions): Adjust.
* src/lalr.c (initialize_LA, initialize_lookaheads): Adjust.
* src/print.c (print_reductions, print_actions): Adjust.
* src/output.c (action_row): Adjust.

22 years ago* src/state.h, src/state.c (errs_new, errs_dup): New.
Akim Demaille [Thu, 27 Dec 2001 18:10:48 +0000 (18:10 +0000)]
* src/state.h, src/state.c (errs_new, errs_dup): New.
* src/LR0.c (set_state_table): Let all the states have an errs,
even if reduced to 0.
* src/print.c (print_errs, print_reductions): Adjust.
* src/output.c (output_actions, action_row): Adjust.
* src/conflicts.c (resolve_sr_conflict): Adjust.

22 years ago* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.
Akim Demaille [Thu, 27 Dec 2001 18:10:30 +0000 (18:10 +0000)]
* src/lalr.c (set_goto_map, initialize_F): Use SHIFT_SYMBOL.

22 years ago* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
Akim Demaille [Thu, 27 Dec 2001 18:10:16 +0000 (18:10 +0000)]
* src/conflicts.c, src/conflicts.h (print_reductions): Move to...
* src/print.c: here.
(lookaheadset, shiftset): New, used as additional storage by
print_reductions.
(print_results): Adjust.
(print_shifts, print_gotos, print_errs): New, extracted from...
(print_actions): here.
* src/print_graph.c (print_actions): Remove dead code.

22 years ago* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
Akim Demaille [Thu, 27 Dec 2001 18:07:31 +0000 (18:07 +0000)]
* src/reader.c (copy_dollar, copy_at): Better checking of `n' in
`$n' and `@n'.

22 years ago* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
Akim Demaille [Thu, 27 Dec 2001 18:07:17 +0000 (18:07 +0000)]
* src/lalr.c (add_lookback_edge): Use state_t instead of ints.
(build_relations): Adjust.

22 years ago* src/lalr.c (set_goto_map): Remove a wrong but benign loop
Akim Demaille [Thu, 27 Dec 2001 18:07:05 +0000 (18:07 +0000)]
* src/lalr.c (set_goto_map): Remove a wrong but benign loop
duplication.

22 years ago* src/reader.c (packgram): Catch nitems overflows.
Akim Demaille [Thu, 27 Dec 2001 18:06:41 +0000 (18:06 +0000)]
* src/reader.c (packgram): Catch nitems overflows.

22 years ago* src/files.c, src/files.h (guard_obstack): Remove.
Akim Demaille [Thu, 27 Dec 2001 18:06:24 +0000 (18:06 +0000)]
* src/files.c, src/files.h (guard_obstack): Remove.
* src/output.c (output): Adjust.
* src/reader.c (parse_braces): New, factoring...
(copy_action, copy_guard): these two which are renamed as...
(parse_action, parse_guard): these.
As a voluntary consequence, using braces around guards is now
mandatory.

22 years ago* src/gram.h (rule_t): `guard' and `guard_line' are new members.
Akim Demaille [Thu, 27 Dec 2001 18:06:06 +0000 (18:06 +0000)]
* src/gram.h (rule_t): `guard' and `guard_line' are new members.
* src/reader.c (symbol_list): `guard' and `guard_line' are new
members.
(symbol_list_new): Adjust.
(copy_action): action_line is the first line, not the last.
(copy_guard): Just as for actions, store the `action' only, not
the switch/case/break flesh.
Don't parse the user action that might follow the guard, let...
(readgram): do it, i.e., now, there can be an action after a
guard.
In other words the guard is just explicitly optional.
(packgram): Adjust.
* src/output.c (guards_output): New.
(output_parser): Call it when needed.
(output): Also free the guard and attrs obstacks.
* src/files.c, src/files.h (obstack_save): Remove.
(output_files): Remove.
As a result, if one needs the former `.act' file, using an
appropriate skeleton which requires actions and guards is now
required.
* src/main.c (main): Adjust.
* tests/semantic.at: New.
* tests/regression.at: Use `input.y' as input file name.
Avoid 8+3 problems by requiring input.c when the test needs the
parser.

22 years ago* src/reader.c (symbol_list_new): Be sure to initialize all the
Akim Demaille [Thu, 27 Dec 2001 18:05:42 +0000 (18:05 +0000)]
* src/reader.c (symbol_list_new): Be sure to initialize all the
fields.

22 years agoAll the hacks using a final pseudo state are now useless.
Akim Demaille [Thu, 27 Dec 2001 18:05:30 +0000 (18:05 +0000)]
All the hacks using a final pseudo state are now useless.
* src/LR0.c (set_state_table): state_table holds exactly nstates.
* src/lalr.c (nLA): New.
(initialize_LA, compute_lookaheads, initialize_lookaheads): Use it
instead of lookaheadsp from the pseudo state (nstate + 1).

22 years ago* src/output.c (action_row, token_actions): Use a state_t instead
Akim Demaille [Thu, 27 Dec 2001 18:05:18 +0000 (18:05 +0000)]
* src/output.c (action_row, token_actions): Use a state_t instead
of a integer, and nlookaheads instead of the following state's
lookaheadsp.

22 years ago* src/conflicts.c (log_resolution, flush_shift)
Akim Demaille [Thu, 27 Dec 2001 18:05:05 +0000 (18:05 +0000)]
* src/conflicts.c (log_resolution, flush_shift)
(resolve_sr_conflict, set_conflicts, solve_conflicts)
(count_sr_conflicts, count_rr_conflicts, conflicts_output)
(conflicts_print, print_reductions): Use a state_t instead of an
integer when referring to a state.
As much as possible, depend upon nlookaheads, instead of the
`lookaheadsp' member of the following state (since lookaheads of
successive states are successive, the difference between state n + 1
and n served as the number of lookaheads for state n).
* src/lalr.c (add_lookback_edge): Likewise.
* src/print.c (print_core, print_actions, print_state)
(print_results): Likewise.
* src/print_graph.c (print_core, print_actions, print_state)
(print_graph): Likewise.
* src/conflicts.h: Adjust.