]> git.saurik.com Git - bison.git/commitdiff
* src/nullable.c (set_nullable): Use a for loop to de-obfuscate
authorAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:27:35 +0000 (09:27 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 5 Dec 2001 09:27:35 +0000 (09:27 +0000)
the handling of squeue.
`symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.

ChangeLog
src/nullable.c

index d08aba9f38fc815afba0f63d4f357ae3b2bf40dc..f59d0292711d46a42844e1187ec351666799fc41 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-12-05  Akim Demaille  <akim@epita.fr>
+
+       * src/nullable.c (set_nullable): Use a for loop to de-obfuscate
+       the handling of squeue.
+       `symbol >= 0' is wrong now, use `rule_table[ruleno].useful'.
+
+       
 2001-12-05  Akim Demaille  <akim@epita.fr>
 
        Because useless nonterminals are now kept alive (instead of being
 2001-12-05  Akim Demaille  <akim@epita.fr>
 
        Because useless nonterminals are now kept alive (instead of being
index 2797180c4496e51341627394bbb84bb352c36831..8e8809e20b993f6f865aade2202fefe4f5c5e6bf 100644 (file)
@@ -107,23 +107,16 @@ set_nullable (void)
     }
 
   while (s1 < s2)
     }
 
   while (s1 < s2)
-    {
-      p = rsets[*s1++];
-      while (p)
-       {
-         int ruleno = p->value;
-         p = p->next;
-         if (--rcount[ruleno] == 0)
+    for (p = rsets[*s1++]; p; p = p->next)
+      {
+       int ruleno = p->value;
+       if (--rcount[ruleno] == 0)
+         if (rule_table[ruleno].useful && !nullable[rule_table[ruleno].lhs])
            {
            {
-             int symbol = rule_table[ruleno].lhs;
-             if (symbol >= 0 && !nullable[symbol])
-               {
-                 nullable[symbol] = 1;
-                 *s2++ = symbol;
-               }
+             nullable[rule_table[ruleno].lhs] = 1;
+             *s2++ = rule_table[ruleno].lhs;
            }
            }
-       }
-    }
+      }
 
   XFREE (squeue);
   XFREE (rcount);
 
   XFREE (squeue);
   XFREE (rcount);