示例#1
0
        public bool IsDeadState()
        {
            if (_acceptingState || MatchingStateMap.Count == 0)
            {
                return(false);
            }

            Hashset setToState;

            foreach (DictionaryEntry de in MatchingStateMap)
            {
                setToState = de.Value as Hashset;

                TransitionState state = null;
                foreach (object objState in setToState)
                {
                    state = objState as TransitionState;
                    if (state.Equals(this) == false)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
        public void AddDfaState(TransitionState stateDfa, Hashset setEclosure)
        {
            DFAState stateRecord = new DFAState();

            stateRecord.SetEclosure = setEclosure;

            _stateHashTable[stateDfa] = stateRecord;
        }
        public Hashset GetEclosureByDfaState(TransitionState state)
        {
            var dsr = _stateHashTable[state] as DFAState;

            if (dsr != null)
            {
                return(dsr.SetEclosure);
            }
            return(null);
        }
示例#4
0
        public int ReplaceTransitionState(TransitionState stateOld, TransitionState stateNew)
        {
            int     nReplacementCount = 0;
            Hashset setTrans;

            foreach (DictionaryEntry de in MatchingStateMap)
            {
                setTrans = de.Value as Hashset;
                if (setTrans.ElementExist(stateOld) == true)
                {
                    setTrans.RemoveElement(stateOld);
                    setTrans.AddElement(stateNew);
                    nReplacementCount++;
                }
            }
            return(nReplacementCount);
        }
示例#5
0
 public void AddTransition(string sInputSymbol, TransitionState stateTo)
 {
     MatchingStateMap.Add(sInputSymbol, stateTo);
 }
        public void MarkVisited(TransitionState stateT)
        {
            DFAState stateRecord = (DFAState)_stateHashTable[stateT];

            stateRecord.Marked = true;
        }