diff Implab/Automaton/DFATransitionTable.cs @ 167:96681e9d0cea ref20160224

sync
author cin
date Wed, 02 Mar 2016 00:20:48 +0300
parents e227e78d72e4
children 8fb9c9507a26
line wrap: on
line diff
--- a/Implab/Automaton/DFATransitionTable.cs	Mon Feb 29 18:41:01 2016 +0300
+++ b/Implab/Automaton/DFATransitionTable.cs	Wed Mar 02 00:20:48 2016 +0300
@@ -4,14 +4,14 @@
 using System.Linq;
 
 namespace Implab.Automaton {
-    public class DFATransitionTable<TTag> : IDFATableBuilder {
+    public class DFATransitionTable : IDFATableBuilder {
         DFAStateDescriptior[] m_dfaTable;
 
         int m_stateCount;
         int m_symbolCount;
         int m_initialState;
 
-        readonly Dictionary<int, TTag[]> m_finalStates = new Dictionary<int, TTag[]>();
+        readonly HashSet<int> m_finalStates = new HashSet<int>();
         readonly HashSet<AutomatonTransition> m_transitions = new HashSet<AutomatonTransition>();
 
 
@@ -32,10 +32,10 @@
         public bool IsFinalState(int s) {
             Safe.ArgumentInRange(s, 0, m_stateCount, "s");
 
-            return m_finalStates.ContainsKey(s);
+            return m_dfaTable != null ? m_dfaTable[s].final :  m_finalStates.Contains(s);
         }
 
-        public IEnumerable<KeyValuePair<int,TTag[]>> FinalStates {
+        public IEnumerable<int> FinalStates {
             get {
                 return m_finalStates;
             }
@@ -55,8 +55,8 @@
 
         #endregion
 
-        protected virtual DFAStateDescriptior<TTag>[] ConstructTransitionTable() {
-            var dfaTable = new DFAStateDescriptior<TTag>[m_stateCount];
+        protected virtual DFAStateDescriptior[] ConstructTransitionTable() {
+            var dfaTable = new DFAStateDescriptior[m_stateCount];
 
             foreach (var pair in m_finalStates) {
                 var idx = pair.Key;