Save This Page
Home » openjdk-7 » java » util » regex » [javadoc | source]
    1   /*
    2    *  Licensed to the Apache Software Foundation (ASF) under one or more
    3    *  contributor license agreements.  See the NOTICE file distributed with
    4    *  this work for additional information regarding copyright ownership.
    5    *  The ASF licenses this file to You under the Apache License, Version 2.0
    6    *  (the "License"); you may not use this file except in compliance with
    7    *  the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    *  Unless required by applicable law or agreed to in writing, software
   12    *  distributed under the License is distributed on an "AS IS" BASIS,
   13    *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    *  See the License for the specific language governing permissions and
   15    *  limitations under the License.
   16    */
   17   
   18   /**
   19    * @author Nikolay A. Kuznetsov
   20    */
   21   package java.util.regex;
   22   
   23   import java.util.ArrayList;
   24   
   25   /**
   26    * Positive lookbehind node.
   27    * 
   28    * @author Nikolay A. Kuznetsov
   29    */
   30   class PositiveLookBehind extends AtomicJointSet {
   31       
   32       public PositiveLookBehind(ArrayList children, FSet fSet) {
   33           super(children, fSet);
   34       }
   35   
   36       /**
   37        * Returns stringIndex+shift, the next position to match
   38        */
   39       public int matches(int stringIndex, CharSequence testString,
   40               MatchResultImpl matchResult) {
   41   
   42           int size = children.size();
   43           int leftBound = matchResult.hasTransparentBounds()?
   44                   0 : matchResult.getLeftBound();
   45           
   46           int shift = next.matches(stringIndex, testString, matchResult);
   47           if (shift >= 0) {
   48               //fSet will take this index to check if we at the right bound
   49               // and return true if the current index equal to this one
   50               matchResult.setConsumed(groupIndex, stringIndex);
   51               for (int i = 0; i < size; i++) {
   52                   AbstractSet e = (AbstractSet) children.get(i);
   53                   // find limits could be calculated though e.getCharCount()
   54                   // fSet will return true only if string index at fSet equal
   55                   // to stringIndex
   56                   if (e.findBack(leftBound, stringIndex, testString, matchResult) >=0) {
   57                       matchResult.setConsumed(groupIndex, -1);
   58                       return shift;
   59                   }    
   60               }
   61           }
   62   
   63           return -1;
   64       }
   65   
   66       public boolean hasConsumed(MatchResultImpl matchResult) {
   67           return false;
   68       }
   69   
   70       protected String getName() {
   71           return "PosBehindJointSet"; //$NON-NLS-1$
   72       }
   73   }

Save This Page
Home » openjdk-7 » java » util » regex » [javadoc | source]