/// <summary> /// Simple optimization. If a set is a singleton, an inverse singleton, /// or empty, it's transformed accordingly. /// </summary> internal RegexNode ReduceSet() { // Extract empty-set, one and not-one case as special if (RegexCharClass.IsEmpty(_str)) { _type = Nothing; _str = null; } else if (RegexCharClass.IsSingleton(_str)) { _ch = RegexCharClass.SingletonChar(_str); _str = null; _type += (One - Set); } else if (RegexCharClass.IsSingletonInverse(_str)) { _ch = RegexCharClass.SingletonChar(_str); _str = null; _type += (Notone - Set); } return(this); }
/// <summary> /// Simple optimization. If a set is a singleton, an inverse singleton, /// or empty, it's transformed accordingly. /// </summary> private RegexNode ReduceSet() { // Extract empty-set, one and not-one case as special if (RegexCharClass.IsEmpty(Str)) { NType = Nothing; Str = null; } else if (RegexCharClass.IsSingleton(Str)) { Ch = RegexCharClass.SingletonChar(Str); Str = null; NType += (One - Set); } else if (RegexCharClass.IsSingletonInverse(Str)) { Ch = RegexCharClass.SingletonChar(Str); Str = null; NType += (Notone - Set); } return(this); }