Class: Ikra::Translator::VariableClassifier
Instance Method Summary
collapse
#visit_array_node, #visit_begin_node, #visit_block_def_node, #visit_bool_node, #visit_break_node, #visit_class_def_node, #visit_const_node, #visit_float_node, #visit_for_node, #visit_hash_node, #visit_if_node, #visit_int_node, #visit_ivar_read_node, #visit_meth_def_node, #visit_nil_node, #visit_node, #visit_program_node, #visit_return_node, #visit_root_node, #visit_send_node, #visit_source_code_expr_node, #visit_string_node, #visit_symbol_node, #visit_ternary_node, #visit_until_node, #visit_until_post_node, #visit_var_def_node, #visit_while_node, #visit_while_post_node
Constructor Details
#initialize(lexical_variable_names:) ⇒ VariableClassifier
Returns a new instance of VariableClassifier.
34
35
36
|
# File 'lib/translator/variable_classifier_visitor.rb', line 34
def initialize(lexical_variable_names:)
@lexical_variable_names = lexical_variable_names
end
|
Instance Method Details
#var_type(identifier) ⇒ Object
47
48
49
50
51
52
53
|
# File 'lib/translator/variable_classifier_visitor.rb', line 47
def var_type(identifier)
if @lexical_variable_names.include?(identifier)
return :lexical
else
return :local
end
end
|
#visit_lvar_read_node(node) ⇒ Object
38
39
40
|
# File 'lib/translator/variable_classifier_visitor.rb', line 38
def visit_lvar_read_node(node)
node.variable_kind = var_type(node.identifier)
end
|
#visit_lvar_write_node(node) ⇒ Object
42
43
44
45
|
# File 'lib/translator/variable_classifier_visitor.rb', line 42
def visit_lvar_write_node(node)
node.variable_kind = var_type(node.identifier)
super(node)
end
|