示例#1
0
        /// <summary>
        /// Cleans Input and Output dictionaries generating data from current transition list.
        /// USE WITH CARE.
        /// </summary>
        public void RefreshData()
        {
            //cleans dictionaries.
            this.InputAlphabet  = new List <string> ();
            this.OutputAlphabet = new List <string> ();

            //Adds Input/Output to lists
            foreach (Transition t in this.Transitions)
            {
                if (!InputAlphabet.Contains(t.Input))
                {
                    AddInput(t.Input);
                }

                if (!OutputAlphabet.Contains(t.Output))
                {
                    AddOutput(t.Output);
                }

                if (!States.Contains(t.SourceState))
                {
                    States.Add(t.SourceState);
                }

                if (!States.Contains(t.TargetState))
                {
                    States.Add(t.TargetState);
                }
            }
        }
示例#2
0
 /// <summary>
 /// Add a input data to input alphabet.
 /// </summary>
 /// <param name="inputData"></param>
 public Boolean AddInput(string inputData)
 {
     if (!InputAlphabet.Contains(inputData))
     {
         InputAlphabet.Add(inputData);
         return(true);
     }
     return(false);
 }
示例#3
0
 /// <inheritdoc />
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (States != null ? States.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (InputAlphabet != null ? InputAlphabet.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (InitialState != null ? InitialState.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (AcceptStates != null ? AcceptStates.GetHashCode() : 0);
         return(hashCode);
     }
 }