[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FYI: Have more complete shift traces
From: |
Akim Demaille |
Subject: |
FYI: Have more complete shift traces |
Date: |
Thu, 16 Sep 2004 16:14:18 +0200 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) |
Index: ChangeLog
from Akim Demaille <address@hidden>
Have more complete shift traces.
* data/yacc.c, data/lalr1.c, data/glr.c: Use YY_SYMBOL_PRINT
to report Shifts instead of ad hoc YYDPRINTF invocations,
including for the error token.
* data/lalr1.cc (symprint_): Output the location.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): In C++, don't
output the location within the %printer.
Activate GLR tests, at least to make sure they compile properly.
They still don't pass though.
* tests/calc.at: Adjust expect verbose output, since now "Entering
state..." is on a different line than the "Shifting" message.
Index: data/glr.c
===================================================================
RCS file: /cvsroot/bison/bison/data/glr.c,v
retrieving revision 1.74
diff -u -u -r1.74 glr.c
--- data/glr.c 6 Sep 2004 10:29:52 -0000 1.74
+++ data/glr.c 16 Sep 2004 14:12:22 -0000
@@ -1578,11 +1578,11 @@
if (yyisShiftAction (yyaction))
{
- YYDPRINTF ((stderr, "Shifting token %s on stack %d, ",
- yytokenName (*yytokenp), yyk));
+ YYDPRINTF ((stderr, "On stack %d, ", yyk));
+ YY_SYMBOL_PRINT ("shifting", yytokenp, yylvalp, yyllocp);
yyglrShift (yystack, yyk, yyaction, yyposn+1,
*yylvalp, yyllocp]b4_user_args[);
- YYDPRINTF ((stderr, "which is now in state #%d\n",
+ YYDPRINTF ((stderr, ", now in state #%d\n",
yystack->yytops.yystates[yyk]->yylrState));
break;
}
@@ -1750,7 +1750,8 @@
if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
&& yyisShiftAction (yytable[yyj]))
{
- YYDPRINTF ((stderr, "Shifting error token, "));
+ YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
+ yylvalp, yyllocp);
yyglrShift (yystack, 0, yytable[yyj],
yys->yyposn, *yylvalp, yyllocp]b4_user_args[);
break;
@@ -1856,8 +1857,7 @@
break;
if (yyisShiftAction (yyaction))
{
- YYDPRINTF ((stderr, "Shifting token %s, ",
- yytokenName (yytoken)));
+ YY_SYMBOL_PRINT ("Shifting", yytoken, yylvalp, yyllocp);
if (yytoken != YYEOF)
yytoken = YYEMPTY;
yyposn += 1;
Index: data/lalr1.cc
===================================================================
RCS file: /cvsroot/bison/bison/data/lalr1.cc,v
retrieving revision 1.53
diff -u -u -r1.53 lalr1.cc
--- data/lalr1.cc 6 Sep 2004 14:32:05 -0000 1.53
+++ data/lalr1.cc 16 Sep 2004 14:12:22 -0000
@@ -400,7 +400,8 @@
(void) yylocationp;
cdebug_ << (yytype < ntokens_ ? "token" : "nterm")
- << ' ' << name_[yytype] << " (";
+ << ' ' << name_[yytype] << " ("
+ << *yylocationp << ": ";
switch (yytype)
{
]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
@@ -419,8 +420,6 @@
(void) yyvaluep;
(void) yylocationp;
- if (!yymsg)
- yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
switch (yytype)
@@ -520,10 +519,7 @@
goto yyacceptlab;
/* Shift the look-ahead token. */
-#if YYDEBUG
- YYCDEBUG << "Shifting token " << looka_
- << " (" << name_[ilooka_] << "), ";
-#endif
+ YY_SYMBOL_PRINT ("Shifting", ilooka_, &value, &location);
/* Discard the token being shifted unless it is eof. */
if (looka_ != eof_)
@@ -697,8 +693,6 @@
if (n_ == final_)
goto yyacceptlab;
- YYCDEBUG << "Shifting error token, ";
-
{
Location errloc;
errloc.begin = error_start_;
@@ -707,6 +701,10 @@
location_stack_.push (errloc);
}
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", stos_[n_],
+ &semantic_stack_[0], &location_stack_[0]);
+
state_ = n_;
goto yynewstate;
Index: data/yacc.c
===================================================================
RCS file: /cvsroot/bison/bison/data/yacc.c,v
retrieving revision 1.67
diff -u -u -r1.67 yacc.c
--- data/yacc.c 6 Sep 2004 10:29:52 -0000 1.67
+++ data/yacc.c 16 Sep 2004 14:12:22 -0000
@@ -946,7 +946,7 @@
YYACCEPT;
/* Shift the look-ahead token. */
- YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
@@ -1185,12 +1185,13 @@
if (yyn == YYFINAL)
YYACCEPT;
- YYDPRINTF ((stderr, "Shifting error token, "));
-
*++yyvsp = yylval;
]b4_location_if([ YYLLOC_DEFAULT (yyloc, yylsp, yylerrsp - yylsp);
*++yylsp = yyloc;])[
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
yystate = yyn;
goto yynewstate;
Index: tests/actions.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/actions.at,v
retrieving revision 1.35
diff -u -u -r1.35 actions.at
--- tests/actions.at 8 Sep 2004 14:36:25 -0000 1.35
+++ tests/actions.at 16 Sep 2004 14:12:22 -0000
@@ -196,7 +196,7 @@
%printer
{
- ]AT_LALR1_CC_IF([cdebug_ << @$ << ": " << $$;],
+ ]AT_LALR1_CC_IF([cdebug_ << $$;],
[fprintf (yyoutput, "address@hidden", $$, RANGE (@$))])[;
}
input line thing 'x' 'y'
@@ -471,7 +471,5 @@
AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union])
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"])
AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union])
-
-# FIXME. These test cases fail.
-#AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
-#AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])
Index: tests/calc.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/calc.at,v
retrieving revision 1.64
diff -u -u -r1.64 calc.at
--- tests/calc.at 6 Sep 2004 07:48:20 -0000 1.64
+++ tests/calc.at 16 Sep 2004 14:12:22 -0000
@@ -1,5 +1,5 @@
# Simple calculator. -*- Autotest -*-
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -463,21 +463,21 @@
2^2^3 = 256
(2^2)^3 = 64],
- [486])
+ [570])
# Some syntax errors.
-_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [12],
+_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13],
[1.2: syntax error, unexpected "number"])
-_AT_CHECK_CALC_ERROR([$1], [1], [1//2], [16],
+_AT_CHECK_CALC_ERROR([$1], [1], [1//2], [18],
[1.2: syntax error, unexpected '/', expecting "number" or
'-' or '(' or '!'])
_AT_CHECK_CALC_ERROR([$1], [1], [error], [5],
[1.0: syntax error, unexpected $undefined])
-_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [23],
+_AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26],
[1.6: syntax error, unexpected '='])
_AT_CHECK_CALC_ERROR([$1], [1],
[
+1],
- [15],
+ [16],
[2.0: syntax error, unexpected '+'])
# Exercise error messages with EOF: work on an empty file.
_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
@@ -501,7 +501,7 @@
#
_AT_CHECK_CALC_ERROR([$1], [0],
[() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1],
- [156],
+ [188],
[1.1: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
1.17: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
1.22: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
@@ -510,10 +510,10 @@
# The same, but this time exercising explicitly triggered syntax errors.
# POSIX says the look-ahead causing the error should not be discarded.
-_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [62],
+_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75],
[1.9: syntax error, unexpected "number"
calc: error: 2222 != 1])
-_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [70],
+_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85],
[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
1.11: syntax error, unexpected "number"
calc: error: 2222 != 1])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- FYI: Have more complete shift traces,
Akim Demaille <=