Beispiel #1
0
        public override int FindBack(int stringIndex, int lastIndex,
                                     String testString, MatchResultImpl matchResult)
        {
            int res         = 0;
            int startSearch = lastIndex;

            for (; startSearch >= stringIndex; startSearch--)
            {
                int saveStart = matchResult.GetStart(groupIndex);

                matchResult.SetStart(groupIndex, startSearch);
                res = kid.Matches(startSearch, testString, matchResult);
                if (res >= 0)
                {
                    res = startSearch;
                    break;
                }
                else
                {
                    matchResult.SetStart(groupIndex, saveStart);
                }
            }

            return(res);
        }
Beispiel #2
0
        public override int Matches(int stringIndex, String testString,
                                    MatchResultImpl matchResult)
        {
            int start = matchResult.GetStart(groupIndex);

            matchResult.SetStart(groupIndex, stringIndex);
            int shift = kid.Matches(stringIndex, testString, matchResult);

            if (shift >= 0)
            {
                return(shift);
            }
            matchResult.SetStart(groupIndex, start);
            return(-1);
        }
Beispiel #3
0
        /// <summary>
        /// Returns stringIndex+shift, the next position to match
        /// </summary>
        ///
        public override int Matches(int stringIndex, String testString,
                                    MatchResultImpl matchResult)
        {
            if (children == null)
            {
                return(-1);
            }
            int start = matchResult.GetStart(groupIndex);

            matchResult.SetStart(groupIndex, stringIndex);
            int size = children.Count;

            for (int i = 0; i < size; i++)
            {
                AbstractSet e     = (AbstractSet)children[i];
                int         shift = e.Matches(stringIndex, testString, matchResult);
                if (shift >= 0)
                {
                    return(shift);
                }
            }
            matchResult.SetStart(groupIndex, start);
            return(-1);
        }
Beispiel #4
0
 public override bool HasConsumed(MatchResultImpl matchResult)
 {
     return(!(matchResult.GetEnd(groupIndex) >= 0 && matchResult
              .GetStart(groupIndex) == matchResult.GetEnd(groupIndex)));
 }