Class: Koara::TreeState

Inherits:
Object
  • Object
show all
Defined in:
lib/koara/tree_state.rb

Instance Method Summary collapse

Constructor Details

#initializeTreeState

Returns a new instance of TreeState.



4
5
6
7
8
9
# File 'lib/koara/tree_state.rb', line 4

def initialize
  @nodes = []
  @marks = []
  @nodes_on_stack = 0
  @current_mark = 0
end

Instance Method Details

#add_single_value(n, t) ⇒ Object



28
29
30
31
32
# File 'lib/koara/tree_state.rb', line 28

def add_single_value(n, t)
  open_scope
  n.value = t.image
  close_scope(n)
end

#close_scope(n) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/koara/tree_state.rb', line 16

def close_scope(n)
  a = node_arity
  @current_mark = @marks.delete_at(@marks.size - 1)
  while a > 0
    a -= 1
    c = pop_node
    c.parent = n
    n.add(c, a)
  end
  push_node(n)
end

#node_arityObject



34
35
36
# File 'lib/koara/tree_state.rb', line 34

def node_arity
  @nodes_on_stack - @current_mark
end

#open_scopeObject



11
12
13
14
# File 'lib/koara/tree_state.rb', line 11

def open_scope
  @marks.push(@current_mark)
  @current_mark = @nodes_on_stack
end

#pop_nodeObject



38
39
40
41
# File 'lib/koara/tree_state.rb', line 38

def pop_node
  @nodes_on_stack -= 1
  @nodes.delete_at(@nodes.size - 1)
end

#push_node(n) ⇒ Object



43
44
45
46
# File 'lib/koara/tree_state.rb', line 43

def push_node(n)
  @nodes.push(n)
  @nodes_on_stack += 1
end