class Refill::Translator
Public Class Methods
new(output: @output = output)
click to toggle source
# File lib/refill/translator.rb, line 3 def initialize output: @output = output end
Public Instance Methods
translate(node)
click to toggle source
# File lib/refill/translator.rb, line 7 def translate node # TODO logger puts "translating node #{node.class}" case node when AST::Expressions translate_and_write_expressions node else raise 'UnknownNode' end end
Private Instance Methods
translate_and_write_expressions(expressions)
click to toggle source
# File lib/refill/translator.rb, line 21 def translate_and_write_expressions expressions expressions.expressions.each do |e| case e when AST::Expressions translate_and_write_expressions e when AST::Expression @output.write "#{translate_expression e}\n" else raise 'UnknownExpressions' end end end
translate_expression(expression)
click to toggle source
# File lib/refill/translator.rb, line 34 def translate_expression expression case expression when AST::Addition return "( #{translate_expression expression.left} + #{translate_expression expression.right} )" when AST::Integer return "( #{expression.value.to_s} )" when AST::Literal return "( \"#{expression.value.to_s}\" )" else raise 'UnknownExpression' end end