rubyx/lib/mom/while_statement.rb
2018-03-12 18:13:26 +05:30

26 lines
573 B
Ruby

module Mom
class WhileStatement < Statement
attr_reader :condition , :statements
attr_accessor :hoisted
def initialize( cond , statements)
@condition = cond
@statements = statements
end
def flatten(options = {})
cond_label = Label.new( "cond_label_#{object_id}")
head = cond_label
head.append hoisted.flatten
merge_label = Label.new( "merge_label_#{object_id}")
head.append condition.flatten( true_label: cond_label , false_label: merge_label)
head.append merge_label
head
end
end
end