Package net.sf.saxon.expr.parser
Class ParserExtension
java.lang.Object
net.sf.saxon.expr.parser.ParserExtension
Dummy Parser extension for syntax in XPath that is accepted only in particular product variants.
Originally, this meant XPath 3.0 syntax associated with higher-order functions. It now covers
Saxon syntax extensions and XQuery Update.
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateDynamicCurriedFunction
(XPathParser p, Expression functionItem, 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)void
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)protected Expression
Parse an ItemType within a SequenceTypeprotected Expression
Parse a for-member expression (Saxon extension): for member $x in expr return exprparseFunctionItemType
(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 readParse a literal function item (function#arity).void
Parse the "declare revalidation" declaration.void
Parse a type alias declaration.Parse an extended XSLT pattern in the form ~itemType (predicate)*void
Parse an updating function declaration (allowed in XQuery Update only)
-
Constructor Details
-
ParserExtension
public ParserExtension()
-
-
Method Details
-
parseNamedFunctionReference
Parse a literal function item (function#arity). On entry, the function name and the '#' token have already been read- Parameters:
p
- the parser- Returns:
- an expression representing the function value
- Throws:
XPathException
- in the event of a syntax error
-
parseFunctionItemType
public ItemType parseFunctionItemType(XPathParser p, AnnotationList annotations) throws XPathException 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- Parameters:
p
- the XPath parserannotations
- the list of annotation assertions for this function item type- Returns:
- the ItemType after parsing
- Throws:
XPathException
- if a static error is found
-
parseExtendedItemType
Parse an ItemType within a SequenceType- Parameters:
p
- the XPath parser- Returns:
- the ItemType after parsing
- Throws:
XPathException
- if a static error is found
-
parseTypePattern
Parse an extended XSLT pattern in the form ~itemType (predicate)*- Parameters:
p
- the XPath parser- Returns:
- the equivalent expression in the form .[. instance of type] (predicate)*
- Throws:
XPathException
- if a static error is found
-
parseDotFunction
- Throws:
XPathException
-
parseUnderscoreFunction
- Throws:
XPathException
-
bindNumericParameterReference
- Throws:
XPathException
-
makeCurriedFunction
public Expression makeCurriedFunction(XPathParser parser, int offset, StructuredQName name, Expression[] args, IntSet placeMarkers) throws XPathException Process a function call in which one or more of the argument positions are represented as "?" placemarkers (indicating partial application or currying)- Parameters:
parser
- the XPath parseroffset
- 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 function- Returns:
- the curried function
- Throws:
XPathException
- if a dynamic error occurs
-
curryFunction
public 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)- Parameters:
functionExp
- an expression that returns the function to be curriedargs
- the arguments (with EmptySequence in the placemarker positions)placeMarkers
- the positions of the placemarkers- Returns:
- the curried function
-
createDynamicCurriedFunction
public Expression createDynamicCurriedFunction(XPathParser p, Expression functionItem, ArrayList<Expression> args, IntSet placeMarkers) -
handleExternalFunctionDeclaration
public void handleExternalFunctionDeclaration(XQueryParser p, XQueryFunction func) throws XPathException - Throws:
XPathException
-
parseTypeAliasDeclaration
Parse a type alias declaration. Allowed only in Saxon-PE and higher- Parameters:
p
- the XPath parser- Throws:
XPathException
- if parsing fails
-
parseRevalidationDeclaration
Parse the "declare revalidation" declaration. Syntax: not allowed unless XQuery update is in use- Parameters:
p
- the XPath parser- Throws:
XPathException
- if the syntax is incorrect, or is not allowed in this XQuery processor
-
parseUpdatingFunctionDeclaration
Parse an updating function declaration (allowed in XQuery Update only)- Parameters:
p
- the XPath parser- Throws:
XPathException
- if parsing fails PathMapor if updating functions are not allowed
-
parseExtendedExprSingle
- Throws:
XPathException
-
parseForMemberExpression
Parse a for-member expression (Saxon extension): for member $x in expr return expr- Parameters:
p
- the XPath parser- Returns:
- the resulting subexpression
- Throws:
XPathException
- if any error is encountered
-