Example #1
0
            public static IAutomaton Create(IAutomaton s1, IAutomaton s2)
            {
                // Attempt to simplify/canonicalise the resulting state as much as possible.
                if (s1 is RejectState)
                {
                    return(s2);
                }
                if (s2 is RejectState)
                {
                    return(s1);
                }
                if (s1.Equals(s2))
                {
                    return(s1);
                }

                if (s1 is OrState os)
                {
                    return(Create(os.State1, Create(os.State2, s2)));
                }

                if (s1.GetHashCode() < s2.GetHashCode())
                {
                    return(new OrState(s2, s1));
                }
                return(new OrState(s1, s2));
            }
Example #2
0
 public override int GetHashCode() => 953 + State1.GetHashCode() + 61 *State2.GetHashCode();
Example #3
0
 public override int GetHashCode() => 100 + State1.GetHashCode() + 11 *State2.GetHashCode();
Example #4
0
 public override int GetHashCode() => 888 + 13 + Child.GetHashCode();
Example #5
0
 public override int GetHashCode()
 {
     return(99 + 37 * State.GetHashCode());
 }