Package 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
- 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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
backPatchFalseList
(org.apache.bcel.generic.InstructionHandle ih) void
backPatchTrueList
(org.apache.bcel.generic.InstructionHandle ih) final org.apache.bcel.generic.InstructionList
compile
(ClassGenerator classGen, MethodGenerator methodGen) Translate this node into a fresh instruction list.void
desynthesize
(ClassGenerator classGen, MethodGenerator methodGen) Returns an object representing the compile-time evaluation of an expression.int
getAxis()
double
abstract org.apache.xalan.xsltc.compiler.StepPattern
final double
Returns the priority of this pattern (section 5.5 in the XSLT spec).getType()
boolean
boolean
abstract boolean
lookupPrimop
(org.apache.xalan.xsltc.compiler.SymbolTable stable, String op, MethodType ctype) Search for a primop in the symbol table that matches the method typectype
.boolean
noSmallerThan
(LocationPathPattern other) This method is used by the Mode class to prioritise patterns and template.abstract void
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.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.typeCheck
(org.apache.xalan.xsltc.compiler.SymbolTable stable) Returns the type of a pattern, which is always aNodeType
.Methods inherited from class org.apache.xalan.xsltc.compiler.SyntaxTreeNode
display, getLineNumber, getParser, getStylesheet, parseContents
-
Constructor Details
-
LocationPathPattern
public LocationPathPattern()
-
-
Method Details
-
typeCheck
Description copied from class:Pattern
Returns the type of a pattern, which is always aNodeType
. ANodeType
has a number of subtypes defined byNodeType._type
corresponding to each type of node.- Specified by:
typeCheck
in classPattern
- Parameters:
stable
- The compiler/parser's symbol table- Throws:
TypeCheckError
-
translate
Description copied from class:Pattern
Translate this node into JVM bytecodes. Patterns are translated as boolean expressions with true/false lists. Before callingtranslate
on a pattern, make sure that the node being matched is on top of the stack. After callingtranslate
, 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., seePattern.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 callingtranslate
. -
setTemplate
-
getTemplate
-
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 classPattern
-
getDefaultPriority
public double getDefaultPriority() -
noSmallerThan
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
-
getType
-
hasPositionCall
public boolean hasPositionCall() -
hasLastCall
public boolean hasLastCall() -
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
Redefined by expressions of type boolean that use flow lists. -
startIterator
If this expression is of type node-set and it is not a variable reference, then call setStartNode() passing the context node. -
synthesize
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
-
getFalseList
-
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, String op, MethodType ctype) Search for a primop in the symbol table that matches the method typectype
. 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.
-