Clean up parser ItemSet processing
This commit is contained in:
parent
0f1c00d1a6
commit
a91bf2f250
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user