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));
        }
Ejemplo n.º 3
0
 public NullNfaTransition(INfaState target)
 {
     Target = target;
 }
Ejemplo n.º 4
0
 public Nfa(INfaState start, INfaState end)
 {
     Start = start;
     End   = end;
 }
Ejemplo n.º 5
0
 public TerminalNfaTransition(ITerminal terminal, INfaState target)
 {
     Terminal = terminal;
     Target = target;
 }
Ejemplo n.º 6
0
 public NullNfaTransition(INfaState target)
 {
     Target = target;
 }
Ejemplo n.º 7
0
 public Nfa(INfaState start, INfaState end)
 {
     Start = start;
     End = end;
 }
Ejemplo n.º 8
0
 public TerminalNfaTransition(ITerminal terminal, INfaState target)
 {
     Terminal = terminal;
     Target   = target;
 }