Class Operation

java.lang.Object
net.sf.saxon.regex.Operation
Direct Known Subclasses:
OpAtom, OpBackReference, OpBOL, OpCapture, OpCharClass, OpChoice, OpEndProgram, OpEOL, OpNothing, OpRepeat, OpSequence, OpTrace

public abstract class Operation extends Object
Represents an operation or instruction in the regular expression program. The class Operation is abstract, and has concrete subclasses for each kind of operation/instruction
  • Field Details Link icon

  • Constructor Details Link icon

    • Operation Link icon

      public Operation()
  • Method Details Link icon

    • iterateMatches Link icon

      public abstract IntIterator iterateMatches(REMatcher matcher, int position)
      Get an iterator returning all the matches for this operation
      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
    • getMatchLength Link icon

      public int getMatchLength()
      Get the length of the matches returned by this operation if they are fixed-length
      Returns:
      the length of the matches, or -1 if the length is variable
    • getMinimumMatchLength Link icon

      public int getMinimumMatchLength()
      Get the minimum length of the matches returned by this operation
      Returns:
      the length of the shortest string that will match the operation
    • matchesEmptyString Link icon

      public abstract int matchesEmptyString()
      Ask whether the regular expression is known, after static analysis, to match a zero-length string
      Returns:
      a value indicating whether the regex is statically known to match a zero-length string. Specifically:
      • returns MATCHES_ZLS_AT_START if the expression is statically known to match a zero-length string at the start of the supplied input;
      • returns MATCHES_ZLS_AT_END if it is statically known to return a zero-length string at the end of the supplied input;
      • returns MATCHES_ZLS_ANYWHERE if it is statically known to match a zero-length string anywhere in the input.
      • returns MATCHES_ZLS_NEVER if it is statically known that the regex will never match a zero length string.
      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.
    • containsCapturingExpressions Link icon

      public boolean containsCapturingExpressions()
      Ask whether the expression contains any capturing sub-expressions
      Returns:
      true if the expression contains any capturing sub-expressions (but not if it is a capturing expression itself, unless it contains nested capturing expressions)
    • getInitialCharacterClass Link icon

      public CharacterClass getInitialCharacterClass(boolean caseBlind)
      Get a CharacterClass identifying the set of characters that can appear as the first character of a non-empty string that matches this term. This is allowed to be an over-estimate (that is, the returned Character class must match every character that can legitimately appear at the start of the matched string, but it can also match other characters).
      Parameters:
      caseBlind - true if case-blind matching is in force ("i" flag)
    • optimize Link icon

      public Operation optimize(REProgram program, REFlags flags)
      Optimize the operation
      Parameters:
      program - the program being optimized
      flags - the regular expression flags
      Returns:
      the optimized operation
    • display Link icon

      public abstract String display()
      Display the operation as a regular expression, possibly in abbreviated form
      Returns:
      the operation in a form that is recognizable as a regular expression or abbreviated regular expression
    • getMaxLoopingDepth Link icon

      public int getMaxLoopingDepth()
      Get the maximum depth of looping within this operation
      Returns:
      the maximum number of nested iterations