private static NfaClosure Closure(HashSet<INfaState> states, INfaState endState) { var set = SharedPools.Default<HashSet<INfaState>>().AllocateAndClear(); var isFinal = false; foreach (var state in states) foreach (var item in state.Closure()) { if (item.Equals(endState)) isFinal = true; set.Add(item); } return new NfaClosure(set, isFinal); }
private static NfaClosure Closure(SortedSet <INfaState> states, INfaState endState) { var set = SharedPools.Default <SortedSet <INfaState> >().AllocateAndClear(); var isFinal = false; foreach (var state in states) { foreach (var item in state.Closure()) { if (item.Equals(endState)) { isFinal = true; } set.Add(item); } } return(new NfaClosure(set, isFinal)); }
public NullNfaTransition(INfaState target) { Target = target; }
public Nfa(INfaState start, INfaState end) { Start = start; End = end; }
public TerminalNfaTransition(ITerminal terminal, INfaState target) { Terminal = terminal; Target = target; }