- rule_t* rule;
- item_t* newitem;
- rule = rule_copy (rules->data);
- newitem = item_new (symbol_copy (symbol), rule);
- if (!item_set_add (item_set, newitem))
- item_delete (newitem);
+ GList* lookahead;
+ lookahead = terminals;
+ while (lookahead != NULL)
+ {
+ rule_t* rule;
+ item_t* newitem;
+ rule = rule_copy (rules->data);
+ newitem = item_new (symbol_copy (symbol), rule,
+ symbol_copy (lookahead->data));
+ if (!item_set_add (item_set, newitem))
+ item_delete (newitem);
+ lookahead = g_list_next (lookahead);
+ }