net.sf.saxon.expr
public class ExpressionTool extends Object
Method Summary | |
---|---|
static int | allocateSlots(Expression exp, int nextFree, SlotManager frame)
Allocate slot numbers to range variables |
static boolean | callsFunction(Expression exp, int fp)
Determine whether an expression contains a call on the function with a given fingerprint |
static void | copyLocationInfo(Expression from, Expression to)
Copy location information (the line number) from one expression
to another |
static boolean | dependsOnVariable(Expression e, Binding[] bindingList)
Determine whether an expression depends on any one of a set of variables |
static Value | eagerEvaluate(Expression exp, XPathContext context)
Evaluate an expression now; lazy evaluation is not permitted in this case |
static void | ebvError(String reason) |
static boolean | effectiveBooleanValue(SequenceIterator iterator)
Determine the effective boolean value of a sequence, given an iterator over the sequence |
static void | gatherCalledFunctions(Expression e, List list)
Gather a list of all the user-defined functions which a given expression calls directly |
static void | gatherReferencedVariables(Expression e, List list)
Gather a list of all the variable bindings on which a given expression depends |
static SourceLocator | getLocator(Expression exp)
Get location information for an expression in the form of a SourceLocator |
static String | indent(int level)
Construct indent string, for diagnostic output
|
static boolean | isRepeatedSubexpression(Expression parent, Expression child, StaticContext env)
Determine whether an expression is a repeatedly-evaluated subexpression
of a parent expression. |
static boolean | isVariableReplaceableByDot(Expression exp, Binding[] binding)
Determine whether it is possible to rearrange an expression so that all references to a given
variable are replaced by a reference to ".". |
static ValueRepresentation | lazyEvaluate(Expression exp, XPathContext context, int ref)
Do lazy evaluation of an expression. |
static Expression | make(String expression, StaticContext env, int start, int terminator, int lineNumber)
Parse an expression. |
static void | makeParentReferences(Expression top)
Establish the links from subexpressions to their parent expressions,
by means of a recursive tree walk. |
static boolean | markTailFunctionCalls(Expression exp) |
static Expression | resolveCallsToCurrentFunction(Expression exp, Configuration config)
Resolve calls to the current() function within an expression |
static Expression | unsorted(Optimizer opt, Expression exp, boolean eliminateDuplicates)
Remove unwanted sorting from an expression, at compile time |
static Expression | unsortedIfHomogeneous(Optimizer opt, Expression exp, boolean eliminateDuplicates)
Remove unwanted sorting from an expression, at compile time, if and only if it is known
that the result of the expression will be homogeneous (all nodes, or all atomic values).
|
Parameters: exp the expression whose range variables need to have slot numbers assigned nextFree the next slot number that is available for allocation frame a SlotManager object that is used to track the mapping of slot numbers to variable names for debugging purposes. May be null.
Returns: the next unallocated slot number.
Parameters: exp The expression being tested fp The fingerprint of the name of the function
Returns: true if the expression contains a call on the function
Parameters: e the expression being tested bindingList the set of variables being tested
Returns: true if the expression depends on one of the given variables
Parameters: exp the expression to be evaluated context the run-time evaluation context
Returns: the result of evaluating the expression
Throws: net.sf.saxon.trans.XPathException if any dynamic error occurs evaluating the expression
Parameters: iterator An iterator over the sequence whose effective boolean value is required
Returns: the effective boolean value
Throws: XPathException if a dynamic error occurs
Parameters: e the expression being tested list a list of the functions that are called. The items in this list must be objects of class UserFunction
Parameters: e the expression being tested list a list to which the bindings are to be added. The items in this list must implement Binding
Parameters: level the indentation level (the number of spaces to return)
Returns: a string of "level*2" spaces
Parameters: context the run-time evaluation context for the expression. If the expression is not evaluated immediately, then parts of the context on which the expression depends need to be saved as part of the Closure ref an indication of how the value will be used. The value 1 indicates that the value is only expected to be used once, so that there is no need to keep it in memory. A small value >1 indicates multiple references, so the value will be saved when first evaluated. The special value FILTERED indicates a reference within a loop of the form $x[predicate], indicating that the value should be saved in a way that permits indexing.
Returns: a value: either the actual value obtained by evaluating the expression, or a Closure containing all the information needed to evaluate it later
Throws: XPathException if any error occurs in evaluating the expression
Parameters: expression The expression (as a character string) env An object giving information about the compile-time context of the expression terminator The token that marks the end of this expression; typically Tokenizer.EOF, but may for example be a right curly brace lineNumber the line number of the start of the expression
Returns: an object of type Expression
Throws: net.sf.saxon.trans.XPathException if the expression contains a static error