class Kleene::DFA
def next_state(from_state, input_token, token_index)
def next_state(from_state, input_token, token_index) transition = @transitions[from_state][input_token] || raise("No DFA transition found. Input token #{input_token} not in DFA alphabet.") # invoke the relevant transition callback function transition_callbacks[transition].try {|callback_fn| callback_fn.call(transition, input_token, token_index) } transition_callbacks_per_destination_state[transition.to].try {|callback_fn| callback_fn.call(transition, input_token, token_index) } transition.to end