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>
         /// В процессе построения минимального автомата требуется разделить множество состояний,