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); }
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) { } }