Clean up parser ItemSet processing

This commit is contained in:
Josh Holtrop 2022-06-14 22:57:07 -04:00
parent 0f1c00d1a6
commit a91bf2f250

View File

@ -8,13 +8,11 @@ class Propane
@item_sets = [] @item_sets = []
@item_sets_set = {} @item_sets_set = {}
start_item = Item.new(start_rule, 0) start_item = Item.new(start_rule, 0)
eval_item_sets = Set.new eval_item_sets = Set[ItemSet.new([start_item])]
eval_item_sets << ItemSet.new([start_item])
while eval_item_sets.size > 0 while eval_item_sets.size > 0
this_eval_item_sets = eval_item_sets item_set = eval_item_sets.first
eval_item_sets = Set.new eval_item_sets.delete(item_set)
this_eval_item_sets.each do |item_set|
unless @item_sets_set.include?(item_set) unless @item_sets_set.include?(item_set)
item_set.id = @item_sets.size item_set.id = @item_sets.size
@item_sets << item_set @item_sets << item_set
@ -27,7 +25,6 @@ class Propane
end end
end end
end end
end
@item_sets.each do |item_set| @item_sets.each do |item_set|
process_item_set(item_set) process_item_set(item_set)