class Rus3::Evaluator::SchemeEvaluator
Constants
- ARITHMETIC_OPS_MAP
- COMPARISON_OPS_MAP
- EVALUATOR_VERSION
Public Class Methods
new()
click to toggle source
Calls superclass method
Rus3::Evaluator::Evaluator::new
# File lib/rus3/evaluator/scheme_evaluator.rb, line 18 def initialize super @env = Environment.new @translator = Translator.new @translator.add_procedure_map(ARITHMETIC_OPS_MAP) @translator.add_procedure_map(COMPARISON_OPS_MAP) end
Public Instance Methods
binding()
click to toggle source
# File lib/rus3/evaluator/scheme_evaluator.rb, line 46 def binding @env.binding end
eval(ast)
click to toggle source
# File lib/rus3/evaluator/scheme_evaluator.rb, line 40 def eval(ast) ruby_source = translate_ast(ast) pp ruby_source if @verbose @env.binding.eval(ruby_source) end
instance_eval(&proc)
click to toggle source
# File lib/rus3/evaluator/scheme_evaluator.rb, line 36 def instance_eval(&proc) @env.binding.receiver.instance_eval(&proc) end
instance_variable_set(var, value)
click to toggle source
# File lib/rus3/evaluator/scheme_evaluator.rb, line 32 def instance_variable_set(var, value) @env.binding.receiver.instance_variable_set(var, value) end
verbose=(verbose)
click to toggle source
Calls superclass method
Rus3::Evaluator::Evaluator#verbose=
# File lib/rus3/evaluator/scheme_evaluator.rb, line 27 def verbose=(verbose) super @translator and @translator.verbose = verbose end
version()
click to toggle source
Calls superclass method
Rus3::Evaluator::Evaluator#version
# File lib/rus3/evaluator/scheme_evaluator.rb, line 10 def version vmsg = "(scheme-evaluator :version #{EVALUATOR_VERSION})" if @translator vmsg += " #{@translator.version}" end super + " (#{vmsg})" end
Private Instance Methods
translate_ast(ast)
click to toggle source
# File lib/rus3/evaluator/scheme_evaluator.rb, line 68 def translate_ast(ast) ast.map{|node| @translator.translate(node)}.join("\n") end