Class: Nydp::Assignment

Inherits:
Object
  • Object
show all
Includes:
Helper
Defined in:
lib/nydp/assignment.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helper

#cons, #list, #literal?, #pair?, #sym, #sym?

Constructor Details

#initialize(name, value, value_src) ⇒ Assignment

Returns a new instance of Assignment.



26
27
28
29
30
# File 'lib/nydp/assignment.rb', line 26

def initialize name, value, value_src
  @value_src = value_src
  n = AssignmentInstruction.new name
  @instructions = cons(value, cons(n))
end

Class Method Details

.build(args, bindings) ⇒ Object



19
20
21
22
23
24
# File 'lib/nydp/assignment.rb', line 19

def self.build args, bindings
  name = Compiler.compile args.car, bindings
  raise "can't assign to #{name.inspect} : expression was #{args}" unless name.respond_to?(:assign)
  value_expr = args.cdr.car
  Assignment.new name, Compiler.compile(value_expr, bindings), value_expr
end

Instance Method Details

#execute(vm) ⇒ Object



36
37
38
# File 'lib/nydp/assignment.rb', line 36

def execute vm
  vm.push_instructions @instructions, vm.peek_context
end

#to_sObject



32
33
34
# File 'lib/nydp/assignment.rb', line 32

def to_s
  "#assignment #{@instructions.cdr.car} #{@value_src}"
end