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