This subroutine prints DFA states and transitions to a given unit number.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(automaton_t), | intent(in) | :: | self | |||
integer(kind=int32), | intent(in) | :: | uni |
subroutine automaton__print_dfa(self, uni) use :: forgex_nfa_state_set_m, only: print_nfa_state_set use :: forgex_lazy_dfa_node_m, only: dfa_transition_t implicit none class(automaton_t), intent(in) :: self integer(int32), intent(in) :: uni type(dfa_transition_t) :: p integer(int32) :: i, j do i = 1, self%dfa%dfa_top -1 if (self%dfa%nodes(i)%accepted) then write(uni, '(i4,a, a)', advance='no') i, 'A', ": " else write(uni, '(i4,a, a)', advance='no') i, ' ', ": " end if do j = 1, self%dfa%nodes(i)%get_tra_top() p = self%dfa%nodes(i)%transition(j) write(uni, '(a, a, i0, 1x)', advance='no') p%c%print(), '=>', p%dst end do write(uni, *) "" end do do i = 1, self%dfa%dfa_top - 1 if (self%dfa%nodes(i)%accepted) then write(uni, '(a, i4, a)', advance='no') "state ", i, 'A = ( ' else write(uni, '(a, i4, a)', advance='no') "state ", i, ' = ( ' end if call print_nfa_state_set(self%dfa%nodes(i)%nfa_set, self%nfa%nfa_top, uni) write(uni,'(a)') ")" end do end subroutine automaton__print_dfa