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)); }
public override int GetHashCode() => 953 + State1.GetHashCode() + 61 *State2.GetHashCode();
public override int GetHashCode() => 100 + State1.GetHashCode() + 11 *State2.GetHashCode();
public override int GetHashCode() => 888 + 13 + Child.GetHashCode();
public override int GetHashCode() { return(99 + 37 * State.GetHashCode()); }