Class Compiler

java.lang.Object
org.apache.xpath.compiler.OpMap
org.apache.xpath.compiler.Compiler

public class Compiler
extends OpMap
An instance of this class compiles an XPath string expression into a Expression object. This class compiles the string into a sequence of operation codes (op map) and then builds from that into an Expression tree.
  • Constructor Details

    • Compiler

      public Compiler​(ErrorListener errorHandler, SourceLocator locator, FunctionTable fTable)
      Construct a Compiler object with a specific ErrorListener and SourceLocator where the expression is located.
      Parameters:
      errorHandler - Error listener where messages will be sent, or null if messages should be sent to System err.
      locator - The location object where the expression lives, which may be null, but which, if not null, must be valid over the long haul, in other words, it will not be cloned.
      fTable - The FunctionTable object where the xpath build-in functions are stored.
    • Compiler

      public Compiler()
      Construct a Compiler instance that has a null error listener and a null source locator.
  • Method Details

    • compile

      public Expression compile​(int opPos) throws TransformerException
      Execute the XPath object from a given opcode position.
      Parameters:
      opPos - The current position in the xpath.m_opMap array.
      Returns:
      The result of the XPath.
      Throws:
      TransformerException - if there is a syntax or other error.
    • or

      protected Expression or​(int opPos) throws TransformerException
      Compile an 'or' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Or instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • and

      protected Expression and​(int opPos) throws TransformerException
      Compile an 'and' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to And instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • notequals

      protected Expression notequals​(int opPos) throws TransformerException
      Compile a '!=' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to NotEquals instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • equals

      protected Expression equals​(int opPos) throws TransformerException
      Compile a '=' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Equals instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • lte

      protected Expression lte​(int opPos) throws TransformerException
      Compile a '<=' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Lte instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • lt

      protected Expression lt​(int opPos) throws TransformerException
      Compile a '<' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Lt instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • gte

      protected Expression gte​(int opPos) throws TransformerException
      Compile a '>=' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Gte instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • gt

      protected Expression gt​(int opPos) throws TransformerException
      Compile a '>' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Gt instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • plus

      protected Expression plus​(int opPos) throws TransformerException
      Compile a '+' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Plus instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • minus

      protected Expression minus​(int opPos) throws TransformerException
      Compile a '-' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Minus instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • mult

      protected Expression mult​(int opPos) throws TransformerException
      Compile a '*' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Mult instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • div

      protected Expression div​(int opPos) throws TransformerException
      Compile a 'div' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Div instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • mod

      protected Expression mod​(int opPos) throws TransformerException
      Compile a 'mod' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Mod instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • neg

      protected Expression neg​(int opPos) throws TransformerException
      Compile a unary '-' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Neg instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • string

      protected Expression string​(int opPos) throws TransformerException
      Compile a 'string(...)' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to String instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • bool

      protected Expression bool​(int opPos) throws TransformerException
      Compile a 'boolean(...)' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Bool instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • number

      protected Expression number​(int opPos) throws TransformerException
      Compile a 'number(...)' operation.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Number instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • literal

      protected Expression literal​(int opPos)
      Compile a literal string value.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to XString instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • numberlit

      protected Expression numberlit​(int opPos)
      Compile a literal number value.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to XNumber instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • variable

      protected Expression variable​(int opPos) throws TransformerException
      Compile a variable reference.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to Variable instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • group

      protected Expression group​(int opPos) throws TransformerException
      Compile an expression group.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to the contained expression.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • arg

      protected Expression arg​(int opPos) throws TransformerException
      Compile a function argument.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to the argument expression.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • union

      protected Expression union​(int opPos) throws TransformerException
      Compile a location path union. The UnionPathIterator itself may create LocPathIterator children.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to LocPathIterator instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • getLocationPathDepth

      public int getLocationPathDepth()
      Get the level of the location path or union being constructed.
      Returns:
      0 if it is a top-level path.
    • locationPath

      public Expression locationPath​(int opPos) throws TransformerException
      Compile a location path. The LocPathIterator itself may create AxesWalker children.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to LocPathIterator instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • predicate

      public Expression predicate​(int opPos) throws TransformerException
      Compile a location step predicate expression.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      the contained predicate expression.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • matchPattern

      protected Expression matchPattern​(int opPos) throws TransformerException
      Compile an entire match pattern expression.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to UnionPattern instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • locationPathPattern

      public Expression locationPathPattern​(int opPos) throws TransformerException
      Compile a location match pattern unit expression.
      Parameters:
      opPos - The current position in the m_opMap array.
      Returns:
      reference to StepPattern instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • getWhatToShow

      public int getWhatToShow​(int opPos)
      Get a NodeFilter bit set that tells what to show for a given node test.
      Parameters:
      opPos - the op map position for the location step.
      Returns:
      NodeFilter bit set that tells what to show for a given node test.
    • stepPattern

      protected StepPattern stepPattern​(int opPos, int stepCount, StepPattern ancestorPattern) throws TransformerException
      Compile a step pattern unit expression, used for both location paths and match patterns.
      Parameters:
      opPos - The current position in the m_opMap array.
      stepCount - The number of steps to expect.
      ancestorPattern - The owning StepPattern, which may be null.
      Returns:
      reference to StepPattern instance.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • getCompiledPredicates

      public Expression[] getCompiledPredicates​(int opPos) throws TransformerException
      Compile a zero or more predicates for a given match pattern.
      Parameters:
      opPos - The position of the first predicate the m_opMap array.
      Returns:
      reference to array of Expression instances.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • countPredicates

      public int countPredicates​(int opPos) throws TransformerException
      Count the number of predicates in the step.
      Parameters:
      opPos - The position of the first predicate the m_opMap array.
      Returns:
      The number of predicates for this step.
      Throws:
      TransformerException - if a error occurs creating the Expression.
    • warn

      public void warn​(String msg, Object[] args) throws TransformerException
      Warn the user of an problem.
      Parameters:
      msg - An error msgkey that corresponds to one of the constants found in XPATHErrorResources, which is a key for a format string.
      args - An array of arguments represented in the format string, which may be null.
      Throws:
      TransformerException - if the current ErrorListoner determines to throw an exception.
    • assertion

      public void assertion​(boolean b, String msg)
      Tell the user of an assertion error, and probably throw an exception.
      Parameters:
      b - If false, a runtime exception will be thrown.
      msg - The assertion message, which should be informative.
      Throws:
      RuntimeException - if the b argument is false.
    • error

      public void error​(String msg, Object[] args) throws TransformerException
      Tell the user of an error, and probably throw an exception.
      Overrides:
      error in class OpMap
      Parameters:
      msg - An error msgkey that corresponds to one of the constants found in XPATHErrorResources, which is a key for a format string.
      args - An array of arguments represented in the format string, which may be null.
      Throws:
      TransformerException - if the current ErrorListoner determines to throw an exception.
    • getNamespaceContext

      public PrefixResolver getNamespaceContext()
      Get the current namespace context for the xpath.
      Returns:
      The current prefix resolver, *may* be null, though hopefully not.
    • setNamespaceContext

      public void setNamespaceContext​(PrefixResolver pr)
      Set the current namespace context for the xpath.
      Parameters:
      pr - The resolver for prefixes in the XPath expression.