Paul Eggert [Mon, 2 Jun 2003 08:19:29 +0000 (08:19 +0000)]
* data/lalr1.cc (yy::Position::lines, yy::Position::columns,
yy::Location::lines, yy::Location::columns): Rename arguments
to avoid shadowing; this removes a warning generated by GCC 3.3.
Paul Eggert [Mon, 2 Jun 2003 08:19:08 +0000 (08:19 +0000)]
(yy::Position::lines, yy::Position::columns,
yy::Location::lines, yy::Location::columns): Rename arguments
to avoid shadowing; this removes a warning generated by GCC 3.3.
Paul Eggert [Mon, 2 Jun 2003 07:25:30 +0000 (07:25 +0000)]
(WARNING_CXXFLAGS): New subst. Set it to
everything that WARNING_CFLAGS has, except omit warnings
not suitable for C++.
(AC_PROG_CXX): Use this instead of AC_CHECK_PROGS([CXX], [g++]).
Paul Eggert [Mon, 2 Jun 2003 06:18:31 +0000 (06:18 +0000)]
(yyfillin): Renamed from the old yyfill. Mark
as possibly unused.
(yyfill): New function.
(YYFILL): Use it.
(yyuserAction): Change type of yynormal to bool, so that it matches
the new yyfill signature. Mark it as possibly unused.
Paul Eggert [Mon, 2 Jun 2003 03:58:34 +0000 (03:58 +0000)]
(_AT_DATA_CALC_Y): Include unistd.h if available.
Define 'alarm' to do nothing if unistd.h is not available.
Add a new rule "exp: '-' error;" to test the above change to
data/yacc.c. Use 'alarm' to abort any test taking longer than
10 seconds, as it's probably looping.
(AT_CHECK_CALC): Test recovery from error in new grammar rule.
Also, the new yacc.c generates two fewer diagnostics for an
existing test.
Paul Eggert [Mon, 2 Jun 2003 03:57:39 +0000 (03:57 +0000)]
(YYERROR): Now just 'goto yyerrorlab', since the
macro's size was becoming unwieldy.
(yyerrlab): Do not discard an empty lookahead symbol, as this
might destroy garbage.
(yyerrorlab): New label, with the old contents of YYERROR,
plus the following change: pop the stack of rhs corresponding
to the production that invoked YYERROR. That is how Yacc
behaves, and POSIX requires this behavior.
(yyerrlab1): Use YYPOPSTACK instead of its definiens.
Paul Eggert [Sun, 25 May 2003 06:44:31 +0000 (06:44 +0000)]
* data/glr.c (YYSTACKEXPANDABLE): Do not evaluate
YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
This fixes a problem reported by John Bowman when the Compaq/HP
Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
-ansi -Wall -gall).
* data/yacc.c (union yyalloc): Likewise.
(YYCOPY): Do not evaluate __GNUC__ unless it is defined.
Paul Eggert [Sun, 25 May 2003 06:44:08 +0000 (06:44 +0000)]
(union yyalloc): Do not evaluate
YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
This fixes a problem reported by John Bowman when the Compaq/HP
Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
-ansi -Wall -gall).
(YYCOPY): Do not evaluate __GNUC__ unless it is defined.
Paul Eggert [Sun, 25 May 2003 06:43:19 +0000 (06:43 +0000)]
(YYSTACKEXPANDABLE): Do not evaluate
YYSTYPE_IS_TRIVIAL or YYSTYPE_IS_TRIVIAL unless they are defined.
This fixes a problem reported by John Bowman when the Compaq/HP
Alpha cxx compiler happy (e.g. using cxx -D__USE_STD_IOSTREAM
-ansi -Wall -gall).
Paul Eggert [Wed, 14 May 2003 19:30:22 +0000 (19:30 +0000)]
Require a semicolon after a grammar declaration, in the interest of
possible future changes to the Bison input language.
Do not allow a stray semicolon at the start of the grammar.
Allow one or more semicolons after any rule, including
just before "|" as required by POSIX.
Paul Eggert [Wed, 14 May 2003 19:26:16 +0000 (19:26 +0000)]
(rules_or_grammar_declaration): Require a
semicolon after a grammar declaration, in the interest of possible
future changes to the Bison input language.
Do not allow a stray semicolon at the start of the grammar.
(rhses.1): Allow one or more semicolons after any rule, including
just before "|" as required by POSIX.
* data/lalr1.cc (b4_parse_param_decl, b4_parse_param_cons,
b4_cc_constructor_calls, b4_cc_constructor_call,
b4_parse_param_vars, b4_cc_var_decls, b4_cc_var_decl): New m4
definitions.
(yy::b4_parser_class_name::b4_parser_class_name): Take extra
parse-param arguments.
(yy::b4_parser_class_name): Declare instance variables to
hold parse-param arguments.
* tests/calc.at: s/value/semantic_value/ because value clashes
with a member of yy::b4_parser_class_name. Adjust C++ code
to handle %parse-param. Enable %parse-param test in C++.
Paul Eggert [Mon, 12 May 2003 19:34:21 +0000 (19:34 +0000)]
(How Can I Reset @code{yyparse}): Reword the
English a bit. Fix fclose typo. Change "const char" to "char
const", and use ANSI C rather than K&R for "main". Suggest
YY_FLUSH_BUFFER over yyrestart (as that is what Flex recommends)
and suggest yy_switch_to_buffer.
Paul Eggert [Mon, 5 May 2003 20:39:04 +0000 (20:39 +0000)]
(__INT_TO_PTR): Define to a value that presumes C89.
This avoids a diagnostic on compilers that define __STDC__
to 0, fixing a problem with Tru64 cc reported by Martin Mokrejs in
<http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.
Paul Eggert [Sun, 4 May 2003 06:29:51 +0000 (06:29 +0000)]
(BITSET_FOR_EACH, BITSET_FOR_EACH_REVERSE):
Do not overrun array bounds.
This should fix a bug reported today by Olatunji Oluwabukunmi in
<http://mail.gnu.org/archive/html/bug-bison/2003-05/msg00004.html>.
Paul Eggert [Mon, 28 Apr 2003 06:03:58 +0000 (06:03 +0000)]
Avoid gcc -Wundef warnings reported by Gerald Pfeifer in
<http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00044.html>.
(YYSTACK_ALLOC): Don't evaluate YYSTACK_USE_ALLOCA if it is not defined.
(YYMAXDEPTH): Don't evaluate YYMAXDEPTH if it is not defined.
Paul Eggert [Sun, 27 Apr 2003 05:56:34 +0000 (05:56 +0000)]
(yy::Parser::pact_ninf_, yy::Parser::table_ninf_):
Declare to be of type suitable for the ninf value itself, not of
type suitable for the corresponding table, since the latter might
be unsigned but the ninf value might be negative. This fixes a
bug reported by Alexandre Duret-Lutz in
<http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00017.html>.
Paul Eggert [Sun, 27 Apr 2003 05:27:15 +0000 (05:27 +0000)]
(AC_FUNC_ERROR_AT_LINE): Remove, since gl_ERROR
invokes it. We shouldn't invoke it twice because it will attempt
to put error.o in the archive twice. This fixes a glitch reported
by Martin Mokrejs in
<http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00041.html>.
Paul Eggert [Mon, 21 Apr 2003 19:37:40 +0000 (19:37 +0000)]
* data/glr.c (yyexpandGLRStack) [!YYSTACKEXPANDABLE]:
Fix obvious typo that results in uncompilable GLR parsers
when both %pure-parser and %locations are used. (trivial change)
Paul Eggert [Mon, 21 Apr 2003 19:37:09 +0000 (19:37 +0000)]
(yyexpandGLRStack) [!YYSTACKEXPANDABLE]:
Fix obvious typo that results in uncompilable GLR parsers
when both %pure-parser and %locations are used. (trivial change
from Yakov Markovitch <Markovitch@iso.ru>)
Paul Eggert [Fri, 18 Apr 2003 07:26:19 +0000 (07:26 +0000)]
Add %option nounput, since we no longer use unput.
(unexpected_eof): Renamed from unexpected_end_of_file, for brevity.
Do not insert the expected token via unput, as this runs afoul
of a POSIX-compatibility bug in flex 2.5.31.
All uses changed to BEGIN the parent state,
since we no longer insert the expected token via unput.
Paul Eggert [Fri, 18 Apr 2003 05:07:08 +0000 (05:07 +0000)]
(set_conflicts): Resolve all conflicts, not just
the first one. This change is from Paul Hilfinger, and it fixes
regression reported by Werner Lemberg in
<http://mail.gnu.org/archive/html/bug-bison/2003-04/msg00026.html>.
(resolve_sr_conflict): Don't invoke state_errs_set
unless one or more tokens have been explicitly made errors.
Otherwise, the above change causes Bison to abort.
Paul Eggert [Thu, 13 Mar 2003 07:13:05 +0000 (07:13 +0000)]
Fix "Bison blows chunks on empty file" bug.
Work around SunOS 4.1.4 porting problem with <sys/resource.h>.
Don't check for sys/wait.h twice, with two different algorithms.
Paul Eggert [Thu, 13 Mar 2003 07:07:17 +0000 (07:07 +0000)]
(YY_USER_INIT): Initialize code_start, too.
(<INITIAL><<EOF>>, <SC_PRE_CODE><<EOF>>): Set *loc to the scanner
cursor, instead of leaving it undefined. This fixes a bug
reported by Tim Van Holder in
<http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00023.html>.
Paul Eggert [Thu, 13 Mar 2003 00:25:33 +0000 (00:25 +0000)]
(BISON_PREREQ_TIMEVAR): When checking whether <sys/resource.h> can be
included, include sys/time.h and sys/times.h first, if available.
This works around the SunOS 4.1.4 porting bug reported by Bruce Becker
in <http://mail.gnu.org/archive/html/bug-bison/2003-03/msg00018.html>.
Akim Demaille [Sun, 2 Mar 2003 13:39:44 +0000 (13:39 +0000)]
* data/yacc.c, data/glr.c, data/lal1.cc: Use similar code to
generate verbose error messages.
Use the number of tokens as an upper bound in yytname, as it
cannot be a non terminal.
Akim Demaille [Sun, 2 Mar 2003 11:22:19 +0000 (11:22 +0000)]
Write a test the yycheck overrun reported by Andrew Suffield.
* tests/regression.at (_AT_DATA_DANCER_Y, AT_CHECK_DANCER): New.
Use them to exercise yycheck overrun.
Based on Andrew Suffield's grammar.
Akim Demaille [Sun, 2 Mar 2003 11:14:07 +0000 (11:14 +0000)]
Create tests/local.at for Bison generic testing macros.
* tests/calc.at (AT_CHECK_PUSHDEFS, AT_CHECK_POPDEFS): Move to...
* tests/local.at (AT_BISON_OPTION_PUSHDEFS, AT_BISON_OPTION_POPDEFS):
This new file.
* tests/calc.at (AT_CHECK_CALC): Adjust.
* tests/testsuite.at (AT_DATA_GRAMMAR_PROLOGUE, AT_DATA_GRAMMAR)
(AT_COMPILE, AT_COMPILE_CXX, AT_PARSER_CHECK): Move to...
* tests/local.at: here.
(AT_COMPILE_CXX): Tags the tests using it as c++.
Ignore the test if CXX is not functional.
Paul Eggert [Sun, 2 Mar 2003 06:55:15 +0000 (06:55 +0000)]
(code_start): Initialize it to scanner_cursor,
not loc->end, since loc->end might contain garbage and this leads
to undefined behavior on some platforms.
(id_loc, token_start): Use (IF_LINTed) initial values that do not
depend on *loc, so that the reader doesn't give the the false
impression that *loc is initialized.
(<INITIAL>"%%"): Do not bother setting code_start, since its value
does not survive the return.
Akim Demaille [Sat, 1 Mar 2003 10:55:31 +0000 (10:55 +0000)]
* src/scan-gram.l (code_start): Always initialize it when entering
into yylex, as SC_EPILOGUE is activated *before* the corresponding
yylex invocation. An alternative would be making it static, but
then it starts with the second %%'s beginning, instead of its end.