diff --git a/lib/imbecile/parser/item.rb b/lib/imbecile/parser/item.rb index 81e8c8a..0ab3c6f 100644 --- a/lib/imbecile/parser/item.rb +++ b/lib/imbecile/parser/item.rb @@ -27,6 +27,16 @@ class Imbecile self == other end + def closed_items + if @rule.components[@position].is_a?(Array) + @rule.components[@position].map do |rule| + Item.new(rule, 0) + end + else + [] + end + end + end end diff --git a/lib/imbecile/parser/item_set.rb b/lib/imbecile/parser/item_set.rb index bb5f232..b77d4dc 100644 --- a/lib/imbecile/parser/item_set.rb +++ b/lib/imbecile/parser/item_set.rb @@ -13,8 +13,7 @@ class Imbecile this_eval_items = eval_items eval_items = Set.new this_eval_items.each do |item| - if item.next_component.is_a?(Rule) - end + eval_items += item.closed_items end @items += eval_items end