Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }