diff --git a/src/closure.c b/src/closure.c index ff3109c..f32f7f6 100755 --- a/src/closure.c +++ b/src/closure.c @@ -1,6 +1,6 @@ /* Closures for Bison - Copyright (C) 1984, 1989, 2000, 2001, 2002, 2004, 2005, 2007 Free + Copyright (C) 1984, 1989, 2000, 2001, 2002, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -123,17 +123,16 @@ print_fderives (void) static void set_firsts (void) { - symbol_number i, j; + rule_number r; firsts = bitsetv_create (nvars, nvars, BITSET_FIXED); - for (i = ntokens; i < nsyms; i++) - for (j = 0; derives[i - ntokens][j]; ++j) - { - item_number sym = derives[i - ntokens][j]->rhs[0]; - if (ISVAR (sym)) - bitset_set (FIRSTS (i), sym - ntokens); - } + for (r = 0; r < nrules; r++) + { + item_number sym = rules[r].rhs[0]; + if (ISVAR (sym)) + bitset_set (FIRSTS (rules[r].lhs->number), sym - ntokens); + } if (trace_flag & trace_sets) bitsetv_matrix_dump (stderr, "RTC: Firsts Input", firsts);