public XPath20(String xpath, SymbolTable symbolTable, NamespaceContext nsContext) throws XPathException { fExpression = xpath; fNsContext = nsContext; //The parser expects '\n' at the end of the expression. So insert it. StringReader reader = new StringReader(fExpression + "\n"); XPath20Parser parser = new XPath20Parser(reader, nsContext); fRootNode = parser.parseExpression(); }
private XPathSyntaxTreeNode Test() throws XPathException { XPathSyntaxTreeNode n; n = OrExpr(); consumeToken(25); return n; }
private QName NameTest() throws XPathException { QName t; t = QName(); return t; }
QName name; int comp; switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case OPEN_PARAN: consumeToken(OPEN_PARAN); n1 = OrExpr(); consumeToken(CLOSE_PARAN); return n1; name = QName(); consumeToken(OPEN_PARAN); if ("not".equals(name.localpart) && "http://www.w3.org/2005/xpath-functions".equals(name.uri)) { n1 = OrExpr(); consumeToken(CLOSE_PARAN); return new FunctionNode(name, n1); n1 = SimpleValue(); consumeToken(CLOSE_PARAN); n1 = new CastNode(n1, name); switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case SYMBOL_EQ: case SYMBOL_NE: case SYMBOL_LE: case SYMBOL_GE: comp = Comparator(); n2 = ValueExpr(); return new CompNode(comp, n1, n2);
private XPathSyntaxTreeNode CastExpr() throws XPathException { XPathSyntaxTreeNode n; QName name; n = SimpleValue(); switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case KEYWORD_CAST: consumeToken(KEYWORD_CAST); consumeToken(KEYWORD_AS); name = QName(); switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case SYMBOL_QUESTION: consumeToken(SYMBOL_QUESTION); break; default: array1[6] = gen; } return new CastNode(n, name); default: array1[7] = gen; } return n; }
private XPathSyntaxTreeNode SimpleValue() throws XPathException { XPathSyntaxTreeNode n; switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case SYMBOL_AT: n = AttrName(); return n; case NUMERIC_LITERAL: case STRING_LITERAL: n = Literal(); return n; default: array1[8] = gen; consumeToken(-1); throw new XPathException("c-general-xpath"); } }
private XPathSyntaxTreeNode OrExpr() throws XPathException { XPathSyntaxTreeNode n1, n2; n1 = AndExpr(); label_1: while (true) { switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case KEYWORD_OR: break; default: array1[0] = gen; break label_1; } consumeToken(KEYWORD_OR); n2 = AndExpr(); return new ConjunctionNode(ConjunctionNode.OR, n1, n2); } return n1; }
private XPathSyntaxTreeNode AndExpr() throws XPathException { XPathSyntaxTreeNode n1, n2; n1 = BooleanExpr(); label_2: while (true) { switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case KEYWORD_AND: break; default: array1[1] = gen; break label_2; } consumeToken(KEYWORD_AND); n2 = BooleanExpr(); return new ConjunctionNode(ConjunctionNode.AND, n1, n2); } return n1; }
private XPathSyntaxTreeNode AttrName() throws XPathException { consumeToken(SYMBOL_AT); return new AttrNode(NameTest()); }
private XPathSyntaxTreeNode ValueExpr() throws XPathException { switch ((nextTokenIndex == -1) ? nextToken() : nextTokenIndex) { case NCNAME: QName name = QName(); consumeToken(OPEN_PARAN); XPathSyntaxTreeNode n1 = SimpleValue(); consumeToken(CLOSE_PARAN); return new CastNode(n1, name); case SYMBOL_AT: case NUMERIC_LITERAL: case STRING_LITERAL: return CastExpr(); default: array1[3] = gen; consumeToken(-1); throw new XPathException("c-general-xpath"); } }