Class: Nydp::Evaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/nydp/runner.rb

Direct Known Subclasses

Runner

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vm, ns) ⇒ Evaluator

Returns a new instance of Evaluator.



42
43
44
45
46
47
# File 'lib/nydp/runner.rb', line 42

def initialize vm, ns
  @vm = vm
  @ns = ns
  @precompile = Symbol.mk(:"pre-compile", ns)
  @quote      = Symbol.mk(:quote, ns)
end

Instance Attribute Details

#nsObject

Returns the value of attribute ns.



40
41
42
# File 'lib/nydp/runner.rb', line 40

def ns
  @ns
end

#vmObject

Returns the value of attribute vm.



40
41
42
# File 'lib/nydp/runner.rb', line 40

def vm
  @vm
end

Instance Method Details

#compile_and_eval(expr) ⇒ Object



49
50
51
# File 'lib/nydp/runner.rb', line 49

def compile_and_eval expr
  vm.thread Pair.new(Compiler.compile(expr, Nydp.NIL), Nydp.NIL)
end

#evaluate(expr) ⇒ Object



65
66
67
# File 'lib/nydp/runner.rb', line 65

def evaluate expr
  compile_and_eval(pre_compile(expr))
end

#pre_compile(expr) ⇒ Object



61
62
63
# File 'lib/nydp/runner.rb', line 61

def pre_compile expr
  compile_and_eval(precompile(expr))
end

#precompile(expr) ⇒ Object



57
58
59
# File 'lib/nydp/runner.rb', line 57

def precompile expr
  Pair.from_list [@precompile, quote(expr)]
end

#quote(expr) ⇒ Object



53
54
55
# File 'lib/nydp/runner.rb', line 53

def quote expr
  Pair.from_list [@quote, expr]
end