mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* data/lalr1.cc (yyreport_syntax_error_): Catch up with glr.c and
yacc.c: be sure to stay within yycheck_. * tests/actions.at: Re-enable C++ tests.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2004-12-16 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* data/lalr1.cc (yyreport_syntax_error_): Catch up with glr.c and
|
||||
yacc.c: be sure to stay within yycheck_.
|
||||
* tests/actions.at: Re-enable C++ tests.
|
||||
|
||||
2004-12-16 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/print_graph.c (print_graph): Remove layoutalgorithm uses for
|
||||
|
||||
@@ -810,24 +810,30 @@ yy::]b4_parser_class_name[::yyreport_syntax_error_ ()
|
||||
yyn_ = yypact_[yystate_];
|
||||
if (yypact_ninf_ < yyn_ && yyn_ < yylast_)
|
||||
{
|
||||
/* Start YYX at -YYN if negative to avoid negative indexes in
|
||||
YYCHECK. */
|
||||
int yyxbegin = yyn_ < 0 ? -yyn_ : 0;
|
||||
|
||||
/* Stay within bounds of both yycheck and yytname. */
|
||||
int yychecklim = yylast_ - yyn_;
|
||||
int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
|
||||
int count = 0;
|
||||
for (int x = yyxbegin; x < yyxend; ++x)
|
||||
if (yycheck_[x + yyn_] == x && x != yyterror_)
|
||||
++count;
|
||||
|
||||
message = "syntax error, unexpected ";
|
||||
message += yyname_[yyilooka_];
|
||||
{
|
||||
int count = 0;
|
||||
for (int x = (yyn_ < 0 ? -yyn_ : 0); x < yyntokens_ + yynnts_; ++x)
|
||||
if (yycheck_[x + yyn_] == x && x != yyterror_)
|
||||
++count;
|
||||
if (count < 5)
|
||||
{
|
||||
count = 0;
|
||||
for (int x = (yyn_ < 0 ? -yyn_ : 0); x < yyntokens_ + yynnts_; ++x)
|
||||
if (yycheck_[x + yyn_] == x && x != yyterror_)
|
||||
{
|
||||
message += (!count++) ? ", expecting " : " or ";
|
||||
message += yyname_[x];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (count < 5)
|
||||
{
|
||||
count = 0;
|
||||
for (int x = yyxbegin; x < yyxend; ++x)
|
||||
if (yycheck_[x + yyn_] == x && x != yyterror_)
|
||||
{
|
||||
message += (!count++) ? ", expecting " : " or ";
|
||||
message += yyname_[x];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
||||
@@ -468,10 +468,8 @@ AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union])
|
||||
# These tests currently fail on a Debian GNU/Linux 3.0r2 x86 host,
|
||||
# but the 2nd test succeeds on a Solaris 9 sparc hosts (Forte 7 cc).
|
||||
# Skip them until we figure out what the problem is.
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], ,
|
||||
[AT_CHECK([exit 77])])
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union],
|
||||
[AT_CHECK([exit 77])])
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"])
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union])
|
||||
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
|
||||
AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])
|
||||
|
||||
Reference in New Issue
Block a user