Class OpUnambiguousRepeat


  • public class OpUnambiguousRepeat
    extends OpRepeat
    Handle a repetition where there is no ambiguity; if the repeated term is matched in the string, then it cannot match anything other than the repeated term. It is also used when the number of occurrences is fixed. In this situation there will never be any need for backtracking, so there is no need to keep any information to support backtracking, and in addition, there is no distinction between greedy and reluctant matching. This operation is used only for a repeated atom or CharClass, which also means that if the repeated term matches then it can only match in one way; a typical example is the term "A*" in the regex "A*B".
    • Method Detail

      • matchesEmptyString

        public int matchesEmptyString()
        Description copied from class: Operation
        Ask whether the regular expression is known, after static analysis, to match a zero-length string
        Overrides:
        matchesEmptyString in class OpRepeat
        Returns:
        a value indicating whether the regex is statically known to match a zero-length string. Specifically: Returning 0 means that it is not known statically whether or not the regex will match a zero-length string; this case typically arises when back-references are involved.
      • getMatchLength

        public int getMatchLength()
        Description copied from class: Operation
        Get the length of the matches returned by this operation if they are fixed-length
        Overrides:
        getMatchLength in class OpRepeat
        Returns:
        the length of the matches, or -1 if the length is variable
      • optimize

        public Operation optimize​(REProgram program,
                                  REFlags flags)
        Description copied from class: Operation
        Optimize the operation
        Overrides:
        optimize in class OpRepeat
        Parameters:
        program - the program being optimized
        flags - the regular expression flags
        Returns:
        the optimized operation
      • iterateMatches

        public IntIterator iterateMatches​(REMatcher matcher,
                                          int position)
        Description copied from class: Operation
        Get an iterator returning all the matches for this operation
        Overrides:
        iterateMatches in class OpRepeat
        Parameters:
        matcher - supplies the context for the matching; may be updated with information about captured groups
        position - the start position to seek a match
        Returns:
        an iterator returning the endpoints of all matches starting at the supplied position