org.apache.xalan.xsltc.compiler

Class LocationPathPattern

Implemented Interfaces:
Constants, InstructionConstants

public abstract class LocationPathPattern
extends Pattern

Authors:
Jacek Ambroziak
Santiago Pericas-Geertsen
Morten Jorgensen

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, ATTRIBUTES_SIG, ATTRIBUTE_LIST_FIELD, ATTRIBUTE_LIST_IMPL_CLASS, ATTRIBUTE_LIST_IMPL_SIG, ATTR_SET_SIG, BASIS_LIBRARY_CLASS, BOOLEAN_CLASS, BOOLEAN_VALUE, BOOLEAN_VALUE_SIG, CACHED_NODE_LIST_ITERATOR_CLASS, CALL_FUNCTION_CLASS, CHARACTERS, CHARACTERSW, CHARACTERSW_SIG, CHARACTERS_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, 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, HASIDCALL_INDEX, HASIDCALL_INDEX_SIG, HAS_ATTRIBUTE, HAS_ATTRIBUTE_SIG, INTEGER_CLASS, INTEGER_SIG, INTERNAL, INT_VALUE, INT_VALUE_SIG, INVOKE_METHOD, ITERATOR_FIELD_SIG, ITERATOR_PNAME, KEY_INDEX_CLASS, KEY_INDEX_SIG, LAST_INDEX, LOAD_DOCUMENT_CLASS, LOCALE_CLASS, LOCALE_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, NAMESPACE_FEATURE, NAMESPACE_INDEX, NAMESPACE_INDEX_SIG, NAMES_INDEX, NAMES_INDEX_SIG, NEXT, NEXTID, NEXT_SIG, 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, 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, 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_NAMESPACE_ARRAY_FIELD, STATIC_NAMES_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

Method Summary

int
getAxis()
double
getDefaultPriority()
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.
boolean
isWildcard()
boolean
noSmallerThan(LocationPathPattern other)
This method is used by the Mode class to prioritise patterns and template.
void
reduceKernelPattern()
void
setTemplate(Template template)
String
toString()
void
translate(ClassGenerator classGen, MethodGenerator methodGen)
Translate this node into JVM bytecodes.
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.Pattern

getPriority, translate, typeCheck

Methods inherited from class org.apache.xalan.xsltc.compiler.Expression

backPatchFalseList, backPatchTrueList, compile, desynthesize, evaluateAtCompileTime, getFalseList, getTrueList, getType, hasLastCall, hasPositionCall, lookupPrimop, startIterator, synthesize, toString, translate, translateDesynthesized, typeCheck

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

display, getLineNumber, getParser, getStylesheet, parseContents, translate, typeCheck

Method Details

getAxis

public int getAxis()


getDefaultPriority

public double getDefaultPriority()


getKernelPattern

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


getPriority

public final double getPriority()
Returns the priority of this pattern (section 5.5 in the XSLT spec).
Overrides:
getPriority in interface Pattern


getTemplate

public Template getTemplate()
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'.


isWildcard

public boolean isWildcard()


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


reduceKernelPattern

public void reduceKernelPattern()


setTemplate

public void setTemplate(Template template)


toString

public String toString()
Overrides:
toString in interface org.apache.xalan.xsltc.compiler.Expression


translate

public void translate(ClassGenerator classGen,
                      MethodGenerator methodGen)
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 org.apache.xalan.xsltc.compiler.AlternativePattern.translate()) then a GOTO must be appended to the instruction list after calling translate.
Overrides:
translate in interface Pattern


typeCheck

public Type typeCheck(org.apache.xalan.xsltc.compiler.SymbolTable stable)
            throws TypeCheckError
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.
Overrides:
typeCheck in interface Pattern


Copyright B) 2004 Apache XML Project. All Rights Reserved.