protected DFAState AddDFAState(DFA dfa, DFAState D)
{
if (D == ERROR)
{
return D;
}
lock (dfa.states)
{
DFAState existing = dfa.states.Get(D);
if (existing != null) return existing;
D.stateNumber = dfa.states.Count;
if (!D.configSet.IsReadOnly)
{
D.configSet.OptimizeConfigs(this);
D.configSet.IsReadOnly = true;
}
dfa.states.Put(D, D);
if (debug) Console.WriteLine("adding new DFA state: " + D);
return D;
}
}