internal RangeData(RegularLanguageSet source)
                : this()
            {
                this.orderedData = new List <SwitchPair <char, RangeSet> >();
                Singletons       = new List <char>();
                Sets             = new List <RangeSet>();
                source.Reduce();
                bool inRange    = false;
                uint rangeStart = 0;
                uint start      = source.IsNegativeSet ? 0 : source.Offset;

                for (uint i = start; i < source.Offset + source.Length; i++)
                {
                    if (source[i] ^ source.IsNegativeSet)
                    {
                        if (!inRange)
                        {
                            inRange    = true;
                            rangeStart = i;
                        }
                    }
                    else if (inRange)
                    {
                        inRange = TerminateRange(inRange, rangeStart, i);
                    }
                }
                TerminateRange(inRange, rangeStart, source.Offset + source.Length);
            }
예제 #2
0
 protected internal CharRangeTokenItem(bool inverted, RegularLanguageSet chars, int line, int column, long position)
     : base(line, column, position)
 {
     this.chars    = chars;
     this.inverted = inverted;
     if (position == 898)
     {
     }
 }