class Rus3::Evaluator::Translator

A class to translate an i-exp to r-exp.

Constants

TRANSLATOR_VERSION

Public Class Methods

new() click to toggle source
# File lib/rus3/evaluator/translator.rb, line 16
def initialize
  @verbose = false
  @procedure_map = {}
end

Public Instance Methods

add_procedure_map(map) click to toggle source
# File lib/rus3/evaluator/translator.rb, line 25
def add_procedure_map(map)
  @procedure_map.merge!(map)
end
translate(ast_node) click to toggle source

Translates an AST node into Ruby code.

# File lib/rus3/evaluator/translator.rb, line 31
def translate(ast_node)
  return nil if ast_node.nil?

  if @verbose
    print "- translater ==> "
    pp ast_node
  end

  type = ast_node.type.to_s.delete_prefix("ast_")
  method_name = "translate_#{type}".intern
  begin
    m = method(method_name)
  rescue
    raise SchemeSyntaxError.new([ast_node.type, ast_node.to_s])
  end
  m.call(ast_node)
end
verbose=(verbose) click to toggle source
# File lib/rus3/evaluator/translator.rb, line 21
def verbose=(verbose)
  @verbose = verbose
end
version() click to toggle source
# File lib/rus3/evaluator/translator.rb, line 12
def version
  "(scheme-ruby-translator :version #{TRANSLATOR_VERSION})"
end