Class: Nydp::Runner

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

Instance Attribute Summary

Attributes inherited from Evaluator

#ns, #vm

Instance Method Summary collapse

Methods inherited from Evaluator

#compile_and_eval, #evaluate, #pre_compile, #precompile, #quote

Constructor Details

#initialize(vm, ns, stream, printer = nil) ⇒ Runner

Returns a new instance of Runner.



71
72
73
74
75
76
# File 'lib/nydp/runner.rb', line 71

def initialize vm, ns, stream, printer=nil
  super vm, ns
  @printer    = printer
  @parser     = Nydp::Parser.new(ns)
  @tokens     = Nydp::Tokeniser.new stream
end

Instance Method Details



78
79
80
# File 'lib/nydp/runner.rb', line 78

def print val
  @printer.puts val if @printer
end

#runObject



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/nydp/runner.rb', line 82

def run
  res = Nydp.NIL
  while !@tokens.finished
    expr = @parser.expression(@tokens)
    unless expr.nil?
      begin
        print(res = evaluate(expr))
      rescue Exception => e
        puts e.message
        e.backtrace.each do |b|
          puts b
        end
      end
    end
  end
  res
end