Beispiel #1
0
// showDFA performs common actions for individual and merged DFAs
// it returns the ultimate (original or minimized) dfa
func showDFA(dfa *rx.DFA, treelabel string, showtime bool) *rx.DFA {
	if *opt['p'] {
		dfa.ShowTree(os.Stdout, dfa.Tree, treelabel)
	}
	if *opt['n'] {
		dfa.ShowNFA(os.Stdout, "NFA")
	}
	if *opt['d'] {
		dfa.ShowStates(os.Stdout, "Unoptimized DFA")
	}
	if !*opt['u'] {
		if showtime {
			rxsys.Interval() // reset for timing
		}
		dfa = dfa.Minimize()
		if showtime {
			timestamp(fmt.Sprintf(
				"minimize to %d states", len(dfa.Dstates)))
		}
		if *opt['d'] {
			dfa.ShowStates(os.Stdout, "Minimized DFA")
		}
	}
	if *opt['h'] {
		synthx(dfa)
	}
	return dfa
}