* src/output.c (output_gram): Rely on nritems, not the
authorAkim Demaille <akim@epita.fr>
Thu, 27 Dec 2001 18:17:39 +0000 (18:17 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 27 Dec 2001 18:17:39 +0000 (18:17 +0000)
0-sentinel.  See below.
Use -1 as separator, not 0.
* src/bison.simple (yyparse): Subtract 1 to the rule numbers.
Rely on -1 as separator in yyrhs, instead of 0.
* tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
twice `Now at end of input', therefore there are two lines less to
expect.

ChangeLog
src/bison.simple
src/output.c
tests/calc.at

index 984bbc9..da19c05 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2001-12-27  Akim Demaille  <akim@epita.fr>
 
+       * src/output.c (output_gram): Rely on nritems, not the
+       0-sentinel.  See below.
+       Use -1 as separator, not 0.
+       * src/bison.simple (yyparse): Subtract 1 to the rule numbers.
+       Rely on -1 as separator in yyrhs, instead of 0.
+       * tests/calc.at (AT_CHECK_CALC): Now, the parsers no longer issue
+       twice `Now at end of input', therefore there are two lines less to
+       expect.
+
+       
+2001-12-27  Akim Demaille  <akim@epita.fr>
+
        * tests/regression.at (Unresolved SR Conflicts):
        (Solved SR Conflicts, Rule Line Numbers): Adjust to the changes
        below.
index 593eadf..5403492 100644 (file)
@@ -222,7 +222,7 @@ static const short yyprhs[] =
   %%prhs
 };
 
-/* YYRHS -- A `0'-separated list of the rules' RHS. */
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
   %%rhs
@@ -899,10 +899,10 @@ yyreduce:
       int yyi;
 
       YYFPRINTF (YYSTDERR, "Reducing via rule %d (line %d), ",
-                yyn, yyrline[yyn]);
+                yyn - 1, yyrline[yyn]);
 
       /* Print the symbols being reduced, and their result.  */
-      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
        YYFPRINTF (YYSTDERR, "%s ", yytname[yyrhs[yyi]]);
       YYFPRINTF (YYSTDERR, " -> %s\n", yytname[yyr1[yyn]]);
     }
index 49e6394..4ad8f4e 100644 (file)
@@ -195,19 +195,16 @@ output_gram (void)
   muscle_insert ("prhs", obstack_finish (&format_obstack));
 
   {
-    size_t yyrhs_size = 1;
-    short *yyrhs, *sp;
+    short *yyrhs;
     int i;
 
-    for (sp = ritem + 1; *sp; sp++)
-      ++yyrhs_size;
-    yyrhs = XMALLOC (short, yyrhs_size);
+    yyrhs = XMALLOC (short, nritems);
 
-    for (sp = ritem + 1, i = 1; *sp; ++sp, ++i)
-      yyrhs[i] = *sp >= 0 ? *sp : 0;
+    for (i = 1; i < nritems; ++i)
+      yyrhs[i] = ritem[i] >= 0 ? ritem[i] : -1;
 
     output_table_data (&format_obstack, yyrhs,
-                      ritem[0], 1, yyrhs_size);
+                      ritem[0], 1, nritems);
     muscle_insert ("rhs", obstack_finish (&format_obstack));
 
     XFREE (yyrhs);
index 49cf4e2..db308df 100644 (file)
@@ -371,7 +371,7 @@ _AT_CHECK_CALC([$1],
 1 - (2 - 3) = 2
 
 2^2^3 = 256
-(2^2)^3 = 64], [488])
+(2^2)^3 = 64], [486])
 
 # Some parse errors.
 _AT_CHECK_CALC_ERROR([$1], [0 0], [10],