net.sf.saxon.expr
Class ExpressionTool

java.lang.Object
  |
  +--net.sf.saxon.expr.ExpressionTool

public class ExpressionTool
extends java.lang.Object

This class, ExpressionTool, contains a number of useful static methods for manipulating expressions. Most importantly, it provides the factory method make() for constructing a new expression


Constructor Summary
ExpressionTool()
           
 
Method Summary
static int allocateSlots(Expression exp, int nextFree)
          Allocate slot numbers to range variables
static void copyLocationInfo(Expression from, Expression to)
          Copy location information (currently just the line number) from one expression to another
static Value eagerEvaluate(Expression exp, XPathContext context)
          Evaluate the expression now; lazy evaluation is not permitted in this case
static boolean effectiveBooleanValue(SequenceIterator iterator)
          Determine the effective boolean value of a sequence, given an iterator over the sequence
static javax.xml.transform.SourceLocator getLocator(Expression exp)
          Get location information for an expression in the form of a SourceLocator
static java.lang.String indent(int level)
          Construct indent string, for diagnostic output
static Value lazyEvaluate(Expression exp, XPathContext context)
          Do lazy evaluation of an expression.
static Expression make(java.lang.String expression, StaticContext env, int start, int terminator)
          Parse an expression.
static boolean markTailFunctionCalls(Expression exp)
           
static Expression unsorted(Expression exp, boolean eliminateDuplicates)
          Remove unwanted sorting from an expression, at compile time
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExpressionTool

public ExpressionTool()
Method Detail

make

public static Expression make(java.lang.String expression,
                              StaticContext env,
                              int start,
                              int terminator)
                       throws XPathException
Parse an expression. This performs the basic analysis of the expression against the grammar, it binds variable references and function calls to variable definitions and function definitions, and it performs context-independent expression rewriting for optimization purposes.

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
Returns:
an object of type Expression
Throws:
XPathException - if the expression contains a static error

copyLocationInfo

public static void copyLocationInfo(Expression from,
                                    Expression to)
Copy location information (currently just the line number) from one expression to another


getLocator

public static javax.xml.transform.SourceLocator getLocator(Expression exp)
Get location information for an expression in the form of a SourceLocator


unsorted

public static Expression unsorted(Expression exp,
                                  boolean eliminateDuplicates)
                           throws XPathException
Remove unwanted sorting from an expression, at compile time

XPathException

lazyEvaluate

public static Value lazyEvaluate(Expression exp,
                                 XPathContext context)
                          throws XPathException
Do lazy evaluation of an expression. This will return a value, which may optionally be a SequenceIntent, which is a wrapper around an iterator over the value of the expression.

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
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

eagerEvaluate

public static Value eagerEvaluate(Expression exp,
                                  XPathContext context)
                           throws XPathException
Evaluate the expression now; lazy evaluation is not permitted in this case

Parameters:
context - the run-time evaluation context
Returns:
the result of evaluating the expression
Throws:
XPathException - if any dynamic error occurs evaluating the expression

markTailFunctionCalls

public static boolean markTailFunctionCalls(Expression exp)

indent

public static java.lang.String indent(int level)
Construct indent string, for diagnostic output

Parameters:
level - the indentation level (the number of spaces to return)
Returns:
a string of "level*2" spaces

allocateSlots

public static int allocateSlots(Expression exp,
                                int nextFree)
Allocate slot numbers to range variables


effectiveBooleanValue

public static boolean effectiveBooleanValue(SequenceIterator iterator)
                                     throws XPathException
Determine the effective boolean value of a sequence, given an iterator over the sequence

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