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