Class: Nydp::SymbolLookup

Inherits:
Object
  • Object
show all
Extended by:
Helper
Defined in:
lib/nydp/symbol_lookup.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helper

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

Constructor Details

#initialize(expression) ⇒ SymbolLookup

Returns a new instance of SymbolLookup.



9
10
11
# File 'lib/nydp/symbol_lookup.rb', line 9

def initialize expression
  @expression = expression
end

Instance Attribute Details

#expressionObject (readonly)

Returns the value of attribute expression.



7
8
9
# File 'lib/nydp/symbol_lookup.rb', line 7

def expression
  @expression
end

Class Method Details

.build(name, bindings) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/nydp/symbol_lookup.rb', line 21

def self.build name, bindings
  depth = 0
  while Nydp.NIL.isnt? bindings
    here = bindings.car
    if here.key? name
      return new ContextSymbol.new(depth, name)
    else
      depth += 1
      bindings = bindings.cdr
    end
  end
  new name
end

Instance Method Details

#assign(value, context = nil) ⇒ Object



17
18
19
# File 'lib/nydp/symbol_lookup.rb', line 17

def assign value, context=nil
  @expression.assign value, context
end

#execute(vm) ⇒ Object



13
14
15
# File 'lib/nydp/symbol_lookup.rb', line 13

def execute vm
  vm.push_arg expression.value vm.peek_context
end

#inspectObject



39
40
41
# File 'lib/nydp/symbol_lookup.rb', line 39

def inspect
  "#lookup_symbol:#{@expression.inspect}"
end

#to_sObject



35
36
37
# File 'lib/nydp/symbol_lookup.rb', line 35

def to_s
  "#lookup:#{expression}:"
end