collect_epsilon_transition Subroutine

public pure subroutine collect_epsilon_transition(nfa_graph, nfa_top, nfa_set)

This subroutine collects all states reachable by empty transition starting from a given state set in an NFA.

Arguments

Type IntentOptional Attributes Name
type(nfa_state_node_t), intent(in) :: nfa_graph(:)
integer(kind=int32), intent(in) :: nfa_top
type(nfa_state_set_t), intent(inout) :: nfa_set

Source Code

   pure subroutine collect_epsilon_transition(nfa_graph, nfa_top, nfa_set)
      use :: forgex_nfa_node_m, only: nfa_state_node_t
      implicit none
      type(nfa_state_node_t), intent(in)    :: nfa_graph(:)
      integer(int32),         intent(in)    :: nfa_top
      type(nfa_state_set_t),  intent(inout) :: nfa_set

      integer(int32) :: ii

      do ii = NFA_STATE_BASE+1, nfa_top
         if (check_nfa_state(nfa_set, ii)) then
            call mark_epsilon_transition(nfa_graph, nfa_top, nfa_set, ii)
         end if
      end do
   end subroutine collect_epsilon_transition