Example #1
0
 private void RepeatZeroOrOne(int start, int end, FSA <TValue> fsa, AstNodeBase node, bool isLasy, ORegexOptions options)
 {
     if (isLasy)
     {
         fsa.AddEpsilonTransition(start, end);
         Evaluate(start, end, fsa, node, options);
     }
     else
     {
         Evaluate(start, end, fsa, node, options);
         fsa.AddEpsilonTransition(start, end);
     }
 }
Example #2
0
        private void RepeatZeroOrInfinite(int start, int end, FSA <TValue> fsa, AstNodeBase predicate, bool isLasy, ORegexOptions options)
        {
            var tmp = CreateNewState(fsa);

            if (isLasy)
            {
                fsa.AddEpsilonTransition(start, end);
                fsa.AddEpsilonTransition(tmp, end);
                Evaluate(tmp, tmp, fsa, predicate, options);
                fsa.AddEpsilonTransition(start, tmp);
            }
            else
            {
                Evaluate(tmp, tmp, fsa, predicate, options);
                fsa.AddEpsilonTransition(tmp, end);

                fsa.AddEpsilonTransition(start, tmp);
                fsa.AddEpsilonTransition(start, end);
            }
        }