Class: Nydp::Assignment
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Helper
#cons, #list, #literal?, #pair?, #sig, #sym, #sym?
Methods included from Converter
#n2r, #r2n, #rubify
Constructor Details
#initialize(name, value, src) ⇒ Assignment
Returns a new instance of Assignment.
12
13
14
|
# File 'lib/nydp/assignment.rb', line 12
def initialize name, value, src
@name, @value, @src = name, value, src
end
|
Class Method Details
.build(args, bindings, ns) ⇒ Object
5
6
7
8
9
10
|
# 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
|
Instance Method Details
#compile_to_ruby(indent, srcs, opts = nil) ⇒ Object
24
25
26
27
28
|
# 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) ⇒ Object
32
33
34
35
36
|
# 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
|
30
|
# File 'lib/nydp/assignment.rb', line 30
def inspect; to_s ; end
|
#lexical_reach(n) ⇒ Object
16
17
18
|
# File 'lib/nydp/assignment.rb', line 16
def lexical_reach n
[@name.lexical_reach(n), @value.lexical_reach(n)].max
end
|
20
21
22
|
# File 'lib/nydp/assignment.rb', line 20
def to_s
"(assign #{@src.car} #{@src.cdr.car})"
end
|