class Nydp::Loop
def to_s "#{@loop_body.to_s}" end
end
Attributes
condition[R]
loop_body[R]
Public Class Methods
build(expressions, bindings, ns)
click to toggle source
# File lib/nydp/loop.rb, line 54 def self.build expressions, bindings, ns if expressions.is_a? Nydp::Pair cond = Compiler.compile expressions.car, bindings, ns loop_body = Compiler.compile expressions.cdr.car, bindings, ns csig = sig(cond) new(cond, loop_body) else raise "can't compile Loop: #{expressions._nydp_inspect}" end end
new(cond, loop_body)
click to toggle source
# File lib/nydp/loop.rb, line 38 def initialize cond, loop_body @condition, @loop_body = cond, loop_body end
Public Instance Methods
compile_to_ruby(indent, srcs, opts=nil)
click to toggle source
# File lib/nydp/loop.rb, line 65 def compile_to_ruby indent, srcs, opts=nil "#{indent}##> #{to_s.split(/\n/).join('\n')}\n" + "#{indent}while (#{condition.compile_to_ruby "", srcs}) #{loop_body.compile_to_ruby(indent + " ", srcs, cando: true)} #{indent}end" end
inspect()
click to toggle source
# File lib/nydp/loop.rb, line 46 def inspect "loop:#{condition._nydp_inspect}:#{loop_body._nydp_inspect}" end
lexical_reach(n)
click to toggle source
# File lib/nydp/loop.rb, line 42 def lexical_reach n [condition.lexical_reach(n), loop_body.lexical_reach(n)].max end
to_s()
click to toggle source
# File lib/nydp/loop.rb, line 50 def to_s "(loop #{condition.to_s} #{loop_body.to_s})" end