Class: Koara::TreeState
- Inherits:
-
Object
- Object
- Koara::TreeState
- Defined in:
- lib/koara/tree_state.rb
Instance Method Summary collapse
- #add_single_value(n, t) ⇒ Object
- #close_scope(n) ⇒ Object
-
#initialize ⇒ TreeState
constructor
A new instance of TreeState.
- #node_arity ⇒ Object
- #open_scope ⇒ Object
- #pop_node ⇒ Object
- #push_node(n) ⇒ Object
Constructor Details
#initialize ⇒ TreeState
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_arity ⇒ Object
34 35 36 |
# File 'lib/koara/tree_state.rb', line 34 def node_arity @nodes_on_stack - @current_mark end |
#open_scope ⇒ Object
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_node ⇒ Object
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 |