class Nydp::Assignment
Public Class Methods
build(args, bindings, ns)
click to toggle source
# File lib/nydp/assignment.rb, line 5 def self.build args, bindings, ns name = Compiler.compile args.car, bindings, ns raise "can't assign to #{name._nydp_inspect} : expression was #{args}" unless name.respond_to?(:assign) value_expr = args.cdr.car Assignment.new name, Compiler.compile(value_expr, bindings, ns), args end
new(name, value, src)
click to toggle source
# File lib/nydp/assignment.rb, line 12 def initialize name, value, src @name, @value, @src = name, value, src end
Public Instance Methods
compile_to_ruby(indent, srcs, opts=nil)
click to toggle source
# File lib/nydp/assignment.rb, line 24 def compile_to_ruby indent, srcs, opts=nil "#{indent}##> #{to_s.split(/\n/).join('\n')}\n" + "#{indent}(#{@name.compile_to_ruby "", srcs} =\n" + "#{indent}#{@value.compile_to_ruby indent, srcs})" end
execute(vm)
click to toggle source
# File lib/nydp/assignment.rb, line 32 def execute vm @name.assign @value.execute(vm), vm.current_context rescue raise "assigning #{@value._nydp_inspect} to #{@name._nydp_inspect}" end
inspect()
click to toggle source
# File lib/nydp/assignment.rb, line 30 def inspect; to_s ; end
lexical_reach(n)
click to toggle source
# File lib/nydp/assignment.rb, line 16 def lexical_reach n [@name.lexical_reach(n), @value.lexical_reach(n)].max end
to_s()
click to toggle source
# File lib/nydp/assignment.rb, line 20 def to_s "(assign #{@src.car} #{@src.cdr.car})" end