From https://bugs.webkit.org/show_bug.cgi?id=92264 Subversion Revision: 123651 diff --git a/Source/WebCore/css/CSSGrammar.y b/Source/WebCore/css/CSSGrammar.y index c7c10b541cd46ad4febc6efe289e81b2cfb0861e..1c604e76b4da4cc65f395bc4a73b112561bd5c84 100644 --- a/Source/WebCore/css/CSSGrammar.y +++ b/Source/WebCore/css/CSSGrammar.y @@ -53,14 +53,13 @@ using namespace HTMLNames; #define YYMAXDEPTH 10000 #define YYDEBUG 0 -// FIXME: Replace with %parse-param { CSSParser* parser } once we can depend on bison 2.x -#define YYPARSE_PARAM parser -#define YYLEX_PARAM parser - %} %pure_parser +%parse-param { CSSParser* parser } +%lex-param { CSSParser* parser } + %union { bool boolean; char character; @@ -89,7 +88,7 @@ using namespace HTMLNames; %{ -static inline int cssyyerror(const char*) +static inline int cssyyerror(void*, const char*) { return 1; } diff --git a/Source/WebCore/css/CSSParser.cpp b/Source/WebCore/css/CSSParser.cpp index 650844060477cfc6ea6fdeaf11ec63b34ac646e7..8369549dbff25537cf93a11237a9bbbac4fe50f2 100644 --- a/Source/WebCore/css/CSSParser.cpp +++ b/Source/WebCore/css/CSSParser.cpp @@ -114,7 +114,7 @@ extern int cssyydebug; #endif -extern int cssyyparse(void* parser); +extern int cssyyparse(WebCore::CSSParser*); using namespace std; using namespace WTF; diff --git a/Source/WebCore/xml/XPathGrammar.y b/Source/WebCore/xml/XPathGrammar.y index 2eba5b35bd2338272a0f4ec756d137e47d2d59c8..d558211db2d89ea13716762a51397755560f66f3 100644 --- a/Source/WebCore/xml/XPathGrammar.y +++ b/Source/WebCore/xml/XPathGrammar.y @@ -34,6 +34,7 @@ #include "XPathParser.h" #include "XPathPath.h" #include "XPathPredicate.h" +#include "XPathStep.h" #include "XPathVariableReference.h" #include @@ -44,8 +45,6 @@ #define YYLTYPE_IS_TRIVIAL 1 #define YYDEBUG 0 #define YYMAXDEPTH 10000 -#define YYPARSE_PARAM parserParameter -#define PARSER static_cast(parserParameter) using namespace WebCore; using namespace XPath; @@ -53,6 +52,7 @@ using namespace XPath; %} %pure_parser +%parse-param { WebCore::XPath::Parser* parser } %union { @@ -71,7 +71,7 @@ using namespace XPath; %{ static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } -static void xpathyyerror(const char*) { } +static void xpathyyerror(void*, const char*) { } %} @@ -118,7 +118,7 @@ static void xpathyyerror(const char*) { } Expr: OrExpr { - PARSER->m_topExpr = $1; + parser->m_topExpr = $1; } ; @@ -138,7 +138,7 @@ AbsoluteLocationPath: '/' { $$ = new LocationPath; - PARSER->registerParseNode($$); + parser->registerParseNode($$); } | '/' RelativeLocationPath @@ -150,7 +150,7 @@ AbsoluteLocationPath: { $$ = $2; $$->insertFirstStep($1); - PARSER->unregisterParseNode($1); + parser->unregisterParseNode($1); } ; @@ -159,22 +159,22 @@ RelativeLocationPath: { $$ = new LocationPath; $$->appendStep($1); - PARSER->unregisterParseNode($1); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->registerParseNode($$); } | RelativeLocationPath '/' Step { $$->appendStep($3); - PARSER->unregisterParseNode($3); + parser->unregisterParseNode($3); } | RelativeLocationPath DescendantOrSelf Step { $$->appendStep($2); $$->appendStep($3); - PARSER->unregisterParseNode($2); - PARSER->unregisterParseNode($3); + parser->unregisterParseNode($2); + parser->unregisterParseNode($3); } ; @@ -183,58 +183,58 @@ Step: { if ($2) { $$ = new Step(Step::ChildAxis, *$1, *$2); - PARSER->deletePredicateVector($2); + parser->deletePredicateVector($2); } else $$ = new Step(Step::ChildAxis, *$1); - PARSER->deleteNodeTest($1); - PARSER->registerParseNode($$); + parser->deleteNodeTest($1); + parser->registerParseNode($$); } | NAMETEST OptionalPredicateList { String localName; String namespaceURI; - if (!PARSER->expandQName(*$1, localName, namespaceURI)) { - PARSER->m_gotNamespaceError = true; + if (!parser->expandQName(*$1, localName, namespaceURI)) { + parser->m_gotNamespaceError = true; YYABORT; } if ($2) { $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2); - PARSER->deletePredicateVector($2); + parser->deletePredicateVector($2); } else $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); - PARSER->deleteString($1); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->registerParseNode($$); } | AxisSpecifier NodeTest OptionalPredicateList { if ($3) { $$ = new Step($1, *$2, *$3); - PARSER->deletePredicateVector($3); + parser->deletePredicateVector($3); } else $$ = new Step($1, *$2); - PARSER->deleteNodeTest($2); - PARSER->registerParseNode($$); + parser->deleteNodeTest($2); + parser->registerParseNode($$); } | AxisSpecifier NAMETEST OptionalPredicateList { String localName; String namespaceURI; - if (!PARSER->expandQName(*$2, localName, namespaceURI)) { - PARSER->m_gotNamespaceError = true; + if (!parser->expandQName(*$2, localName, namespaceURI)) { + parser->m_gotNamespaceError = true; YYABORT; } if ($3) { $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3); - PARSER->deletePredicateVector($3); + parser->deletePredicateVector($3); } else $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI)); - PARSER->deleteString($2); - PARSER->registerParseNode($$); + parser->deleteString($2); + parser->registerParseNode($$); } | AbbreviatedStep @@ -259,23 +259,23 @@ NodeTest: else if (*$1 == "comment") $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest); - PARSER->deleteString($1); - PARSER->registerNodeTest($$); + parser->deleteString($1); + parser->registerNodeTest($$); } | PI '(' ')' { $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); - PARSER->deleteString($1); - PARSER->registerNodeTest($$); + parser->deleteString($1); + parser->registerNodeTest($$); } | PI '(' LITERAL ')' { $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace()); - PARSER->deleteString($1); - PARSER->deleteString($3); - PARSER->registerNodeTest($$); + parser->deleteString($1); + parser->deleteString($3); + parser->registerNodeTest($$); } ; @@ -293,14 +293,14 @@ PredicateList: { $$ = new Vector; $$->append(new Predicate($1)); - PARSER->unregisterParseNode($1); - PARSER->registerPredicateVector($$); + parser->unregisterParseNode($1); + parser->registerPredicateVector($$); } | PredicateList Predicate { $$->append(new Predicate($2)); - PARSER->unregisterParseNode($2); + parser->unregisterParseNode($2); } ; @@ -315,7 +315,7 @@ DescendantOrSelf: SLASHSLASH { $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); - PARSER->registerParseNode($$); + parser->registerParseNode($$); } ; @@ -323,13 +323,13 @@ AbbreviatedStep: '.' { $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); - PARSER->registerParseNode($$); + parser->registerParseNode($$); } | DOTDOT { $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); - PARSER->registerParseNode($$); + parser->registerParseNode($$); } ; @@ -337,8 +337,8 @@ PrimaryExpr: VARIABLEREFERENCE { $$ = new VariableReference(*$1); - PARSER->deleteString($1); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->registerParseNode($$); } | '(' Expr ')' @@ -349,15 +349,15 @@ PrimaryExpr: LITERAL { $$ = new StringExpression(*$1); - PARSER->deleteString($1); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->registerParseNode($$); } | NUMBER { $$ = new Number($1->toDouble()); - PARSER->deleteString($1); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->registerParseNode($$); } | FunctionCall @@ -369,8 +369,8 @@ FunctionCall: $$ = createFunction(*$1); if (!$$) YYABORT; - PARSER->deleteString($1); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->registerParseNode($$); } | FUNCTIONNAME '(' ArgumentList ')' @@ -378,9 +378,9 @@ FunctionCall: $$ = createFunction(*$1, *$3); if (!$$) YYABORT; - PARSER->deleteString($1); - PARSER->deleteExpressionVector($3); - PARSER->registerParseNode($$); + parser->deleteString($1); + parser->deleteExpressionVector($3); + parser->registerParseNode($$); } ; @@ -389,14 +389,14 @@ ArgumentList: { $$ = new Vector; $$->append($1); - PARSER->unregisterParseNode($1); - PARSER->registerExpressionVector($$); + parser->unregisterParseNode($1); + parser->registerExpressionVector($$); } | ArgumentList ',' Argument { $$->append($3); - PARSER->unregisterParseNode($3); + parser->unregisterParseNode($3); } ; @@ -412,9 +412,9 @@ UnionExpr: $$ = new Union; $$->addSubExpression($1); $$->addSubExpression($3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -430,9 +430,9 @@ PathExpr: { $3->setAbsolute(true); $$ = new Path(static_cast($1), $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } | FilterExpr DescendantOrSelf RelativeLocationPath @@ -440,10 +440,10 @@ PathExpr: $3->insertFirstStep($2); $3->setAbsolute(true); $$ = new Path(static_cast($1), $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($2); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($2); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -453,9 +453,9 @@ FilterExpr: PrimaryExpr PredicateList { $$ = new Filter($1, *$2); - PARSER->unregisterParseNode($1); - PARSER->deletePredicateVector($2); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->deletePredicateVector($2); + parser->registerParseNode($$); } ; @@ -465,9 +465,9 @@ OrExpr: OrExpr OR AndExpr { $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -477,9 +477,9 @@ AndExpr: AndExpr AND EqualityExpr { $$ = new LogicalOp(LogicalOp::OP_And, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -489,9 +489,9 @@ EqualityExpr: EqualityExpr EQOP RelationalExpr { $$ = new EqTestOp($2, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -501,9 +501,9 @@ RelationalExpr: RelationalExpr RELOP AdditiveExpr { $$ = new EqTestOp($2, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -513,17 +513,17 @@ AdditiveExpr: AdditiveExpr PLUS MultiplicativeExpr { $$ = new NumericOp(NumericOp::OP_Add, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } | AdditiveExpr MINUS MultiplicativeExpr { $$ = new NumericOp(NumericOp::OP_Sub, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -533,9 +533,9 @@ MultiplicativeExpr: MultiplicativeExpr MULOP UnaryExpr { $$ = new NumericOp($2, $1, $3); - PARSER->unregisterParseNode($1); - PARSER->unregisterParseNode($3); - PARSER->registerParseNode($$); + parser->unregisterParseNode($1); + parser->unregisterParseNode($3); + parser->registerParseNode($$); } ; @@ -546,8 +546,8 @@ UnaryExpr: { $$ = new Negative; $$->addSubExpression($2); - PARSER->unregisterParseNode($2); - PARSER->registerParseNode($$); + parser->unregisterParseNode($2); + parser->registerParseNode($$); } ; diff --git a/Source/WebCore/xml/XPathParser.cpp b/Source/WebCore/xml/XPathParser.cpp index 62d8ee37fd6ebb74a580a00c59beb6cd40c5a8b7..b5e6a9237593b4aaa2a243f2ff9d86e57f930a97 100644 --- a/Source/WebCore/xml/XPathParser.cpp +++ b/Source/WebCore/xml/XPathParser.cpp @@ -32,24 +32,21 @@ #include "XPathEvaluator.h" #include "XPathException.h" #include "XPathNSResolver.h" +#include "XPathPath.h" #include "XPathStep.h" #include #include -int xpathyyparse(void*); - +using namespace WebCore; using namespace WTF; using namespace Unicode; +using namespace XPath; -namespace WebCore { -namespace XPath { - -class LocationPath; - -#include "XPathGrammar.h" +extern int xpathyyparse(WebCore::XPath::Parser*); +#include "XPathGrammar.h" Parser* Parser::currentParser = 0; - + enum XMLCat { NameStart, NameCont, NotPartOfName }; typedef HashMap AxisNamesMap; @@ -630,5 +627,3 @@ void Parser::deleteNodeTest(Step::NodeTest* t) delete t; } -} -}