Mercurial > pub > ImplabNet
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;