Class: Rus3::Evaluator::Translator
- Inherits:
-
Object
- Object
- Rus3::Evaluator::Translator
- Defined in:
- lib/rus3/evaluator/translator.rb
Overview
A class to translate an i-exp to r-exp.
Constant Summary collapse
- TRANSLATOR_VERSION =
"0.1.0"
Instance Method Summary collapse
- #add_procedure_map(map) ⇒ Object
-
#initialize ⇒ Translator
constructor
A new instance of Translator.
-
#translate(ast_node) ⇒ Object
Translates an AST node into Ruby code.
- #verbose=(verbose) ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize ⇒ Translator
Returns a new instance of Translator.
16 17 18 19 |
# File 'lib/rus3/evaluator/translator.rb', line 16 def initialize @verbose = false @procedure_map = {} end |
Instance Method Details
#add_procedure_map(map) ⇒ Object
25 26 27 |
# File 'lib/rus3/evaluator/translator.rb', line 25 def add_procedure_map(map) @procedure_map.merge!(map) end |
#translate(ast_node) ⇒ Object
Translates an AST node into Ruby code.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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) ⇒ Object
21 22 23 |
# File 'lib/rus3/evaluator/translator.rb', line 21 def verbose=(verbose) @verbose = verbose end |
#version ⇒ Object
12 13 14 |
# File 'lib/rus3/evaluator/translator.rb', line 12 def version "(scheme-ruby-translator :version #{TRANSLATOR_VERSION})" end |