| Index: Source/core/xml/XPathGrammar.y
|
| diff --git a/Source/core/xml/XPathGrammar.y b/Source/core/xml/XPathGrammar.y
|
| index 982791be52efb622f2d33f1a74c4f04e56ee6e16..6774e5d043b15a813a7ac5fd577e2107587a7889 100644
|
| --- a/Source/core/xml/XPathGrammar.y
|
| +++ b/Source/core/xml/XPathGrammar.y
|
| @@ -6,13 +6,13 @@
|
| * Redistribution and use in source and binary forms, with or without
|
| * modification, are permitted provided that the following conditions
|
| * are met:
|
| - *
|
| + *
|
| * 1. Redistributions of source code must retain the above copyright
|
| * notice, this list of conditions and the following disclaimer.
|
| * 2. Redistributions in binary form must reproduce the above copyright
|
| * notice, this list of conditions and the following disclaimer in the
|
| * documentation and/or other materials provided with the distribution.
|
| - *
|
| + *
|
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
| * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
| @@ -62,8 +62,8 @@ using namespace XPath;
|
| blink::XPath::EqTestOp::Opcode eqop;
|
| String* str;
|
| blink::XPath::Expression* expr;
|
| - WillBeHeapVector<OwnPtrWillBeMember<blink::XPath::Predicate>>* predList;
|
| - WillBeHeapVector<OwnPtrWillBeMember<blink::XPath::Expression>>* argList;
|
| + blink::HeapVector<blink::Member<blink::XPath::Predicate>>* predList;
|
| + blink::HeapVector<blink::Member<blink::XPath::Expression>>* argList;
|
| blink::XPath::Step* step;
|
| blink::XPath::LocationPath* locationPath;
|
| }
|
| @@ -72,7 +72,7 @@ using namespace XPath;
|
|
|
| static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); }
|
| static void xpathyyerror(void*, const char*) { }
|
| -
|
| +
|
| %}
|
|
|
| %left <numop> MULOP
|
| @@ -138,7 +138,6 @@ AbsoluteLocationPath:
|
| '/'
|
| {
|
| $$ = new LocationPath;
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| '/' RelativeLocationPath
|
| @@ -150,7 +149,6 @@ AbsoluteLocationPath:
|
| {
|
| $$ = $2;
|
| $$->insertFirstStep($1);
|
| - parser->unregisterParseNode($1);
|
| }
|
| ;
|
|
|
| @@ -159,35 +157,27 @@ RelativeLocationPath:
|
| {
|
| $$ = new LocationPath;
|
| $$->appendStep($1);
|
| - parser->unregisterParseNode($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| RelativeLocationPath '/' Step
|
| {
|
| $$->appendStep($3);
|
| - parser->unregisterParseNode($3);
|
| }
|
| |
|
| RelativeLocationPath DescendantOrSelf Step
|
| {
|
| $$->appendStep($2);
|
| $$->appendStep($3);
|
| - parser->unregisterParseNode($2);
|
| - parser->unregisterParseNode($3);
|
| }
|
| ;
|
|
|
| Step:
|
| NodeTest OptionalPredicateList
|
| {
|
| - if ($2) {
|
| + if ($2)
|
| $$ = new Step(Step::ChildAxis, *$1, *$2);
|
| - parser->deletePredicateVector($2);
|
| - } else
|
| + else
|
| $$ = new Step(Step::ChildAxis, *$1);
|
| - parser->deleteNodeTest($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| NAMETEST OptionalPredicateList
|
| @@ -198,25 +188,20 @@ Step:
|
| parser->m_gotNamespaceError = true;
|
| YYABORT;
|
| }
|
| -
|
| - if ($2) {
|
| +
|
| + if ($2)
|
| $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2);
|
| - parser->deletePredicateVector($2);
|
| - } else
|
| + else
|
| $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
|
| parser->deleteString($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| AxisSpecifier NodeTest OptionalPredicateList
|
| {
|
| - if ($3) {
|
| + if ($3)
|
| $$ = new Step($1, *$2, *$3);
|
| - parser->deletePredicateVector($3);
|
| - } else
|
| + else
|
| $$ = new Step($1, *$2);
|
| - parser->deleteNodeTest($2);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| AxisSpecifier NAMETEST OptionalPredicateList
|
| @@ -228,13 +213,11 @@ Step:
|
| YYABORT;
|
| }
|
|
|
| - if ($3) {
|
| + if ($3)
|
| $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3);
|
| - parser->deletePredicateVector($3);
|
| - } else
|
| + else
|
| $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
|
| parser->deleteString($2);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| AbbreviatedStep
|
| @@ -260,14 +243,12 @@ NodeTest:
|
| $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest);
|
|
|
| parser->deleteString($1);
|
| - parser->registerNodeTest($$);
|
| }
|
| |
|
| PI '(' ')'
|
| {
|
| $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest);
|
| parser->deleteString($1);
|
| - parser->registerNodeTest($$);
|
| }
|
| |
|
| PI '(' LITERAL ')'
|
| @@ -275,7 +256,6 @@ NodeTest:
|
| $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace());
|
| parser->deleteString($1);
|
| parser->deleteString($3);
|
| - parser->registerNodeTest($$);
|
| }
|
| ;
|
|
|
| @@ -291,16 +271,13 @@ OptionalPredicateList:
|
| PredicateList:
|
| Predicate
|
| {
|
| - $$ = new WillBeHeapVector<OwnPtrWillBeMember<Predicate>>;
|
| - $$->append(adoptPtrWillBeNoop(new Predicate(adoptPtrWillBeNoop($1))));
|
| - parser->unregisterParseNode($1);
|
| - parser->registerPredicateVector($$);
|
| + $$ = new blink::HeapVector<blink::Member<Predicate>>;
|
| + $$->append(new Predicate($1));
|
| }
|
| |
|
| PredicateList Predicate
|
| {
|
| - $$->append(adoptPtrWillBeNoop(new Predicate(adoptPtrWillBeNoop($2))));
|
| - parser->unregisterParseNode($2);
|
| + $$->append(new Predicate($2));
|
| }
|
| ;
|
|
|
| @@ -315,7 +292,6 @@ DescendantOrSelf:
|
| SLASHSLASH
|
| {
|
| $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
|
| - parser->registerParseNode($$);
|
| }
|
| ;
|
|
|
| @@ -323,13 +299,11 @@ AbbreviatedStep:
|
| '.'
|
| {
|
| $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| DOTDOT
|
| {
|
| $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
|
| - parser->registerParseNode($$);
|
| }
|
| ;
|
|
|
| @@ -338,7 +312,6 @@ PrimaryExpr:
|
| {
|
| $$ = new VariableReference(*$1);
|
| parser->deleteString($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| '(' Expr ')'
|
| @@ -350,14 +323,12 @@ PrimaryExpr:
|
| {
|
| $$ = new StringExpression(*$1);
|
| parser->deleteString($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| NUMBER
|
| {
|
| $$ = new Number($1->toDouble());
|
| parser->deleteString($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| FunctionCall
|
| @@ -370,7 +341,6 @@ FunctionCall:
|
| if (!$$)
|
| YYABORT;
|
| parser->deleteString($1);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| FUNCTIONNAME '(' ArgumentList ')'
|
| @@ -379,24 +349,19 @@ FunctionCall:
|
| if (!$$)
|
| YYABORT;
|
| parser->deleteString($1);
|
| - parser->deleteExpressionVector($3);
|
| - parser->registerParseNode($$);
|
| }
|
| ;
|
|
|
| ArgumentList:
|
| Argument
|
| {
|
| - $$ = new WillBeHeapVector<OwnPtrWillBeMember<Expression>>;
|
| - $$->append(adoptPtrWillBeNoop($1));
|
| - parser->unregisterParseNode($1);
|
| - parser->registerExpressionVector($$);
|
| + $$ = new blink::HeapVector<blink::Member<Expression>>;
|
| + $$->append($1);
|
| }
|
| |
|
| ArgumentList ',' Argument
|
| {
|
| - $$->append(adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($3);
|
| + $$->append($3);
|
| }
|
| ;
|
|
|
| @@ -410,11 +375,8 @@ UnionExpr:
|
| UnionExpr '|' PathExpr
|
| {
|
| $$ = new Union;
|
| - $$->addSubExpression(adoptPtrWillBeNoop($1));
|
| - $$->addSubExpression(adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$->addSubExpression($1);
|
| + $$->addSubExpression($3);
|
| }
|
| ;
|
|
|
| @@ -430,9 +392,6 @@ PathExpr:
|
| {
|
| $3->setAbsolute(true);
|
| $$ = new Path($1, $3);
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| }
|
| |
|
| FilterExpr DescendantOrSelf RelativeLocationPath
|
| @@ -440,10 +399,6 @@ PathExpr:
|
| $3->insertFirstStep($2);
|
| $3->setAbsolute(true);
|
| $$ = new Path($1, $3);
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($2);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| }
|
| ;
|
|
|
| @@ -452,10 +407,7 @@ FilterExpr:
|
| |
|
| PrimaryExpr PredicateList
|
| {
|
| - $$ = new Filter(adoptPtrWillBeNoop($1), *$2);
|
| - parser->unregisterParseNode($1);
|
| - parser->deletePredicateVector($2);
|
| - parser->registerParseNode($$);
|
| + $$ = new Filter($1, *$2);
|
| }
|
| ;
|
|
|
| @@ -464,10 +416,7 @@ OrExpr:
|
| |
|
| OrExpr OR AndExpr
|
| {
|
| - $$ = new LogicalOp(LogicalOp::OP_Or, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -476,10 +425,7 @@ AndExpr:
|
| |
|
| AndExpr AND EqualityExpr
|
| {
|
| - $$ = new LogicalOp(LogicalOp::OP_And, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new LogicalOp(LogicalOp::OP_And, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -488,10 +434,7 @@ EqualityExpr:
|
| |
|
| EqualityExpr EQOP RelationalExpr
|
| {
|
| - $$ = new EqTestOp($2, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new EqTestOp($2, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -500,10 +443,7 @@ RelationalExpr:
|
| |
|
| RelationalExpr RELOP AdditiveExpr
|
| {
|
| - $$ = new EqTestOp($2, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new EqTestOp($2, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -512,18 +452,12 @@ AdditiveExpr:
|
| |
|
| AdditiveExpr PLUS MultiplicativeExpr
|
| {
|
| - $$ = new NumericOp(NumericOp::OP_Add, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new NumericOp(NumericOp::OP_Add, $1, $3);
|
| }
|
| |
|
| AdditiveExpr MINUS MultiplicativeExpr
|
| {
|
| - $$ = new NumericOp(NumericOp::OP_Sub, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new NumericOp(NumericOp::OP_Sub, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -532,10 +466,7 @@ MultiplicativeExpr:
|
| |
|
| MultiplicativeExpr MULOP UnaryExpr
|
| {
|
| - $$ = new NumericOp($2, adoptPtrWillBeNoop($1), adoptPtrWillBeNoop($3));
|
| - parser->unregisterParseNode($1);
|
| - parser->unregisterParseNode($3);
|
| - parser->registerParseNode($$);
|
| + $$ = new NumericOp($2, $1, $3);
|
| }
|
| ;
|
|
|
| @@ -545,9 +476,7 @@ UnaryExpr:
|
| MINUS UnaryExpr
|
| {
|
| $$ = new Negative;
|
| - $$->addSubExpression(adoptPtrWillBeNoop($2));
|
| - parser->unregisterParseNode($2);
|
| - parser->registerParseNode($$);
|
| + $$->addSubExpression($2);
|
| }
|
| ;
|
|
|
|
|