18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright 2005 Frerich Raabe <raabe@kde.org> 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Apple Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%{ 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XPATH) 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathFunctions.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathNSResolver.h" 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathParser.h" 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathPath.h" 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathPredicate.h" 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "XPathVariableReference.h" 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/FastMalloc.h> 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define YYMALLOC fastMalloc 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define YYFREE fastFree 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YYENABLE_NLS 0 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YYLTYPE_IS_TRIVIAL 1 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YYDEBUG 0 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YYMAXDEPTH 10000 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define YYPARSE_PARAM parserParameter 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PARSER static_cast<Parser*>(parserParameter) 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace XPath; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%} 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%pure_parser 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%union 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Step::Axis axis; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Step::NodeTest* nodeTest; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NumericOp::Opcode numop; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project EqTestOp::Opcode eqop; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String* str; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Expression* expr; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Vector<Predicate*>* predList; 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Vector<Expression*>* argList; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Step* step; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project LocationPath* locationPath; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%{ 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 75635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } 76635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectstatic void xpathyyerror(const char*) { } 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%} 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%left <numop> MULOP 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%left <eqop> EQOP RELOP 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%left PLUS MINUS 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%left OR AND 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token <axis> AXISNAME 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token <str> NODETYPE PI FUNCTIONNAME LITERAL 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token <str> VARIABLEREFERENCE NUMBER 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token DOTDOT SLASHSLASH 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token <str> NAMETEST 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%token XPATH_ERROR 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <locationPath> LocationPath 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <locationPath> AbsoluteLocationPath 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <locationPath> RelativeLocationPath 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <step> Step 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <axis> AxisSpecifier 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <step> DescendantOrSelf 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <nodeTest> NodeTest 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> Predicate 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <predList> OptionalPredicateList 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <predList> PredicateList 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <step> AbbreviatedStep 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> Expr 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> PrimaryExpr 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> FunctionCall 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <argList> ArgumentList 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> Argument 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> UnionExpr 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> PathExpr 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> FilterExpr 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> OrExpr 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> AndExpr 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> EqualityExpr 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> RelationalExpr 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> AdditiveExpr 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> MultiplicativeExpr 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%type <expr> UnaryExpr 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%% 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectExpr: 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OrExpr 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->m_topExpr = $1; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectLocationPath: 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RelativeLocationPath 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->setAbsolute(false); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AbsoluteLocationPath 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->setAbsolute(true); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectAbsoluteLocationPath: 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '/' 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new LocationPath; 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '/' RelativeLocationPath 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = $2; 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project DescendantOrSelf RelativeLocationPath 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = $2; 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->insertFirstStep($1); 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectRelativeLocationPath: 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Step 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new LocationPath; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->appendStep($1); 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RelativeLocationPath '/' Step 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->appendStep($3); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RelativeLocationPath DescendantOrSelf Step 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->appendStep($2); 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->appendStep($3); 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($2); 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectStep: 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NodeTest OptionalPredicateList 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ($2) { 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::ChildAxis, *$1, *$2); 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deletePredicateVector($2); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::ChildAxis, *$1); 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteNodeTest($1); 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NAMETEST OptionalPredicateList 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String localName; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String namespaceURI; 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!PARSER->expandQName(*$1, localName, namespaceURI)) { 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->m_gotNamespaceError = true; 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project YYABORT; 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ($2) { 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2); 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deletePredicateVector($2); 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AxisSpecifier NodeTest OptionalPredicateList 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ($3) { 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step($1, *$2, *$3); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deletePredicateVector($3); 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step($1, *$2); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteNodeTest($2); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AxisSpecifier NAMETEST OptionalPredicateList 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String localName; 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project String namespaceURI; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!PARSER->expandQName(*$2, localName, namespaceURI)) { 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->m_gotNamespaceError = true; 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project YYABORT; 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ($3) { 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3); 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deletePredicateVector($3); 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($2); 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AbbreviatedStep 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectAxisSpecifier: 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AXISNAME 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '@' 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = Step::AttributeAxis; 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectNodeTest: 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NODETYPE '(' ')' 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (*$1 == "node") 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step::NodeTest(Step::NodeTest::AnyNodeTest); 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (*$1 == "text") 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step::NodeTest(Step::NodeTest::TextNodeTest); 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (*$1 == "comment") 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest); 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerNodeTest($$); 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PI '(' ')' 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerNodeTest($$); 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PI '(' LITERAL ')' 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace()); 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($3); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerNodeTest($$); 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectOptionalPredicateList: 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* empty */ 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = 0; 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PredicateList 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPredicateList: 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Predicate 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Vector<Predicate*>; 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->append(new Predicate($1)); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerPredicateVector($$); 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PredicateList Predicate 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->append(new Predicate($2)); 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($2); 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPredicate: 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '[' Expr ']' 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = $2; 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectDescendantOrSelf: 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project SLASHSLASH 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectAbbreviatedStep: 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '.' 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project DOTDOT 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPrimaryExpr: 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project VARIABLEREFERENCE 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new VariableReference(*$1); 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project '(' Expr ')' 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = $2; 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project LITERAL 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new StringExpression(*$1); 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project NUMBER 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Number($1->toDouble()); 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FunctionCall 3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFunctionCall: 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FUNCTIONNAME '(' ')' 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = createFunction(*$1); 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!$$) 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project YYABORT; 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FUNCTIONNAME '(' ArgumentList ')' 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = createFunction(*$1, *$3); 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!$$) 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project YYABORT; 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteString($1); 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deleteExpressionVector($3); 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArgumentList: 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Argument 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Vector<Expression*>; 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->append($1); 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerExpressionVector($$); 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ArgumentList ',' Argument 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->append($3); 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArgument: 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Expr 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectUnionExpr: 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PathExpr 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UnionExpr '|' PathExpr 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Union; 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->addSubExpression($1); 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->addSubExpression($3); 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectPathExpr: 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project LocationPath 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = $1; 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FilterExpr 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FilterExpr '/' RelativeLocationPath 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $3->setAbsolute(true); 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Path(static_cast<Filter*>($1), $3); 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FilterExpr DescendantOrSelf RelativeLocationPath 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $3->insertFirstStep($2); 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $3->setAbsolute(true); 4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Path(static_cast<Filter*>($1), $3); 4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($2); 4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFilterExpr: 4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PrimaryExpr 4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PrimaryExpr PredicateList 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Filter($1, *$2); 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->deletePredicateVector($2); 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectOrExpr: 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AndExpr 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project OrExpr OR AndExpr 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3); 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectAndExpr: 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project EqualityExpr 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AndExpr AND EqualityExpr 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new LogicalOp(LogicalOp::OP_And, $1, $3); 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectEqualityExpr: 4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RelationalExpr 4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project EqualityExpr EQOP RelationalExpr 4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new EqTestOp($2, $1, $3); 4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectRelationalExpr: 5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AdditiveExpr 5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RelationalExpr RELOP AdditiveExpr 5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new EqTestOp($2, $1, $3); 5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectAdditiveExpr: 5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MultiplicativeExpr 5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AdditiveExpr PLUS MultiplicativeExpr 5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new NumericOp(NumericOp::OP_Add, $1, $3); 5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AdditiveExpr MINUS MultiplicativeExpr 5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new NumericOp(NumericOp::OP_Sub, $1, $3); 5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectMultiplicativeExpr: 5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UnaryExpr 5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MultiplicativeExpr MULOP UnaryExpr 5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new NumericOp($2, $1, $3); 5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($1); 5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($3); 5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectUnaryExpr: 5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UnionExpr 5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project | 5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MINUS UnaryExpr 5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$ = new Negative; 5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project $$->addSubExpression($2); 5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->unregisterParseNode($2); 5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project PARSER->registerParseNode($$); 5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ; 5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project%% 5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 559