Akim Demaille [Sun, 20 Oct 2002 12:51:10 +0000 (12:51 +0000)]
* data/c.m4 (b4_c_ansi_args): Recognize functions with no
arguments and output `void'.
(b4_c_function): Rename as...
(b4_c_function_def): this.
(b4_c_function_decl, b4_c_ansi_function_def)
(b4_c_ansi_function_decl): New.
Change the interpretation of the arguments: before `int, foo', now
`int foo, foo'.
* data/yacc.c (yyparse): Prototype and define thanks to these.
Adjust b4_c_function_def uses.
* data/glr.c (yyparse): Likewise, but ANSI only.
Paul Eggert [Sun, 20 Oct 2002 06:37:08 +0000 (06:37 +0000)]
Do not create a temporary file, as that involves security and
cleanup headaches. Instead, use a pair of pipes.
Derived from a suggestion by Florian Krohm.
Also, some other minor changes to avoid GCC warnings.
Paul Eggert [Sun, 20 Oct 2002 06:35:41 +0000 (06:35 +0000)]
Do not create a temporary file, as that involves security and
cleanup headaches. Instead, use a pair of pipes. Derived from
a suggestion by Florian Krohm.
Paul Eggert [Sun, 20 Oct 2002 06:31:23 +0000 (06:31 +0000)]
Include "subpipe.h".
(m4_invoke): Remove decl.
(scan_skel): New decl.
(output_skeleton): Use pipe rather than temporary file for m4 input.
Check that m4sugar.m4 is readable, to avoid deadlock.
Check for pipe I/O error.
Paul Eggert [Sun, 20 Oct 2002 05:34:55 +0000 (05:34 +0000)]
(TICKS_TO_MSEC, CLOCKS_TO_MSEC): Do not cast to
float, as this generates a warning on Solaris 8 + GCC 3.2 with
--enable-gcc-warnings. Instead, divide into 1.0 rather than 1;
this generates a more-accurate value anyway.
(timervar_accumulate): Rename local variables to avoid confusion
with similarly-named global 'start_time'.
Akim Demaille [Sat, 19 Oct 2002 14:39:07 +0000 (14:39 +0000)]
* tests/calc.at (_AT_DATA_CALC_Y): Define VAL, LOC, LEX_FORMALS,
LEX_PRE_FORMALS, LEX_ARGS, LEX_PRE_ARGS, USE_LEX_ARGS.
Use them to have `calc.y' ready for %pure-parser.
* data/yacc.c (YYLEX): Pass a yylex return type to
b4_c_function_call.
Akim Demaille [Sat, 19 Oct 2002 14:38:06 +0000 (14:38 +0000)]
Prototype support of %lex-param and %parse-param.
* src/parse-gram.y: Add the definition of the %lex-param and
%parse-param tokens, plus their rules.
Drop the `_' version of %glr-parser.
Add the "," token.
* src/scan-gram.l (INITIAL): Scan them.
* src/muscle_tab.c: Comment changes.
(muscle_insert, muscle_find): Rename `pair' as `probe'.
* src/muscle_tab.h (MUSCLE_INSERT_PREFIX): Remove unused.
(muscle_entry_s): The `value' member is no longer const.
Adjust all dependencies.
* src/muscle_tab.c (muscle_init): Adjust: use
MUSCLE_INSERT_STRING.
Initialize the obstack earlier.
* src/muscle_tab.h, src/muscle_tab.c (muscle_grow)
(muscle_pair_list_grow): New.
* data/c.m4 (b4_c_function_call, b4_c_args): New.
* data/yacc.c (YYLEX): Use b4_c_function_call to honor %lex-param.
* tests/calc.at: Use %locations, not --locations.
(AT_CHECK_CALC_GLR): Use %glr-parser, not %glr_parser.
Akim Demaille [Sat, 19 Oct 2002 14:36:40 +0000 (14:36 +0000)]
* src/getargs.c (usage): Take status as argument and exit
accordingly.
Report the traditional `Try ... --help' message when status != 0.
(usage, version): Don't take a FILE * as arg, it is pointless.
(getargs): When there is an incorrect number of arguments, make it
an error, and report it GNUlically thanks to `usage ()'.
Paul Eggert [Sat, 19 Oct 2002 01:33:39 +0000 (01:33 +0000)]
* data/glr.c (yyreportParseError): Don't assume that sprintf
yields the length of the printed string, as this is not true
on SunOS 4.1.4. Reported by Peter Klein.
Paul Eggert [Sat, 19 Oct 2002 01:10:26 +0000 (01:10 +0000)]
* tests/calc.at (_AT_DATA_CALC_Y): #undef memcmp and realloc.
* tests/conflicts.at (%nonassoc and eof): Likewise.
Fixes SunOS 4.1.4 test failure reported by Peter Klein.
Paul Eggert [Thu, 17 Oct 2002 01:29:58 +0000 (01:29 +0000)]
* NEWS: Officially drop support for building Bison with K&R C,
since it didn't work anyway and it's not worth worrying about.
* Makefile.maint (wget_files): Remove ansi2knr.c.
(ansi2knr.c-url_prefix): Remove.
* lib/.cvsignore: Remove ansi2knr, ansi2knr.*.
* lib/Makefile.am (AUTOMAKE_OPTIONS): Remove.
* src/Makefile.am (AUTOMAKE_OPTIONS): Remove.
Paul Eggert [Wed, 16 Oct 2002 06:29:12 +0000 (06:29 +0000)]
Stop using the "enum_" trick for K&R-style function definitions;
it confused me, and I was the author! Instead, assume that people
who want to use K&R C compilers (when using these modules in GCC,
perhaps?) will run ansi2knr.
Paul Eggert [Wed, 16 Oct 2002 06:23:21 +0000 (06:23 +0000)]
(bitsetv_alloc, bitsetv_create, bitsetv_free, bitsetv_zero,
bitsetv_ones, bitsetv_transitive_closure, bitsetv_dump,
debug_bitsetv): Use function prototypes; this removes the need for
declaring static functions simply to provide their prototypes.
Paul Eggert [Wed, 16 Oct 2002 06:19:22 +0000 (06:19 +0000)]
(bitset_set, bitset_reset, bitset_test): Use function prototypes; this
removes the need for declaring static functions simply to provide
their prototypes.
Paul Eggert [Wed, 16 Oct 2002 06:18:00 +0000 (06:18 +0000)]
(bitset_alloc, bitset_and_or_, bitset_and_or_cmp_, bitset_andn_or_,
bitset_andn_or_cmp_, bitset_bytes, bitset_copy_, bitset_count_,
bitset_create, bitset_dump, bitset_first, bitset_free, bitset_init,
bitset_last, bitset_next, bitset_obstack_alloc, bitset_obstack_free,
bitset_only_set_p, bitset_op4_cmp, bitset_or_and_, bitset_or_and_cmp_,
bitset_prev, bitset_print, bitset_release_memory, bitset_toggle_,
bitset_type_choose, bitset_type_get, bitset_type_name_get,
debug_bitset): Use function prototypes; this removes the need for
declaring static functions simply to provide their prototypes.
Paul Eggert [Mon, 14 Oct 2002 08:44:02 +0000 (08:44 +0000)]
* tests/action.at, tests/calc.at, tests/conflicts.at,
tests/cxx-type.at, tests/headers.at, tests/input.at,
tests/regression.at, tests/synclines.at, tests/torture.at:
Say "bison -o foo.c foo.y", not "bison foo.y -o foo.c",
so that the tests still work even if POSIXLY_CORRECT is set.
* doc/bison.texinfo (Rpcalc Compile, Invocation): Likewise.
Paul Eggert [Mon, 14 Oct 2002 08:07:01 +0000 (08:07 +0000)]
* data/c.m4 (b4_int_type): Use yysigned_char instead of signed char,
for portability to K&R hosts. Fix typo: signed char is guaranteed
only to 127, not to 128.
* data/glr.c (yysigned_char): New type.
* data/yacc.c (yysigned_char): Likewise.
* tests/regression.at (Web2c Actions): signed char -> yysigned_char.
Paul Eggert [Sun, 13 Oct 2002 20:36:45 +0000 (20:36 +0000)]
* data/c.m4 (b4_token_defines): Protect against double-inclusion
by wrapping enum yytokentype's definition inside #ifndef
YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
Paul Eggert [Sun, 13 Oct 2002 20:35:06 +0000 (20:35 +0000)]
(b4_token_defines): Protect against double-inclusion
by wrapping enum yytokentype's definition inside #ifndef
YYTOKENTYPE. This undoes a bug I introduced on 2002-10-12.
Akim Demaille [Sun, 13 Oct 2002 18:50:40 +0000 (18:50 +0000)]
Let nondeterministic skeletons be usable with deterministic
tables.
With the patch, GAWK compiled by GCC without -O2 passes its test
suite using a GLR parser driven by LALR tables. It fails with -O2
because `struct stat' gives two different answers on my machine:
88 (definition of an auto var) and later 96 (memset on this var).
Hence the stack is badly corrumpted. The headers inclusion is to
blame: if I move the awk.h inclusion before GLR's system header
inclusion, the two struct stat have the same size.
* src/tables.c (pack_table): Always create conflict_table.
(token_actions): Always create conflict_list.
* data/glr.c (YYFLAG): Remove, unused.
Akim Demaille [Sun, 13 Oct 2002 18:49:44 +0000 (18:49 +0000)]
* configure.ac (AC_GNU_SOURCE): Use it instead of hand written code.
(O0FLAGS): New.
(VALGRIND, GXX): New.
* tests/atlocal.in (CFLAGS): Use O0FLAGS.
* tests/bison.in: Run $PREBISON a pre-command.
* tests/Makefile.am (maintainer-check, maintainer-check-valgrind)
(maintainer-check-g++): New.
* Makefile.am (maintainer-check): New.
Akim Demaille [Sun, 13 Oct 2002 14:25:14 +0000 (14:25 +0000)]
GLR parsers sometimes raise parse errors instead of performing the
default reduction.
Reported by Charles-Henry de Boysson.
* tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Don't
check the length of the traces when %glr.
(_AT_CHECK_CALC_ERROR): Also skip `^Stack' lines, coming from
GLR's traces.
(AT_CHECK_CALC_LALR, AT_CHECK_CALC_GLR): New.
Test GLR parsers.
* data/glr.c (YYLEFTMOST_STATE): Fix its value.
(yyltype): Remove the yy prefix from the member names.
(yytable): Complete its comment.
(yygetLRActions): Map error action number from YYTABLE from
YYTABLE_NINF to 0.
(yyisErrorAction): No longer compare YYACTION to YYPACT_NINF
(which was a bug: it should have been YYTABEL_NINF, and yet it was
not satisfying as we could compare an YYACTION computed from
YYDEFACT to YYTABLE_NINF although they are unrelated): 0 is the
only value for error actions.
(yyreportParseError): In verbose parse error messages, don't issue
`error' in the list of expected tokens.
* data/yacc.c (yyparse) <yybackup>: Rewrite the decoding of the
next action to perform to match glr.c's decoding.
(yytable): Complete its comment.
Paul Eggert [Sun, 13 Oct 2002 08:40:10 +0000 (08:40 +0000)]
Fix problem reported by Henrik Grubbstroem in
<http://mail.gnu.org/pipermail/bug-bison/2002-October/001670.html>:
"nonterm: { $$ = 123; } { $$ = $1; };" was wrongly rejected,
because the Bison parser reads the second action before reducing
the first one.
* src/scan-gram.l (rule_length): New static var.
Use it to keep track of the rule length in the scanner, since
we can't expect the parser to be in lock-step sync with the scanner.
(handle_action_dollar, handle_action_at): Use this var.
* tests/actions.at (Exotic Dollars): Test for the problem.
Paul Eggert [Sun, 13 Oct 2002 08:38:39 +0000 (08:38 +0000)]
(rule_length): New static var.
Use it to keep track of the rule length in the scanner, since
we can't expect the parser to be in lock-step sync with the scanner.
(handle_action_dollar, handle_action_at): Use this var.
Paul Eggert [Sun, 13 Oct 2002 05:56:20 +0000 (05:56 +0000)]
[! IN_GCC && HAVE_SYS_TIME_H]: Include <sys/time.h>.
Update copyright date and clarify comments.
(get_time) [IN_GCC]: Keep the GCC version for reference.
Merge GCC changes. Change "GCC" to "Bison" in the copyright notice.
Paul Eggert [Sun, 13 Oct 2002 03:53:18 +0000 (03:53 +0000)]
* 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
<http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
Paul Eggert [Sun, 13 Oct 2002 03:52:53 +0000 (03:52 +0000)]
(grammar_current_rule_check):
Don't worry about the default action if $$ is untyped.
Prevents bogus warnings reported by Jim Gifford in
<http://mail.gnu.org/pipermail/bug-bison/2002-October/001673.html>.
Paul Eggert [Sat, 12 Oct 2002 23:21:00 +0000 (23:21 +0000)]
* 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
<http://mail.gnu.org/pipermail/bug-bison/2002-October/001672.html>.
Paul Eggert [Fri, 11 Oct 2002 20:54:17 +0000 (20:54 +0000)]
* data/yacc.c (yyreport_parse_error): Remove, putting its body into...
(yyparse): here. This undoes some of the 2002-07-25 change.
Compatibility problem reported by Ralf S. Engelschall with
OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
Paul Eggert [Fri, 11 Oct 2002 20:53:39 +0000 (20:53 +0000)]
(yyreport_parse_error): Remove, putting its body into...
(yyparse): here. This undoes some of the 2002-07-25 change.
Compatibility problem reported by Ralf S. Engelschall with
OSSP cfg <http://www.ossp.org/pkg/lib/cfg/>.
Akim Demaille [Fri, 11 Oct 2002 11:23:19 +0000 (11:23 +0000)]
* tests/regression.at Characters Escapes): New.
* src/scan-gram.l (SC_ESCAPED_CHARACTER): Accept ' in strings and
characters.
Reported by Jan Nieuwenhuizen.
Paul Eggert [Thu, 10 Oct 2002 07:25:21 +0000 (07:25 +0000)]
(bitsetv_alloc): Return a size that is aligned properly for vectors of
objects. Do not assume that adding a header size to a multiple of a
word size yields a value that is properly aligned for the whole union.
(bitsetv_alloc): Add a cast to (void *) to avoid a GCC warning.
Paul Eggert [Thu, 10 Oct 2002 07:15:56 +0000 (07:15 +0000)]
(enum_bitset_ops, enum_bitset_type): New types.
All instances of parameters of type enum bitset_opts are now of
type enum_bitset_opts, to conform to the C Standard, and similarly
for enum_bitset_type.
(bitset): Now points to a union, not to a struct.
All instances of "struct bitset_struct *" replaced with "bitset".
(bitset_and_or_, bitset_andn_or_, bitset_or_and_): New decls.