Esempio n. 1
0
 //ranges == expression.Ranges
 public void Loop(CharSetExpression expression, FlatSet <CharRange> ranges, NormalizedCharSet target)
 {
     if (expression.IsReverse)
     {
         char begin = (char)(char.MinValue + 1);
         foreach (var r in ranges)
         {
             if (r.Begin > begin)
             {
                 Process(expression, target, new CharRange(begin, (char)(r.Begin - 1)));
             }
             begin = (char)(r.End + 1);
         }
         if (begin <= char.MaxValue)
         {
             Process(expression, target, new CharRange(begin, char.MaxValue));
         }
     }
     else
     {
         foreach (var r in ranges)
         {
             Process(expression, target, r);
         }
     }
 }
Esempio n. 2
0
 public bool IsCharSetEqual(string input, RegexNode node)
 {
     var parser = new Parser(input);
     var exp = parser.ParseExpression();
     var sets = new FlatSet<CharRange>();
     exp.NormalizeCharSet(out sets);
     return exp.Equals(node.Exp);
 }
Esempio n. 3
0
        public bool IsCharSetEqual(string input, RegexNode node)
        {
            var parser = new Parser(input);
            var exp    = parser.ParseExpression();
            var sets   = new FlatSet <CharRange>();

            exp.NormalizeCharSet(out sets);
            return(exp.Equals(node.Exp));
        }
Esempio n. 4
0
        public override bool Apply(CharSetExpression expression, NormalizedCharSet param)
        {
            var source = new FlatSet <CharRange>(expression.Ranges);

            expression.Ranges.Clear();
            Loop(expression, source, param);
            expression.IsReverse = false;
            return(false);
        }
Esempio n. 5
0
 public NormalizedCharSet()
 {
     Ranges = new FlatSet <CharRange>();
 }
Esempio n. 6
0
 public void NormalizeCharSet(out FlatSet<CharRange> subsets)
 {
     var normalized = new NormalizedCharSet();
     new BuildNormalizedCharSetAlgorithm().Invoke(this, normalized);
     new SetNormalizedCharSetAlgorithm().Invoke(this, normalized);
     subsets = new FlatSet<CharRange>(normalized.Ranges);
 }
Esempio n. 7
0
 public CharSetExpression(CharSetExpression expression)
 {
     Ranges = new FlatSet<CharRange>(expression.Ranges);
     IsReverse = expression.IsReverse;
 }
Esempio n. 8
0
 public CharSetExpression()
 {
     Ranges = new FlatSet<CharRange>();
     IsReverse = false;
 }