+rule_t* rule_new_item (item_t* item)
+{
+
+ rule_t* rule;
+ GList* l;
+ rule = rule_new ();
+ l = g_list_next (item->dot);
+ while (l != NULL)
+ {
+ rule_append (rule, symbol_copy (l->data));
+ l = g_list_next (l);
+ }
+ rule_append (rule, symbol_copy (item->lookahead));
+ return rule;
+
+}
+
+void item_set_closure_step (GHashTable* item_set, grammar_t* grammar,
+ GHashTable* first, item_t* item)