org.apache.xalan.xsltc.compiler

## Class LocationPathPattern

- java.lang.Object
- - org.apache.xalan.xsltc.compiler.SyntaxTreeNode
  - - org.apache.xalan.xsltc.compiler.Pattern
    - - org.apache.xalan.xsltc.compiler.LocationPathPattern

- All Implemented Interfaces:
    org.apache.bcel.generic.InstructionConstants, Constants

      public abstract class LocationPathPattern
      extends Pattern

  Author:
    Jacek Ambroziak, Santiago Pericas-Geertsen, Morten Jorgensen

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.apache.bcel.generic.InstructionConstants

      `org.apache.bcel.generic.InstructionConstants.Clinit`

  - ### Field Summary

    - ### Fields inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode

      `UNKNOWN_STYLESHEET_NODE_ID`

    - ### Fields inherited from interface org.apache.xalan.xsltc.compiler.Constants

      `ABSOLUTE_ITERATOR, ACC_FINAL, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_SUPER, ADD_ATTRIBUTE, ADD_ATTRIBUTE_SIG, ADD_ITERATOR, ADD_ITERATOR_SIG, ADD_PARAMETER, ADD_PARAMETER_SIG, APPLY_TEMPLATES, ATTR_SET_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTRIBUTES_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CHARACTERS, CHARACTERS_SIG, CHARACTERSW, CHARACTERSW_SIG, CLEAR_ATTRIBUTES, CLEAR_ATTRIBUTES_SIG, COLLATOR_CLASS, COLLATOR_SIG, COMPILER_PACKAGE, CURRENT_NODE_LIST_FILTER, CURRENT_NODE_LIST_FILTER_SIG, CURRENT_NODE_LIST_ITERATOR, CURRENT_NODE_LIST_ITERATOR_SIG, DEFAULT_NODE_COUNTER, DEFAULT_NODE_COUNTER_SIG, DOCUMENT_PNAME, DOM_ADAPTER_CLASS, DOM_ADAPTER_SIG, DOM_FIELD, DOM_IMPL, DOM_IMPL_CLASS, DOM_IMPL_SIG, DOM_INTF, DOM_INTF_SIG, DOM_PNAME, DOUBLE_CLASS, DOUBLE_SIG, DOUBLE_VALUE, DOUBLE_VALUE_SIG, DUP_FILTERED_ITERATOR, EMPTYATTR_FIELD, EMPTYSTRING, ERROR, EXPAND_STYLESHEET_QNAME_REF, EXPAND_STYLESHEET_QNAME_SIG, FALLBACK_CLASS, FATAL, FILTER_INTERFACE, FILTER_INTERFACE_SIG, FILTER_ITERATOR, FILTER_STEP_ITERATOR, FORMAT_SYMBOLS_FIELD, GET_ATTRIBUTE_VALUE, GET_ATTRIBUTE_VALUE_SIG, GET_CHILDREN, GET_CHILDREN_SIG, GET_ELEMENT_VALUE, GET_ELEMENT_VALUE_SIG, GET_ITERATOR_SIG, GET_NODE_NAME, GET_NODE_NAME_SIG, GET_NODE_TYPE, GET_NODE_TYPE_SIG, GET_NODE_VALUE, GET_NODE_VALUE_ITERATOR, GET_NODE_VALUE_ITERATOR_SIG, GET_NODE_VALUE_SIG, GET_PARAMETER, GET_PARAMETER_SIG, GET_PARENT, GET_PARENT_SIG, GET_TYPED_CHILDREN, GET_TYPED_CHILDREN_SIG, GET_UNPARSED_ENTITY_URI, GET_UNPARSED_ENTITY_URI_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, INT_VALUE, INT_VALUE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_ITERATOR_SIG, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_SIG, LOOKUP_STYLESHEET_QNAME_NS_REF, LOOKUP_STYLESHEET_QNAME_NS_SIG, MAKE_NODE, MAKE_NODE_LIST, MAKE_NODE_LIST_SIG, MAKE_NODE_LIST_SIG2, MAKE_NODE_SIG, MAKE_NODE_SIG2, MATCHING_ITERATOR, MATH_CLASS, MULTI_DOM_CLASS, MULTI_DOM_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NEXT, NEXT_SIG, NEXTID, NODE, NODE_COUNTER, NODE_COUNTER_SIG, NODE_FIELD, NODE_FIELD_SIG, NODE_ITERATOR, NODE_ITERATOR_BASE, NODE_ITERATOR_SIG, NODE_PNAME, NODE_SIG, NODE_SORT_FACTORY, NODE_SORT_FACTORY_SIG, NODE_SORT_RECORD, NODE_SORT_RECORD_SIG, NS_ANCESTORS_INDEX_SIG, NTH_ITERATOR_CLASS, OBJECT_CLASS, OBJECT_SIG, ORDER_ITERATOR, ORDER_ITERATOR_SIG, OUTPUT_BASE, OUTPUT_HANDLER, OUTPUT_HANDLER_SIG, POP_PARAM_FRAME, POP_PARAM_FRAME_SIG, POSITION_INDEX, PREFIX_URIS_ARRAY_SIG, PREFIX_URIS_IDX_SIG, PUSH_PARAM_FRAME, PUSH_PARAM_FRAME_SIG, REDIRECT_URI, RESET, RESET_SIG, RTF_INITIAL_SIZE, RUNTIME_NODE_CLASS, RUNTIME_PACKAGE, SAX_IMPL, SAX_IMPL_CLASS, SAX_IMPL_SIG, SET_START_NODE, SET_START_NODE_SIG, SINGLETON_ITERATOR, SORT_ITERATOR, SORT_ITERATOR_SIG, STATIC_CHAR_DATA_FIELD, STATIC_CHAR_DATA_FIELD_SIG, STATIC_NAMES_ARRAY_FIELD, STATIC_NAMESPACE_ARRAY_FIELD, STATIC_NS_ANCESTORS_ARRAY_FIELD, STATIC_PREFIX_URIS_ARRAY_FIELD, STATIC_PREFIX_URIS_IDX_ARRAY_FIELD, STATIC_TYPES_ARRAY_FIELD, STATIC_URIS_ARRAY_FIELD, STEP_ITERATOR_CLASS, STREAM_XML_OUTPUT, STRING, STRING_BUFFER_CLASS, STRING_BUFFER_SIG, STRING_CLASS, STRING_SIG, STRING_TO_INT, STRING_TO_INT_SIG, STRING_TO_REAL, STRING_TO_REAL_SIG, STRING_VALUE_HANDLER, STRING_VALUE_HANDLER_SIG, STRING_WRITER, STRIP_SPACE, STRIP_SPACE_INTF, STRIP_SPACE_PARAMS, STRIP_SPACE_SIG, TRANSLET_CLASS, TRANSLET_FIELD, TRANSLET_FIELD_SIG, TRANSLET_INTF, TRANSLET_INTF_SIG, TRANSLET_OUTPUT_BASE, TRANSLET_OUTPUT_INTERFACE, TRANSLET_OUTPUT_PNAME, TRANSLET_OUTPUT_SIG, TRANSLET_PNAME, TRANSLET_SIG, TRANSLET_URI, TRANSLET_VERSION_INDEX, TRANSLET_VERSION_INDEX_SIG, TYPES_INDEX, TYPES_INDEX_SIG, UNION_ITERATOR_CLASS, UNION_ITERATOR_SIG, UNSUPPORTED, URIS_INDEX, URIS_INDEX_SIG, WARNING, WRITER_SIG, XHTML_URI, XMLNS_PREFIX, XMLNS_STRING, XMLNS_URI, XSLT_PACKAGE, XSLT_URI`

    - ### Fields inherited from interface org.apache.bcel.generic.InstructionConstants

      `AALOAD, AASTORE, ACONST_NULL, ALOAD_0, ALOAD_1, ALOAD_2, ARETURN, ARRAYLENGTH, ASTORE_0, ASTORE_1, ASTORE_2, ATHROW, BALOAD, BASTORE, bla, CALOAD, CASTORE, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DMUL, DNEG, DREM, DRETURN, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FMUL, FNEG, FREM, FRETURN, FSUB, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, ILOAD_0, ILOAD_1, ILOAD_2, IMUL, INEG, INSTRUCTIONS, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE_0, ISTORE_1, ISTORE_2, ISUB, IUSHR, IXOR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDIV, LMUL, LNEG, LOR, LREM, LRETURN, LSHL, LSHR, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, NOP, POP, POP2, RETURN, SALOAD, SASTORE, SWAP, THIS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocationPathPattern()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `backPatchFalseList(org.apache.bcel.generic.InstructionHandle ih)`
    `void` | `backPatchTrueList(org.apache.bcel.generic.InstructionHandle ih)`
    `org.apache.bcel.generic.InstructionList` | `compile(ClassGenerator classGen, MethodGenerator methodGen)` Translate this node into a fresh instruction list.
    `void` | `desynthesize(ClassGenerator classGen, MethodGenerator methodGen)`
    `java.lang.Object` | `evaluateAtCompileTime()` Returns an object representing the compile-time evaluation of an expression.
    `int` | `getAxis()`
    `double` | `getDefaultPriority()`
    `FlowList` | `getFalseList()`
    `abstract org.apache.xalan.xsltc.compiler.StepPattern` | `getKernelPattern()`
    `double` | `getPriority()` Returns the priority of this pattern (section 5.5 in the XSLT spec).
    `Template` | `getTemplate()` Get the Template node that represents the element that this node occured under.
    `FlowList` | `getTrueList()`
    `Type` | `getType()`
    `boolean` | `hasLastCall()`
    `boolean` | `hasPositionCall()`
    `abstract boolean` | `isWildcard()`
    `MethodType` | `lookupPrimop(org.apache.xalan.xsltc.compiler.SymbolTable stable, java.lang.String op, MethodType ctype)` Search for a primop in the symbol table that matches the method type `ctype`.
    `boolean` | `noSmallerThan(LocationPathPattern other)` This method is used by the Mode class to prioritise patterns and template.
    `abstract void` | `reduceKernelPattern()`
    `void` | `setTemplate(Template template)`
    `void` | `startIterator(ClassGenerator classGen, MethodGenerator methodGen)` If this expression is of type node-set and it is not a variable reference, then call setStartNode() passing the context node.
    `void` | `synthesize(ClassGenerator classGen, MethodGenerator methodGen)` Synthesize a boolean expression, i.e., either push a 0 or 1 onto the operand stack for the next statement to succeed.
    `java.lang.String` | `toString()`
    `void` | `translate(ClassGenerator classGen, MethodGenerator methodGen)` Translate this node into JVM bytecodes.
    `void` | `translateDesynthesized(ClassGenerator classGen, MethodGenerator methodGen)` Redefined by expressions of type boolean that use flow lists.
    `Type` | `typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)` Returns the type of a pattern, which is always a `NodeType`.

    - ### Methods inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode

      `display, getLineNumber, getParser, getStylesheet, parseContents`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### LocationPathPattern

          public LocationPathPattern()

  - ### Method Detail

    - #### typeCheck

          public Type typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)
                         throws TypeCheckError

      Description copied from class: `Pattern`
      Returns the type of a pattern, which is always a `NodeType`. A `NodeType` has a number of subtypes defined by `NodeType._type` corresponding to each type of node.
      Specified by:
        `typeCheck` in class `Pattern`
      Parameters:
        `stable` - The compiler/parser's symbol table
      Throws:
        `TypeCheckError`

    - #### translate

          public void translate(ClassGenerator classGen,
                       MethodGenerator methodGen)

      Description copied from class: `Pattern`
      Translate this node into JVM bytecodes. Patterns are translated as boolean expressions with true/false lists. Before calling `translate` on a pattern, make sure that the node being matched is on top of the stack. After calling `translate`, make sure to backpatch both true and false lists. True lists are the default, in the sense that they always "fall through". If this is not the intended semantics (e.g., see `AlternativePattern.translate(org.apache.xalan.xsltc.compiler.util.ClassGenerator, org.apache.xalan.xsltc.compiler.util.MethodGenerator)`) then a GOTO must be appended to the instruction list after calling `translate`.
      Specified by:
        `translate` in class `Pattern`
      Parameters:
        `classGen` - BCEL Java class generator
        `methodGen` - BCEL Java method generator

    - #### setTemplate

          public void setTemplate(Template template)

    - #### getTemplate

          public Template getTemplate()

      Description copied from class: `SyntaxTreeNode`
      Get the Template node that represents the element that this node occured under. Note that this method will return 'null' for nodes that represent top-level elements.
      Returns:
        The Template ancestor node of this node or 'null'.

    - #### getPriority

          public final double getPriority()

      Description copied from class: `Pattern`
      Returns the priority of this pattern (section 5.5 in the XSLT spec).
      Specified by:
        `getPriority` in class `Pattern`

    - #### getDefaultPriority

          public double getDefaultPriority()

    - #### noSmallerThan

          public boolean noSmallerThan(LocationPathPattern other)

      This method is used by the Mode class to prioritise patterns and template. This method is called for templates that are in the same mode and that match on the same core pattern. The rules used are: o) first check precedence - highest precedence wins o) then check priority - highest priority wins o) then check the position - the template that occured last wins

    - #### getKernelPattern

          public abstract org.apache.xalan.xsltc.compiler.StepPattern getKernelPattern()

    - #### reduceKernelPattern

          public abstract void reduceKernelPattern()

    - #### isWildcard

          public abstract boolean isWildcard()

    - #### getAxis

          public int getAxis()

    - #### toString

          public java.lang.String toString()

    - #### getType

          public Type getType()

    - #### hasPositionCall

          public boolean hasPositionCall()

    - #### hasLastCall

          public boolean hasLastCall()

    - #### evaluateAtCompileTime

          public java.lang.Object evaluateAtCompileTime()

      Returns an object representing the compile-time evaluation of an expression. We are only using this for function-available and element-available at this time.

    - #### compile

          public final org.apache.bcel.generic.InstructionList compile(ClassGenerator classGen,
                                                        MethodGenerator methodGen)

      Translate this node into a fresh instruction list. The original instruction list is saved and restored.

    - #### translateDesynthesized

          public void translateDesynthesized(ClassGenerator classGen,
                                    MethodGenerator methodGen)

      Redefined by expressions of type boolean that use flow lists.

    - #### startIterator

          public void startIterator(ClassGenerator classGen,
                           MethodGenerator methodGen)

      If this expression is of type node-set and it is not a variable reference, then call setStartNode() passing the context node.

    - #### synthesize

          public void synthesize(ClassGenerator classGen,
                        MethodGenerator methodGen)

      Synthesize a boolean expression, i.e., either push a 0 or 1 onto the operand stack for the next statement to succeed. Returns the handle of the instruction to be backpatched.

    - #### desynthesize

          public void desynthesize(ClassGenerator classGen,
                          MethodGenerator methodGen)

    - #### getFalseList

          public FlowList getFalseList()

    - #### getTrueList

          public FlowList getTrueList()

    - #### backPatchFalseList

          public void backPatchFalseList(org.apache.bcel.generic.InstructionHandle ih)

    - #### backPatchTrueList

          public void backPatchTrueList(org.apache.bcel.generic.InstructionHandle ih)

    - #### lookupPrimop

          public MethodType lookupPrimop(org.apache.xalan.xsltc.compiler.SymbolTable stable,
                                java.lang.String op,
                                MethodType ctype)

      Search for a primop in the symbol table that matches the method type `ctype`. Two methods match if they have the same arity. If a primop is overloaded then the "closest match" is returned. The first entry in the vector of primops that has the right arity is considered to be the default one.

Copyright © 2014 Apache XML Project. All Rights Reserved.