Class: Ikra::Translator::LocalVariablesEnumerator

Inherits:
AST::Visitor show all
Defined in:
lib/translator/local_variables_enumerator.rb

Instance Method Summary collapse

Methods inherited from AST::Visitor

#visit_begin_node, #visit_bool_node, #visit_break_node, #visit_const_node, #visit_float_node, #visit_if_node, #visit_int_node, #visit_ivar_read_node, #visit_node, #visit_return_node, #visit_root_node, #visit_send_node

Constructor Details

#initializeLocalVariablesEnumerator

Returns a new instance of LocalVariablesEnumerator.



8
9
10
# File 'lib/translator/local_variables_enumerator.rb', line 8

def initialize
    @vars = {}
end

Instance Method Details

#add_local_var(var, type) ⇒ Object



12
13
14
# File 'lib/translator/local_variables_enumerator.rb', line 12

def add_local_var(var, type)
    @vars[var] = type
end

#local_variablesObject



16
17
18
# File 'lib/translator/local_variables_enumerator.rb', line 16

def local_variables
    @vars
end

#visit_for_node(node) ⇒ Object



29
30
31
32
# File 'lib/translator/local_variables_enumerator.rb', line 29

def visit_for_node(node)
    add_local_var(node.iterator_identifier, Types::UnionType.create_int)
    super(node)
end

#visit_lvar_read_node(node) ⇒ Object



20
21
22
# File 'lib/translator/local_variables_enumerator.rb', line 20

def visit_lvar_read_node(node)
    add_local_var(node.identifier, node.get_type)
end

#visit_lvar_write_node(node) ⇒ Object



24
25
26
27
# File 'lib/translator/local_variables_enumerator.rb', line 24

def visit_lvar_write_node(node)
    add_local_var(node.identifier, node.get_type)
    super(node)
end