예제 #1
0
        public List <PlainTextSymbol> Parse(string s, out List <IndexRange> list_0)
        {
            List <PlainTextSymbol> list   = new List <PlainTextSymbol>();
            List <IndexRange>      ranges = this.GetIndexRanges(s);

            foreach (IndexRange ir in ranges)
            {
                PlainTextSymbol item = new PlainTextSymbol(this.Create(s, ir), ir.Start, null);
                list.Add(item);
            }
            list_0 = IndexRange.GetExceptRanges(ranges, s);
            return(list);
        }
예제 #2
0
        private static List <IndexRange> GetNonAtomicLogicalCharRanges(string input, int startIdx, int nextIdx, List <PlainTextSymbol> ptslist)
        {
            var list = ptslist.Where(k => k.StartIndex >= startIdx && k.NextIndex <= nextIdx)
                       .Select(k => new IndexRange(k.StartIndex, k.Length)).ToList();
            var exceptRanges = IndexRange.GetExceptRanges(list, startIdx, nextIdx);

            foreach (var range in exceptRanges)
            {
                for (int i = range.Start; i < range.NextStart; i++)
                {
                    list.Add(new IndexRange(i, 1));
                }
            }
            return(list);
        }
예제 #3
0
        private List <PlainTextSymbol> Parse(string s, IndexRange r, out List <IndexRange> exp)
        {
            var ptslist             = new List <PlainTextSymbol>();
            var indexRanges         = this.GetIndexRanges(s.Substring(r.Start, r.Length));
            List <IndexRange> list3 = new List <IndexRange>();

            foreach (IndexRange indexRange in indexRanges)
            {
                IndexRange indexRange2 = new IndexRange(indexRange.Start + r.Start, indexRange.Length);
                list3.Add(indexRange2);
                PlainTextSymbol item = new PlainTextSymbol(this.Create(s, indexRange2), indexRange2.Start, null);
                ptslist.Add(item);
            }
            exp = IndexRange.GetExceptRanges(list3, r.Start, r.NextStart);
            return(ptslist);
        }
예제 #4
0
        public List <IndexRange> GetExceptRanges(string s)
        {
            var ranges = this.GetIndexRanges(s);

            return(IndexRange.GetExceptRanges(ranges, s));
        }