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 Details Link icon

    • matchesEmptyString Link icon

      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 Link icon

      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
    • getMaxLoopingDepth Link icon

      public int getMaxLoopingDepth()
      Get the maximum depth of looping within this operation
      Overrides:
      getMaxLoopingDepth in class OpRepeat
      Returns:
      the maximum number of nested iterations
    • optimize Link icon

      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 Link icon

      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