Class: Riml::Compiler::AssignNodeVisitor
Instance Method Summary
collapse
Methods inherited from Visitor
#initialize, #visit
Instance Method Details
#compile(node) ⇒ Object
294
295
296
297
298
299
300
301
302
303
304
305
306
307
|
# File 'lib/compiler.rb', line 294
def compile(node)
lhs = visit_lhs(node)
rhs = visit_rhs(node)
if GetVariableNode === node.lhs && node.scope && (func = node.scope.function)
if func.argument_variable_names.include?(node.lhs.full_name)
if !func.shadowed_argument_variable_names.include?(node.lhs.full_name)
func.shadowed_argument_variable_names << node.lhs.full_name
end
end
end
node.compiled_output = "#{lhs}#{rhs}"
node.force_newline = true
node.compiled_output
end
|
#visit_lhs(node) ⇒ Object
309
310
311
312
|
# File 'lib/compiler.rb', line 309
def visit_lhs(node)
node.lhs.accept(visitor_for_node(node.lhs, :propagate_up_tree => false))
"let #{node.lhs.compiled_output} #{node.operator} "
end
|
#visit_rhs(node) ⇒ Object
314
315
316
317
|
# File 'lib/compiler.rb', line 314
def visit_rhs(node)
node.rhs.accept(visitor_for_node(node.rhs, :propagate_up_tree => false))
node.rhs.compiled_output
end
|