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