class Nfa2Dfa::State

State of automaton

Attributes

graphviz_node[R]
id[R]
is_final[R]
is_starting[R]

Public Class Methods

new(id) click to toggle source
# File lib/state.rb, line 9
def initialize(id)
  @id = id
  @is_final = false
  @transitions = []
  @graphviz_init = false
  @is_starting = false
end

Public Instance Methods

add_transition(tr) click to toggle source
# File lib/state.rb, line 43
def add_transition(tr)
  @transitions.insert(@transitions.size, tr)
end
associate_transitions(all_transitions) click to toggle source
# File lib/state.rb, line 51
def associate_transitions(all_transitions)
  @transitions.clear
  @id.split(',').each do |id_part|
    all_transitions.each do |transition|
      if id_part == transition.beginning_state.id
        add_transition(transition)
      end
    end
  end
end
clear_transitions() click to toggle source
# File lib/state.rb, line 47
def clear_transitions
  @transitions.clear
end
finalize() click to toggle source
# File lib/state.rb, line 39
def finalize
  @is_final = true
end
get_next(char) click to toggle source
# File lib/state.rb, line 62
def get_next(char)
  ret_val = []
  @transitions.each do |trans|
    if trans.alphabet == char
      ret_val.insert(ret_val.size, trans.ending_state)
    end
  end
  ret_val
end
graph_id() click to toggle source
# File lib/state.rb, line 25
def graph_id
  is_starting ? (@id + '/init') : @id
end
to_graph_node(viz_graph) click to toggle source
# File lib/state.rb, line 29
def to_graph_node(viz_graph)
  if @is_final
    @graphviz_node = viz_graph.add_nodes(
      graph_id, :shape => 'doublecircle')
  else
    @graphviz_node = viz_graph.add_nodes(graph_id, :shape => 'circle')
  end
  @graphviz_init = false
end
to_s() click to toggle source
# File lib/state.rb, line 21
def to_s
  @id.to_s
end
to_starting_node() click to toggle source
# File lib/state.rb, line 17
def to_starting_node
  @is_starting = true
end