public class ParserExtension
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
ParserExtension.InlineFunctionDetails |
static class |
ParserExtension.TemporaryXSLTVariableBinding |
Modifier and Type | Field and Description |
---|---|
protected java.util.Stack<ParserExtension.InlineFunctionDetails> |
inlineFunctionStack |
Constructor and Description |
---|
ParserExtension() |
Modifier and Type | Method and Description |
---|---|
Expression |
bindNumericParameterReference(XPathParser p) |
Expression |
createDynamicCurriedFunction(XPathParser p,
Expression functionItem,
java.util.ArrayList<Expression> args,
IntSet placeMarkers) |
static Expression |
curryFunction(Expression functionExp,
Expression[] args,
IntSet placeMarkers)
Process a function expression in which one or more of the argument positions are
represented as "?" placemarkers (indicating partial application or currying)
|
static LocalBinding |
findOuterRangeVariable(StructuredQName qName,
java.util.Stack<ParserExtension.InlineFunctionDetails> inlineFunctionStack,
StaticContext env)
When a variable reference occurs within an inline function, it might be a reference to a variable declared
outside the inline function (which needs to become part of the closure).
|
LocalBinding |
findOuterRangeVariable(XPathParser p,
StructuredQName qName)
Locate a range variable with a given name.
|
void |
handleExternalFunctionDeclaration(XQueryParser p,
XQueryFunction func) |
Expression |
makeArgumentPlaceMarker(XPathParser p)
Parse a function argument.
|
Expression |
makeCurriedFunction(XPathParser parser,
int offset,
StructuredQName name,
Expression[] args,
IntSet placeMarkers)
Process a function call in which one or more of the argument positions are
represented as "?" placemarkers (indicating partial application or currying)
|
static Expression |
makeInlineFunctionValue(XPathParser p,
AnnotationList annotations,
ParserExtension.InlineFunctionDetails details,
java.util.List<UserFunctionParameter> params,
SequenceType resultType,
Expression body) |
Expression |
parseDotFunction(XPathParser p) |
protected Expression |
parseExtendedExprSingle(XPathParser p) |
ItemType |
parseExtendedItemType(XPathParser p)
Parse an ItemType within a SequenceType
|
protected Expression |
parseForMemberExpression(XPathParser p)
Parse a for-member expression (Saxon extension):
for member $x in expr return expr
|
ItemType |
parseFunctionItemType(XPathParser p,
AnnotationList annotations)
Parse the item type used for function items (XQuery 3.0 higher order functions)
Syntax (changed by WG decision on 2009-09-22):
function '(' '*' ') |
function '(' (SeqType (',' SeqType)*)? ')' 'as' SeqType
For backwards compatibility with Saxon 9.2 we allow the "*" to be omitted for the time being
The "function(" has already been read
|
protected Expression |
parseInlineFunction(XPathParser p,
AnnotationList annotations) |
Expression |
parseNamedFunctionReference(XPathParser p)
Parse a literal function item (function#arity).
|
void |
parseRevalidationDeclaration(XQueryParser p)
Parse the "declare revalidation" declaration.
|
void |
parseTypeAliasDeclaration(XQueryParser p)
Parse a type alias declaration.
|
Expression |
parseTypePattern(XPathParser p)
Parse an extended XSLT pattern in the form ~itemType (predicate)*
|
Expression |
parseUnderscoreFunction(XPathParser p) |
void |
parseUpdatingFunctionDeclaration(XQueryParser p)
Parse an updating function declaration (allowed in XQuery Update only)
|
protected java.util.Stack<ParserExtension.InlineFunctionDetails> inlineFunctionStack
public Expression parseNamedFunctionReference(XPathParser p) throws XPathException
p
- the parserXPathException
- in the event of a syntax errorpublic ItemType parseFunctionItemType(XPathParser p, AnnotationList annotations) throws XPathException
annotations
- the list of annotation assertions for this function item typeXPathException
public ItemType parseExtendedItemType(XPathParser p) throws XPathException
XPathException
- if a static error is foundpublic Expression parseTypePattern(XPathParser p) throws XPathException
XPathException
public Expression makeArgumentPlaceMarker(XPathParser p)
protected Expression parseInlineFunction(XPathParser p, AnnotationList annotations) throws XPathException
XPathException
public static Expression makeInlineFunctionValue(XPathParser p, AnnotationList annotations, ParserExtension.InlineFunctionDetails details, java.util.List<UserFunctionParameter> params, SequenceType resultType, Expression body)
public Expression parseDotFunction(XPathParser p) throws XPathException
XPathException
public Expression parseUnderscoreFunction(XPathParser p) throws XPathException
XPathException
public Expression bindNumericParameterReference(XPathParser p) throws XPathException
XPathException
public Expression makeCurriedFunction(XPathParser parser, int offset, StructuredQName name, Expression[] args, IntSet placeMarkers) throws XPathException
offset
- offset in the query source of the start of the expressionname
- the function call (as if there were no currying)args
- the arguments (with EmptySequence in the placemarker positions)placeMarkers
- the positions of the placemarkers @return the curried functionXPathException
- if a dynamic error occurspublic static Expression curryFunction(Expression functionExp, Expression[] args, IntSet placeMarkers)
functionExp
- an expression that returns the function to be curriedargs
- the arguments (with EmptySequence in the placemarker positions)placeMarkers
- the positions of the placemarkerspublic LocalBinding findOuterRangeVariable(XPathParser p, StructuredQName qName)
qName
- identifies the name of the range variablepublic static LocalBinding findOuterRangeVariable(StructuredQName qName, java.util.Stack<ParserExtension.InlineFunctionDetails> inlineFunctionStack, StaticContext env)
qName
- the name of the variableinlineFunctionStack
- the stack of inline functions that we are withinenv
- the static contextpublic Expression createDynamicCurriedFunction(XPathParser p, Expression functionItem, java.util.ArrayList<Expression> args, IntSet placeMarkers)
public void handleExternalFunctionDeclaration(XQueryParser p, XQueryFunction func) throws XPathException
XPathException
public void parseTypeAliasDeclaration(XQueryParser p) throws XPathException
XPathException
- if parsing failspublic void parseRevalidationDeclaration(XQueryParser p) throws XPathException
XPathException
- if the syntax is incorrect, or is not allowed in this XQuery processorpublic void parseUpdatingFunctionDeclaration(XQueryParser p) throws XPathException
XPathException
- if parsing fails or if updating functions are not allowedprotected Expression parseExtendedExprSingle(XPathParser p) throws XPathException
XPathException
protected Expression parseForMemberExpression(XPathParser p) throws XPathException
XPathException
- if any error is encounteredCopyright (c) 2004-2020 Saxonica Limited. All rights reserved.