|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--net.sf.saxon.instruct.Instruction | +--net.sf.saxon.instruct.ExprInstruction
This class is an abstract superclass for Instructions that also behave as Expressions. Currently this is restricted to those instructions used when an XQuery query is compiled. Eventually it is intended that all instructions should support the Expression interface. Note that the Expression interfaces (e.g. iterate()) may only be used on an ExprInstruction if all its child instructions are also instances of ExprInstruction.
Field Summary |
Fields inherited from class net.sf.saxon.instruct.Instruction |
children |
Constructor Summary | |
ExprInstruction()
|
Method Summary | |
Expression |
analyze(StaticContext env)
Perform static analysis of an expression and its subexpressions. |
boolean |
effectiveBooleanValue(XPathContext context)
Get the effective boolean value of the expression. |
java.lang.String |
evaluateAsString(XPathContext context)
Evaluate an expression as a String. |
Item |
evaluateItem(XPathContext context)
Evaluate an expression as a single item. |
int |
getDependencies()
Determine which aspects of the context the expression depends on. |
int |
getSpecialProperties()
Get the static properties of this expression (other than its type). |
Expression[] |
getSubExpressions()
Get the immediate sub-expressions of this expression. |
protected abstract void |
getXPathExpressions(java.util.List list)
Get all the XPath expressions associated with this instruction (in XSLT terms, the expression present on attributes of the instruction, as distinct from the child instructions in a sequence construction) |
SequenceIterator |
iterate(XPathContext context)
Return an Iterator to iterate over the values of a sequence. |
Expression |
promote(PromotionOffer offer)
Offer promotion for this subexpression. |
protected abstract void |
promoteInst(PromotionOffer offer)
Handle promotion offers, that is, non-local tree rewrites. |
Expression |
simplify()
Simplify an expression. |
Methods inherited from class net.sf.saxon.instruct.Instruction |
assembleParams, assembleTunnelParams, displayChildren, dynamicError, dynamicError, getCardinality, getChildren, getColumnNumber, getExecutable, getInstructionName, getInstructionNamespace, getItemType, getLineNumber, getPublicId, getSourceLocator, getSystemId, process, processChildren, processChildrenLeavingTail, processLeavingTail, recoverableError, setChildren, setExecutable, setSourceLocation |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface net.sf.saxon.expr.Expression |
display, getCardinality, getItemType |
Constructor Detail |
public ExprInstruction()
Method Detail |
public Expression simplify() throws XPathException
simplify
in interface Expression
XPathException
- if an error is discovered during expression
rewritingpublic Expression analyze(StaticContext env) throws XPathException
This checks statically that the operands of the expression have the correct type; if necessary it generates code to do run-time type checking or type conversion. A static type error is reported only if execution cannot possibly succeed, that is, if a run-time type error is inevitable. The call may return a modified form of the expression.
This method is called after all references to functions and variables have been resolved to the declaration of the function or variable. However, the types of such functions and variables will only be accurately known if they have been explicitly declared.
analyze
in interface Expression
env
- the static context of the expression
XPathException
- if an error is discovered during this phase
(typically a type error)public int getDependencies()
StaticProperty.DEPENDS_ON_CONTEXT_ITEM
and
StaticProperty.DEPENDS_ON_CURRENT_ITEM
. The default implementation combines the intrinsic
dependencies of this expression with the dependencies of the subexpressions,
computed recursively. This is overridden for expressions such as FilterExpression
where a subexpression's dependencies are not necessarily inherited by the parent
expression.
getDependencies
in interface Expression
public int getSpecialProperties()
getSpecialProperties
in interface Expression
protected abstract void promoteInst(PromotionOffer offer) throws XPathException
offer
- The type of rewrite being offered
XPathException
public Expression promote(PromotionOffer offer) throws XPathException
promote
in interface Expression
offer
- details of the offer, for example the offer to move
expressions that don't depend on the context to an outer level in
the containing expression
XPathException
- if any error is detectedprotected abstract void getXPathExpressions(java.util.List list)
list
- A list to be populated with the list of XPath expressionspublic Expression[] getSubExpressions()
getSubExpressions
in interface Expression
public Item evaluateItem(XPathContext context) throws XPathException
evaluateItem
in interface Expression
context
- The context in which the expression is to be evaluated
XPathException
- if any dynamic error occurs evaluating the
expressionpublic final java.lang.String evaluateAsString(XPathContext context) throws XPathException
evaluateAsString
in interface Expression
context
- The context in which the expression is to be evaluated
XPathException
- if any dynamic error occurs evaluating the
expression
java.lang.ClassCastException
- if the result type of the
expression is not xs:string?public boolean effectiveBooleanValue(XPathContext context) throws XPathException
effectiveBooleanValue
in interface Expression
context
- The context in which the expression is to be evaluated
XPathException
- if any dynamic error occurs evaluating the
expressionpublic SequenceIterator iterate(XPathContext context) throws XPathException
iterate
in interface Expression
context
- supplies the context for evaluation
XPathException
- if any dynamic error occurs evaluating the
expression
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |