X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/fa7f94f2175db1991b4ea349b9bb8ce3b96e0340..b59b91bb6e46b51bfc7960bacd654ca7b710f3c7:/src/nullable.c?ds=inline diff --git a/src/nullable.c b/src/nullable.c index 2797180c..8e8809e2 100644 --- a/src/nullable.c +++ b/src/nullable.c @@ -107,23 +107,16 @@ set_nullable (void) } 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);