|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.sf.saxon.expr.ExpressionParser
public class ExpressionParser
Parser for XPath expressions and XSLT patterns. This code was originally inspired by James Clark's xt but has been totally rewritten (several times)
| Nested Class Summary | |
|---|---|
static class |
ExpressionParser.ForClause
|
| Field Summary | |
|---|---|
protected StaticContext |
env
|
protected int |
numberOfRangeVariables
|
protected Stack |
rangeVariables
|
protected boolean |
scanOnly
|
protected Tokenizer |
t
|
| Constructor Summary | |
|---|---|
ExpressionParser()
|
|
| Method Summary | |
|---|---|
protected String |
currentTokenDisplay()
Display the current token in an error message |
protected void |
declareRangeVariable(VariableDeclaration declaration)
Declare a range variable (record its existence within the parser). |
protected void |
expect(int token)
Expect a given token, fail if the current token is different |
protected String |
getLanguage()
Get the current language (XPath or XQuery) |
Stack |
getRangeVariableStack()
Get the range variable stack. |
Tokenizer |
getTokenizer()
|
protected void |
grumble(String message)
Report a parsing error |
protected boolean |
isKeyword(String s)
Test whether the current token is a given keyword. |
LocalNameTest |
makeLocalNameTest(short nodeType,
String localName)
Make a LocalNameTest (*:name) |
protected SourceLocator |
makeLocator()
Create a SourceLocator for use in an exception |
int |
makeNameCode(String qname,
boolean useDefault)
Make a NameCode, using this Element as the context for namespace resolution |
NamespaceTest |
makeNamespaceTest(short nodeType,
String prefix)
Make a NamespaceTest (name:*) |
NameTest |
makeNameTest(short nodeType,
String qname,
boolean useDefault)
Make a NameTest, using the static context for namespace resolution |
protected StringValue |
makeStringLiteral(String currentTokenValue)
Method to make a string literal from a token identified as a string literal. |
protected void |
nextToken()
Read the next token, catching any exception thrown by the tokenizer |
Expression |
parse(String expression,
int start,
int terminator,
StaticContext env)
Parse a string representing an expression |
protected Expression |
parseConstructor()
Parse a node constructor. |
protected Expression |
parseExpression()
Parse a top-level Expression: ExprSingle ( ',' ExprSingle )* |
protected Expression |
parseExprSingle()
Parse an ExprSingle |
protected Expression |
parseForExpression()
Parse a FOR expression: for $x in expr (',' $y in expr)* 'return' expr |
protected Expression |
parseMappingExpression()
Parse a mapping expression. |
protected NodeTest |
parseNodeTest(short nodeType)
Parse a NodeTest. |
Pattern |
parsePattern(String pattern,
StaticContext env)
Parse a string representing an XSLT pattern |
protected Expression |
parseRelativePath()
Parse a relative path (a sequence of steps). |
protected SequenceType |
parseSequenceType()
Parse the sequence type production. |
SequenceType |
parseSequenceType(String input,
StaticContext env)
Parse a string representing a sequence type |
protected Expression |
parseStepExpression()
Parse a step (including an optional sequence of predicates) |
protected Expression |
parseTypeswitchExpression()
Parse a Typeswitch Expression. |
protected Expression |
parseValidateExpression()
Parse a Validate Expression. |
protected void |
setLocation(Expression exp)
Set location information on an expression. |
protected void |
setLocation(Expression exp,
int line)
Set location information on an expression. |
void |
setRangeVariableStack(Stack stack)
Set the range variable stack. |
void |
setScanOnly(boolean scanOnly)
|
protected void |
undeclareRangeVariable()
Note when the most recently declared range variable has gone out of scope |
protected void |
warning(String message)
Output a warning message |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected Tokenizer t
protected StaticContext env
protected int numberOfRangeVariables
protected Stack rangeVariables
protected boolean scanOnly
| Constructor Detail |
|---|
public ExpressionParser()
| Method Detail |
|---|
public Tokenizer getTokenizer()
protected void nextToken()
throws XPathException
XPathException
protected void expect(int token)
throws XPathException
token - the expected token
XPathException - if the current token is not the expected
token
protected void grumble(String message)
throws XPathException
message - the error message
XPathException - always thrown: an exception containing the
supplied message
protected void warning(String message)
throws XPathException
XPathExceptionprotected String getLanguage()
protected String currentTokenDisplay()
public Expression parse(String expression,
int start,
int terminator,
StaticContext env)
throws XPathException
expression - the expression expressed as a Stringenv - the static context for the expression
XPathException - if the expression contains a syntax error
public Pattern parsePattern(String pattern,
StaticContext env)
throws XPathException
pattern - the pattern expressed as a Stringenv - the static context for the pattern
XPathException - if the pattern contains a syntax error
public SequenceType parseSequenceType(String input,
StaticContext env)
throws XPathException
input - the string, which should conform to the XPath SequenceType
productionenv - the static context
XPathException - if any error is encountered
protected Expression parseExpression()
throws XPathException
XPathException - if the expression contains a syntax error
protected Expression parseExprSingle()
throws XPathException
XPathException - if any error is encountered
protected Expression parseTypeswitchExpression()
throws XPathException
XPathException
protected Expression parseValidateExpression()
throws XPathException
XPathException
protected Expression parseForExpression()
throws XPathException
XPathException - if any error is encountered
protected Expression parseMappingExpression()
throws XPathException
Syntax:
(for|some|every) $x in expr (',' $y in expr)* (return|satisfies) expr
On entry, the current token indicates whether a for, some, or every expression is expected.
XPathException - if any error is encountered
protected SequenceType parseSequenceType()
throws XPathException
XPathException - if any error is encountered
protected Expression parseRelativePath()
throws XPathException
XPathException - if any error is encountered
protected Expression parseStepExpression()
throws XPathException
XPathException - if any error is encountered
protected StringValue makeStringLiteral(String currentTokenValue)
throws XPathException
currentTokenValue -
XPathException
protected Expression parseConstructor()
throws XPathException
XPathException
protected NodeTest parseNodeTest(short nodeType)
throws XPathException
nodeType - the node type being sought if one is specified
XPathException - if any error is encountered
protected void declareRangeVariable(VariableDeclaration declaration)
throws XPathException
declaration - the VariableDeclaration to be added to the stack
XPathException - if any error is encounteredprotected void undeclareRangeVariable()
public Stack getRangeVariableStack()
public void setRangeVariableStack(Stack stack)
public final int makeNameCode(String qname,
boolean useDefault)
throws XPathException
qname - The name as written, in the form "[prefix:]localname"useDefault - Defines the action when there is no prefix. If
true, use the default namespace URI for element names. If false,
use no namespace URI (as for attribute names).
XPathException - if the name is invalid, or the prefix
undeclared
public NameTest makeNameTest(short nodeType,
String qname,
boolean useDefault)
throws XPathException
nodeType - the type of node required (identified by a constant in
class Type)qname - the lexical QName of the required nodeuseDefault - true if the default namespace should be used when
the QName is unprefixed
XPathException - if the QName is invalid
public NamespaceTest makeNamespaceTest(short nodeType,
String prefix)
throws XPathException
nodeType - integer code identifying the type of node requiredprefix - the namespace prefix
XPathException - if the namespace prefix is not declared
public LocalNameTest makeLocalNameTest(short nodeType,
String localName)
throws XPathException
nodeType - the kind of node to be matchedlocalName - the requred local name
XPathException - if the local name is invalidprotected void setLocation(Expression exp)
protected void setLocation(Expression exp,
int line)
protected SourceLocator makeLocator()
protected boolean isKeyword(String s)
s - The string to be compared with the current token
public void setScanOnly(boolean scanOnly)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||