Class Compiler

java.lang.Object
org.loboevolution.apache.xpath.compiler.OpMap
org.loboevolution.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, FunctionTable fTable)
      Construct a Compiler object with a specific ErrorListener.
      Parameters:
      errorHandler - Error listener where messages will be sent, or null if messages should be sent to System err.
      fTable - The FunctionTable object where the xpath build-in functions are stored.
  • 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.
    • 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.
    • 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 oPos) throws TransformerException
      Compile an entire match pattern expression.
      Parameters:
      oPos - 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 oPos, int stepCount, StepPattern ancestorPattern) throws TransformerException
      Compile a step pattern unit expression, used for both location paths and match patterns.
      Parameters:
      oPos - 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 oPos) throws TransformerException
      Count the number of predicates in the step.
      Parameters:
      oPos - 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.
    • 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.