]> git.saurik.com Git - bison.git/commitdiff
* tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
authorAkim Demaille <akim@epita.fr>
Sun, 26 May 2002 18:38:41 +0000 (18:38 +0000)
committerAkim Demaille <akim@epita.fr>
Sun, 26 May 2002 18:38:41 +0000 (18:38 +0000)
`Error:' lines.
* data/bison.simple (yystos) [YYDEBUG]: New.
(yyparse) [YYDEBUG]: Display the symbols which are popped during
error recovery.
* tests/regression.at (Web2c Actions): Adjust: yystos is output now.

ChangeLog
NEWS
data/bison.simple
tests/calc.at
tests/regression.at

index 5bc854ad858acc0a3e6566657edcf9df59e9517c..f074e59c8836761ad3fc03123934f3f2d09a2436 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2002-05-26  Akim Demaille  <akim@epita.fr>
+
+       * tests/calc.at (AT_CHECK_CALC): Adjust: there are now additional
+       `Error:' lines.
+       * data/bison.simple (yystos) [YYDEBUG]: New.
+       (yyparse) [YYDEBUG]: Display the symbols which are popped during
+       error recovery.
+       * tests/regression.at (Web2c Actions): Adjust: yystos is output now.
+
 2002-05-25  Akim Demaille  <akim@epita.fr>
 
        * doc/bison.texinfo (Debugging): Split into...
diff --git a/NEWS b/NEWS
index c13dc759a44b697042a673d05cef353c7ed6be8e..0d083b56694dedd171ea16cfe39f6892aaaa03b2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,9 @@ Changes in version 1.49b:
   and has long been required by POSIX.  For more details, please see
   <http://mail.gnu.org/pipermail/bug-bison/2002-May/001452.html>.
 
+* Traces
+  Popped tokens and nonterminals are now reported.
+
 * Large grammars
   Large grammars are now supported (large token numbers, large grammar
   size (= sum of the LHS and RHS lengths), large LALR tables).
index 7a491feb8d9ae9b93b4fddd5163492cbea2abf43..b595946ab64025254726f2a7a7f3b59b36077cde 100644 (file)
@@ -362,7 +362,7 @@ static const b4_uint_type(b4_rline_max) yyrline[[]] =
 };
 #endif
 
-#if (YYDEBUG) || YYERROR_VERBOSE
+#if YYDEBUG || YYERROR_VERBOSE
 /* YYTNME[[SYMBOL-NUM]] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
 static const char *const yytname[[]] =
@@ -389,9 +389,9 @@ static const b4_uint_type(b4_r2_max) yyr2[[]] =
   b4_r2
 };
 
-/* YYDEFACT[[S]] -- default rule to reduce with in state S when YYTABLE
-   doesn't specify something else to do.  Zero means the default is an
-   error.  */
+/* YYDEFACT[[STATE-NAME]] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
 static const short yydefact[[]] =
 {
   b4_defact
@@ -429,6 +429,14 @@ static const short yycheck[[]] =
   b4_check
 };
 
+#if YYDEBUG
+/* YYSTOS[[STATE-NUM]] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const b4_uint_type(b4_stos_max) yystos[[]] =
+{
+  b4_stos
+};
+#endif
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
 # define YYSIZE_T __SIZE_TYPE__
@@ -1137,6 +1145,27 @@ yyerrlab1:
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
        YYABORT;
+
+#if YYDEBUG
+      if (yydebug)
+       {
+         if (yystos[yystate] < YYNTOKENS)
+           {
+             YYFPRINTF (stderr, "Error: popping token %d (%s",
+                        yytoknum[yystos[yystate]], yytname[yystos[yystate]]);
+# ifdef YYPRINT
+             YYPRINT (stderr, yytoknum[yystos[yystate]], *yyvsp);
+# endif
+             YYFPRINTF (stderr, ")\n");
+           }
+         else
+           {
+             YYFPRINTF (stderr, "Error: popping nonterminal (%s)\n",
+                        yytname[yystos[yystate]]);
+           }
+       }
+#endif
+
       yyvsp--;
       yystate = *--yyssp;
 #if YYLSP_NEEDED
index 2cc0757f3a5f51e1ae7b7c569c93c93a38b4d9cb..4ea26354e826ef7e9c5555b34acbdaa0247f1732 100644 (file)
@@ -1,5 +1,5 @@
 # Checking the output filenames.                         -*- Autotest -*-
-# Copyright 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002 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
@@ -406,18 +406,18 @@ _AT_CHECK_CALC([$1],
 (2^2)^3 = 64], [486])
 
 # Some parse errors.
-_AT_CHECK_CALC_ERROR([$1], [0 0], [10],
+_AT_CHECK_CALC_ERROR([$1], [0 0], [11],
                      [1.3-1.4: parse error, unexpected "number"])
-_AT_CHECK_CALC_ERROR([$1], [1//2], [13],
+_AT_CHECK_CALC_ERROR([$1], [1//2], [15],
                      [1.3-1.4: parse error, unexpected '/', expecting "number" or '-' or '('])
 _AT_CHECK_CALC_ERROR([$1], [error], [4],
                      [1.1-1.2: parse error, unexpected $undefined., expecting "number" or '-' or '\n' or '('])
-_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [19],
+_AT_CHECK_CALC_ERROR([$1], [1 = 2 = 3], [22],
                      [1.7-1.8: parse error, unexpected '='])
 _AT_CHECK_CALC_ERROR([$1],
                      [
 +1],
-                     [13],
+                     [14],
                      [2.1-2.2: parse error, unexpected '+'])
 # Exercise error messages with EOF: work on an empty file.
 _AT_CHECK_CALC_ERROR([$1],
@@ -430,7 +430,7 @@ _AT_CHECK_CALC_ERROR([$1],
 # associated to `error'.
 _AT_CHECK_CALC_ERROR([$1],
                      [(1 ++ 2) + (0 0) = 1],
-                     [76],
+                     [82],
 [1.5-1.6: parse error, unexpected '+', expecting "number" or '-' or '('
 1.15-1.16: parse error, unexpected "number"
 calc: error: 0 != 1])
index 6d73aaafcc1820356958005041d13425666041ae..d1d819e692f7ddeaeb1176c94b2f34bf84e5b1c8 100644 (file)
@@ -1,5 +1,5 @@
 # Bison Regressions.                               -*- Autotest -*-
-# Copyright 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002 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
@@ -549,6 +549,11 @@ static const short yycheck[] =
 {
        7,     3,     9,     4,     0,    -1,     6,     5
 };
+static const unsigned char yystos[] =
+{
+       0,     3,     8,     9,    10,     4,     0,     6,    11,     5,
+       8,     8
+};
 ]])
 
 AT_CLEANUP