public class QueryParser extends ExpressionParser
ExpressionParser.TemporaryContainer
Modifier and Type | Field | Description |
---|---|---|
protected Executable |
executable |
|
protected static int |
FUNCTION_IS_NONDETERMINISTIC |
|
protected static int |
FUNCTION_IS_PRIVATE |
|
protected static int |
FUNCTION_IS_UPDATING |
|
java.util.Set |
importedModules |
|
(package private) java.util.List<net.sf.saxon.query.QueryParser.Import> |
moduleImports |
|
(package private) java.util.List<java.lang.String> |
namespacesToBeSealed |
|
protected java.lang.String |
queryVersion |
|
(package private) java.util.List<net.sf.saxon.query.QueryParser.Import> |
schemaImports |
|
static java.lang.String |
XQUERY10 |
|
static java.lang.String |
XQUERY30 |
allowXPath30Syntax, codeInjector, defaultContainer, env, language, languageVersion, nameChecker, rangeVariables, scanOnly, SEQUENCE_TYPE, t, XPATH, XQUERY, XSLT_PATTERN
Constructor | Description |
---|---|
QueryParser() |
Constructor for internal use: this class should be instantiated via the QueryModule
|
Modifier and Type | Method | Description |
---|---|---|
void |
applyModuleImport(net.sf.saxon.query.QueryParser.Import mImport) |
|
protected boolean |
atStartOfRelativePath() |
Test whether the current token is one that can start a RelativePathExpression
|
protected void |
checkForClauseAllowingEmpty(ForClause clause) |
Check a ForClause for an "outer for"
|
protected void |
customizeTokenizer(Tokenizer t) |
Callback to tailor the tokenizer
|
Executable |
getExecutable() |
Get the executable containing this expression.
|
protected java.lang.String |
getLanguage() |
Get the current language (XPath or XQuery)
|
int |
getPermittedFunctions() |
Get the permitted set of standard functions in this environment
|
protected void |
grumble(java.lang.String message,
StructuredQName errorCode,
int offset) |
Report a static error
|
protected void |
lookAhead() |
Lookahead one token, catching any exception thrown by the tokenizer.
|
protected LetExpression |
makeLetExpression() |
Make a LetExpression.
|
protected void |
makeSimpleContent(Expression content,
SimpleNodeConstructor inst,
int offset) |
Make the instructions for the children of a node with simple content (attribute, text, PI, etc)
|
static Expression |
makeStringJoin(Expression exp,
StaticContext env) |
Make a string-join expression that concatenates the string-values of items in
a sequence with intervening spaces.
|
protected Literal |
makeStringLiteral(java.lang.String token) |
Method to make a string literal from a token identified as a string
literal.
|
XQueryExpression |
makeXQueryExpression(java.lang.String query,
QueryModule mainModule,
Configuration config) |
Create an XQueryExpression
|
QueryParser |
newParser() |
Create a new parser of the same kind
|
protected java.lang.String |
normalizeEQName(java.lang.String s) |
Convert a QName in expanded-name format "uri":local into Clark format
|
protected int |
parseAnnotations() |
|
protected Expression |
parseConstructor() |
Parse a node constructor.
|
protected void |
parseContextItemDeclaration() |
Parse a context item declaration.
|
protected void |
parseCountClause(java.util.List clauseList) |
Parse a count clause.
|
protected void |
parseDecimalFormatDeclaration() |
Parse the "declare decimal-format" declaration.
|
protected void |
parseDefaultDecimalFormat() |
|
protected Expression |
parseExtensionExpression() |
Parse an Extension Expression.
|
protected Expression |
parseFLWORExpression() |
Parse a FLWOR expression.
|
protected void |
parseFunctionDeclaration(int functionOptions) |
Parse a function declaration.
|
protected void |
parseGroupByClause(java.util.List<Clause> clauseList) |
Parse a Group By clause.
|
void |
parseLibraryModule(java.lang.String queryString,
QueryModule env) |
Parse a library module.
|
protected Expression |
parseNamedNamespaceConstructor(int offset) |
|
protected Expression |
parseNamespaceConstructor(int offset) |
|
protected void |
parseRevalidationDeclaration() |
Parse the "declare revalidation" declaration.
|
protected Expression |
parseTypeswitchExpression() |
Parse a Typeswitch Expression.
|
protected void |
parseUpdatingFunctionDeclaration() |
Parse an updating function declaration (allowed in XQuery Update only)
|
protected Expression |
parseValidateExpression() |
Parse a Validate Expression.
|
protected void |
parseWindowClause(java.util.List<Clause> clauseList) |
Parse a tumbling or sliding window clause.
|
protected java.lang.String |
readCollationName() |
|
Expression |
setDefaultValue(java.lang.String exp) |
Parse the expression (inside a string literal) used to define default values
for external variables.
|
void |
setDisableCycleChecks(boolean disable) |
Disable checks for certain kinds of cycle.
|
void |
setExecutable(Executable exec) |
Set the executable used for this query expression
|
static Expression |
stringify(Expression exp,
boolean noNodeIfEmpty,
Configuration config) |
Convert an expression so it generates a space-separated sequence of strings
|
java.lang.String |
URILiteral(java.lang.String in) |
Handle a URI literal.
|
currentTokenDisplay, declareRangeVariable, disallowedAtStartOfRelativePath, expect, findRangeVariable, getCodeInjector, getDefaultContainer, getNameChecker, getRangeVariables, getStaticContext, getTokenizer, grumble, grumble, grumble, grumble, isKeyword, isNamespaceTestAllowed, makeCurriedFunction, makeLocalNameTest, makeNameCode, makeNameCodeSilently, makeNamespaceTest, makeNameTest, makeNodeName, makeStructuredQName, makeTracer, nextToken, parse, parseBasicStep, parseBinaryExpression, parseDynamicFunctionCall, parseExpression, parseExprSingle, parseFunctionArgument, parseFunctionCall, parseFunctionItemType, parseInlineFunction, parseItemType, parseLiteralFunctionItem, parseMapExpression, parseMapItemType, parseNodeTest, parseNumericLiteral, parseParenthesizedItemType, parsePathExpression, parsePredicate, parseRelativePath, parseRemainingPath, parseSequenceType, parseSequenceType, parseStepExpression, parseStringLiteral, parseSwitchExpression, parseTryCatchExpression, parseTypePattern, parseVariableReference, reportMissingFunction, resolveFunctionName, setCodeInjector, setDefaultContainer, setLanguage, setLocation, setLocation, setLocation, setRangeVariables, setRangeVariableStack, setScanOnly, testPermittedAxis, undeclareRangeVariable, warning
public static java.lang.String XQUERY10
public static java.lang.String XQUERY30
protected java.lang.String queryVersion
protected Executable executable
public java.util.Set importedModules
java.util.List<java.lang.String> namespacesToBeSealed
java.util.List<net.sf.saxon.query.QueryParser.Import> schemaImports
java.util.List<net.sf.saxon.query.QueryParser.Import> moduleImports
protected static final int FUNCTION_IS_UPDATING
protected static final int FUNCTION_IS_PRIVATE
protected static final int FUNCTION_IS_NONDETERMINISTIC
public QueryParser()
public QueryParser newParser()
public XQueryExpression makeXQueryExpression(java.lang.String query, QueryModule mainModule, Configuration config) throws XPathException
query
- the source text of the querymainModule
- the static context of the queryconfig
- the Saxon configurationXPathException
- if the expression contains static errorspublic int getPermittedFunctions()
public Executable getExecutable()
public void setExecutable(Executable exec)
exec
- the executablepublic void setDisableCycleChecks(boolean disable)
declare option saxon:allow-cycles "true"
disable
- true if checks for import cycles are to be suppressed, that is,
if cycles should be allowedprotected void customizeTokenizer(Tokenizer t)
customizeTokenizer
in class ExpressionParser
t
- the Tokenizer to be customizedpublic final void parseLibraryModule(java.lang.String queryString, QueryModule env) throws XPathException
queryString
- The text of the library module.env
- The static context. The result of parsing
a library module is that the static context is populated with a set of function
declarations and variable declarations. Each library module must have its own
static context objext.XPathException
- if the expression contains a syntax errorprotected void grumble(java.lang.String message, StructuredQName errorCode, int offset) throws XPathException
grumble
in class ExpressionParser
message
- the error messageoffset
- the location in the source queryerrorCode
- the error codeXPathException
- always thrown: an exception containing the
supplied messageprotected int parseAnnotations() throws XPathException
XPathException
protected void parseRevalidationDeclaration() throws XPathException
XPathException
- if the syntax is incorrect, or is not allowed in this XQuery processorpublic void applyModuleImport(net.sf.saxon.query.QueryParser.Import mImport) throws XPathException
XPathException
protected void parseDecimalFormatDeclaration() throws XPathException
XPathException
- if parsing failsprotected void parseDefaultDecimalFormat() throws XPathException
XPathException
protected void parseContextItemDeclaration() throws XPathException
XPathException
- if parsing failsprotected void parseFunctionDeclaration(int functionOptions) throws XPathException
Syntax:
<"declare" "function"> QName "(" ParamList? ")" ("as" SequenceType)?
(EnclosedExpr | "external")
On entry, the "declare function" has already been recognized
functionOptions
- function annotations such as updating, deterministic etcXPathException
- if a syntax error is foundprotected void parseUpdatingFunctionDeclaration() throws XPathException
XPathException
- if parsing fails or if updating functions are not allowedpublic Expression setDefaultValue(java.lang.String exp)
exp
- holds the expression used to define a default valueprotected Expression parseFLWORExpression() throws XPathException
parseFLWORExpression
in class ExpressionParser
XPathException
- if any error is encounteredprotected LetExpression makeLetExpression()
protected void checkForClauseAllowingEmpty(ForClause clause) throws XPathException
clause
- the clause to be checkedXPathException
- if invalidprotected void parseCountClause(java.util.List clauseList) throws XPathException
clauseList
- the list of clauses for the expression, to which this
clause will be addedXPathException
- if a static error is foundprotected void parseGroupByClause(java.util.List<Clause> clauseList) throws XPathException
clauseList
- the list of clauses for the expression, to which this
clause will be addedXPathException
- if a static error is foundprotected void parseWindowClause(java.util.List<Clause> clauseList) throws XPathException
clauseList
- the list of clauses for the expression, to which this
clause will be addedXPathException
- if a static error is foundpublic static Expression makeStringJoin(Expression exp, StaticContext env)
exp
- the base expression, evaluating to a sequenceenv
- the static contextprotected java.lang.String readCollationName() throws XPathException
XPathException
protected Expression parseTypeswitchExpression() throws XPathException
parseTypeswitchExpression
in class ExpressionParser
XPathException
- if parsing failsprotected Expression parseValidateExpression() throws XPathException
parseValidateExpression
in class ExpressionParser
XPathException
- if parsing failsprotected Expression parseExtensionExpression() throws XPathException
parseExtensionExpression
in class ExpressionParser
XPathException
- if parsing failsprotected Expression parseConstructor() throws XPathException
parseConstructor
in class ExpressionParser
XPathException
- in the event of a syntax error.protected Expression parseNamespaceConstructor(int offset) throws XPathException
XPathException
protected Expression parseNamedNamespaceConstructor(int offset) throws XPathException
XPathException
protected void makeSimpleContent(Expression content, SimpleNodeConstructor inst, int offset) throws XPathException
content
- the expression making up the simple contentinst
- the skeletal instruction for creating the nodeoffset
- the character position of this construct within the source queryXPathException
- if a static error is encounteredpublic static Expression stringify(Expression exp, boolean noNodeIfEmpty, Configuration config) throws XPathException
exp
- the expression that calculates the contentnoNodeIfEmpty
- if true, no node is produced when the value of the content
expression is an empty sequence. If false, the effect of supplying an empty sequence
is that a node is created whose string-value is a zero-length string. Set to true for
text node constructors, false for other kinds of node.config
- the Saxon configurationXPathException
- if parsing failsprotected Literal makeStringLiteral(java.lang.String token) throws XPathException
makeStringLiteral
in class ExpressionParser
token
- the string as written (or as returned by the tokenizer)XPathException
- if parsing failspublic java.lang.String URILiteral(java.lang.String in) throws XPathException
in
- the string as writtenXPathException
- if an error is found while unescaping the URIprotected java.lang.String normalizeEQName(java.lang.String s) throws XPathException
normalizeEQName
in class ExpressionParser
s
- the QName in expanded-name formatXPathException
protected void lookAhead() throws XPathException
XPathException
- if parsing failsprotected boolean atStartOfRelativePath()
ExpressionParser
atStartOfRelativePath
in class ExpressionParser
protected java.lang.String getLanguage()
getLanguage
in class ExpressionParser