2018-07-19 13:46:51 +02:00
|
|
|
require_relative "normalizer"
|
|
|
|
|
|
|
|
module Ruby
|
|
|
|
class WhileStatement < Statement
|
|
|
|
include Normalizer
|
|
|
|
attr_reader :condition , :body , :hoisted
|
|
|
|
|
|
|
|
def initialize( condition , body , hoisted = nil)
|
|
|
|
@hoisted = hoisted
|
|
|
|
@condition = condition
|
|
|
|
@body = body
|
|
|
|
end
|
|
|
|
|
2018-07-19 13:59:10 +02:00
|
|
|
def to_vool
|
2018-07-19 13:46:51 +02:00
|
|
|
cond , rest = *normalize_name(@condition)
|
2018-07-20 16:51:17 +02:00
|
|
|
Vool::WhileStatement.new(cond.to_vool , @body.to_vool , rest&.to_vool)
|
2018-07-19 13:46:51 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def to_s(depth = 0)
|
|
|
|
at_depth(depth , "while (#{@condition})" , @body.to_s(depth + 1) , "end" )
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|