Mercurial > pub > ImplabNet
diff Implab/Automaton/DFATable.cs @ 172:92d5278d1b10 ref20160224
Working on text scanner
author | cin |
---|---|
date | Mon, 14 Mar 2016 01:19:38 +0300 |
parents | 0f70905b4652 |
children | 0c3c69fe225b |
line wrap: on
line diff
--- a/Implab/Automaton/DFATable.cs Thu Mar 10 01:19:33 2016 +0300 +++ b/Implab/Automaton/DFATable.cs Mon Mar 14 01:19:38 2016 +0300 @@ -100,6 +100,20 @@ return GetEnumerator(); } + public DFAStateDescriptor[] CreateTransitionTable() { + var table = new DFAStateDescriptor[StateCount]; + + foreach (var t in this) { + if (table[t.s1].transitions == null) + table[t.s1] = new DFAStateDescriptor(AlphabetSize, IsFinalState(t.s1)); + if (table[t.s2].transitions == null) + table[t.s2] = new DFAStateDescriptor(AlphabetSize, IsFinalState(t.s2)); + table[t.s1].transitions[t.edge] = t.s2; + } + + return table; + } + /// <summary>Формирует множества конечных состояний перед началом работы алгоритма минимизации.</summary> /// <remarks> /// В процессе построения минимального автомата требуется разделить множество состояний,