| Bison 2.6 compatibility fix |
| |
| Taken from upstream at http://trac.webkit.org/changeset/124099, with |
| minor adaptations. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| |
| Index: webkit-1.2.7/WebCore/ChangeLog |
| =================================================================== |
| --- webkit-1.2.7.orig/WebCore/ChangeLog 2010-12-28 13:27:37.000000000 +0100 |
| +++ webkit-1.2.7/WebCore/ChangeLog 2012-12-15 15:48:40.000000000 +0100 |
| @@ -1,3 +1,28 @@ |
| +2012-07-30 Alexis Menard <alexis.menard@openbossa.org> |
| + |
| + Build fix with newer bison 2.6. |
| + https://bugs.webkit.org/show_bug.cgi?id=92264 |
| + |
| + Reviewed by Adam Barth. |
| + |
| + As stated in http://www.gnu.org/software/bison/manual/html_node/Table-of-Symbols.html |
| + YYLEX_PARAM and YYPARSE_PARAM are depecreated since version 1.875. So far all Mac OS |
| + version I had access to as well as recent Linux runs at least version 2.3 so it's safe |
| + to use the replacement of these deprecated macros in favor of %lex-param and %parse-param. |
| + As announced http://lists.gnu.org/archive/html/info-gnu/2012-07/msg00011.html with the release |
| + of version 2.6 YYLEX_PARAM and YYPARSE_PARAM are not supported anymore. |
| + |
| + No new tests : build fix and the patch should not trigger any regressions |
| + |
| + * css/CSSGrammar.y: |
| + * css/CSSParser.cpp: |
| + * xml/XPathGrammar.y: Refactored a bit to not use an intermediate PARSER define. |
| + * xml/XPathParser.cpp: bison 2.6 declare xpathyyparse in the .h file now, i.e. XPathGrammar.h |
| + therefore including this file within the namespace {} declarations leads to xpathyyparse being |
| + defined part of WebCore::XPath namespaces but the actual implementation of xpathyyparse is in XPathGrammar.cpp |
| + (generated) and not implemented within the WebCore::XPath so it lead to linking issues. Last, XPathGrammar.h needs |
| + to be included after the other includes as it uses some XPath types. It breaks the style but CSSParser.cpp is doing the same. |
| + |
| 2010-06-21 Philippe Normand <pnormand@igalia.com> |
| |
| Reviewed by Xan Lopez. |
| Index: webkit-1.2.7/WebCore/css/CSSParser.cpp |
| =================================================================== |
| --- webkit-1.2.7.orig/WebCore/css/CSSParser.cpp 2010-12-28 13:24:33.000000000 +0100 |
| +++ webkit-1.2.7/WebCore/css/CSSParser.cpp 2012-12-15 17:29:57.000000000 +0100 |
| @@ -81,7 +81,7 @@ |
| extern int cssyydebug; |
| #endif |
| |
| -extern int cssyyparse(void* parser); |
| +extern int cssyyparse(WebCore::CSSParser*); |
| |
| using namespace std; |
| using namespace WTF; |
| @@ -226,7 +226,7 @@ |
| m_defaultNamespace = starAtom; // Reset the default namespace. |
| |
| setupParser("", string, ""); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| m_rule = 0; |
| } |
| |
| @@ -235,7 +235,7 @@ |
| m_styleSheet = sheet; |
| m_allowNamespaceDeclarations = false; |
| setupParser("@-webkit-rule{", string, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| return m_rule.release(); |
| } |
| |
| @@ -243,7 +243,7 @@ |
| { |
| m_styleSheet = sheet; |
| setupParser("@-webkit-keyframe-rule{ ", string, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| return m_keyframe.release(); |
| } |
| |
| @@ -257,7 +257,7 @@ |
| m_id = id; |
| m_important = important; |
| |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| |
| m_rule = 0; |
| |
| @@ -304,7 +304,7 @@ |
| m_styleSheet = static_cast<CSSStyleSheet*>(declaration->stylesheet()); |
| |
| setupParser("@-webkit-decls{color:", string, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| m_rule = 0; |
| |
| return (m_numParsedProperties && m_parsedProperties[0]->m_id == CSSPropertyColor); |
| @@ -319,7 +319,7 @@ |
| |
| setupParser("@-webkit-selector{", string, "}"); |
| |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| |
| m_selectorListForParseSelector = 0; |
| } |
| @@ -330,7 +330,7 @@ |
| m_styleSheet = static_cast<CSSStyleSheet*>(declaration->stylesheet()); |
| |
| setupParser("@-webkit-decls{", string, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| m_rule = 0; |
| |
| bool ok = false; |
| @@ -354,7 +354,7 @@ |
| // can't use { because tokenizer state switches from mediaquery to initial state when it sees { token. |
| // instead insert one " " (which is WHITESPACE in CSSGrammar.y) |
| setupParser("@-webkit-mediaquery ", string, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| |
| bool ok = false; |
| if (m_mediaQuery) { |
| @@ -5191,7 +5191,7 @@ |
| nameValuePair += variableValue; |
| |
| setupParser("@-webkit-variables-decls{", nameValuePair, "} "); |
| - cssyyparse(this); |
| + ::cssyyparse(this); |
| m_rule = 0; |
| |
| bool ok = false; |
| Index: webkit-1.2.7/WebCore/css/CSSGrammar.y |
| =================================================================== |
| --- webkit-1.2.7.orig/WebCore/css/CSSGrammar.y 2010-09-10 15:20:33.000000000 +0200 |
| +++ webkit-1.2.7/WebCore/css/CSSGrammar.y 2012-12-15 15:48:40.000000000 +0100 |
| @@ -51,14 +51,13 @@ |
| #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; |
| @@ -85,7 +84,7 @@ |
| |
| %{ |
| |
| -static inline int cssyyerror(const char*) |
| +static inline int cssyyerror(void*, const char*) |
| { |
| return 1; |
| } |
| Index: webkit-1.2.7/WebCore/xml/XPathParser.cpp |
| =================================================================== |
| --- webkit-1.2.7.orig/WebCore/xml/XPathParser.cpp 2010-09-10 15:20:33.000000000 +0200 |
| +++ webkit-1.2.7/WebCore/xml/XPathParser.cpp 2012-12-15 15:56:37.000000000 +0100 |
| @@ -35,20 +35,18 @@ |
| #include "XPathEvaluator.h" |
| #include "XPathException.h" |
| #include "XPathNSResolver.h" |
| +#include "XPathPath.h" |
| #include "XPathStep.h" |
| #include <wtf/StdLibExtras.h> |
| |
| -int xpathyyparse(void*); |
| - |
| +using namespace WebCore; |
| using namespace WTF; |
| using namespace Unicode; |
| |
| -namespace WebCore { |
| -namespace XPath { |
| - |
| -class LocationPath; |
| +using namespace XPath; |
| |
| -#include "XPathGrammar.h" |
| +extern int xpathyyparse(WebCore::XPath::Parser*); |
| +#include "XPathGrammar.h" |
| |
| Parser* Parser::currentParser = 0; |
| |
| @@ -630,7 +628,5 @@ |
| delete t; |
| } |
| |
| -} |
| -} |
| |
| #endif // ENABLE(XPATH) |
| Index: webkit-1.2.7/WebCore/xml/XPathGrammar.y |
| =================================================================== |
| --- webkit-1.2.7.orig/WebCore/xml/XPathGrammar.y 2010-02-05 17:26:58.000000000 +0100 |
| +++ webkit-1.2.7/WebCore/xml/XPathGrammar.y 2012-12-15 15:48:40.000000000 +0100 |
| @@ -36,6 +36,7 @@ |
| #include "XPathParser.h" |
| #include "XPathPath.h" |
| #include "XPathPredicate.h" |
| +#include "XPathStep.h" |
| #include "XPathVariableReference.h" |
| #include <wtf/FastMalloc.h> |
| |
| @@ -46,8 +47,6 @@ |
| #define YYLTYPE_IS_TRIVIAL 1 |
| #define YYDEBUG 0 |
| #define YYMAXDEPTH 10000 |
| -#define YYPARSE_PARAM parserParameter |
| -#define PARSER static_cast<Parser*>(parserParameter) |
| |
| using namespace WebCore; |
| using namespace XPath; |
| @@ -55,6 +54,7 @@ |
| %} |
| |
| %pure_parser |
| +%parse-param { WebCore::XPath::Parser* parser } |
| |
| %union |
| { |
| @@ -73,7 +73,7 @@ |
| %{ |
| |
| static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } |
| -static void xpathyyerror(const char*) { } |
| +static void xpathyyerror(void*, const char*) { } |
| |
| %} |
| |
| @@ -120,7 +120,7 @@ |
| Expr: |
| OrExpr |
| { |
| - PARSER->m_topExpr = $1; |
| + parser->m_topExpr = $1; |
| } |
| ; |
| |
| @@ -140,7 +140,7 @@ |
| '/' |
| { |
| $$ = new LocationPath; |
| - PARSER->registerParseNode($$); |
| + parser->registerParseNode($$); |
| } |
| | |
| '/' RelativeLocationPath |
| @@ -152,7 +152,7 @@ |
| { |
| $$ = $2; |
| $$->insertFirstStep($1); |
| - PARSER->unregisterParseNode($1); |
| + parser->unregisterParseNode($1); |
| } |
| ; |
| |
| @@ -161,22 +161,22 @@ |
| { |
| $$ = 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); |
| } |
| ; |
| |
| @@ -185,58 +185,58 @@ |
| { |
| 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 |
| @@ -261,23 +261,23 @@ |
| 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($$); |
| } |
| ; |
| |
| @@ -295,14 +295,14 @@ |
| { |
| $$ = new Vector<Predicate*>; |
| $$->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); |
| } |
| ; |
| |
| @@ -317,7 +317,7 @@ |
| SLASHSLASH |
| { |
| $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); |
| - PARSER->registerParseNode($$); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -325,13 +325,13 @@ |
| '.' |
| { |
| $$ = 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($$); |
| } |
| ; |
| |
| @@ -339,8 +339,8 @@ |
| VARIABLEREFERENCE |
| { |
| $$ = new VariableReference(*$1); |
| - PARSER->deleteString($1); |
| - PARSER->registerParseNode($$); |
| + parser->deleteString($1); |
| + parser->registerParseNode($$); |
| } |
| | |
| '(' Expr ')' |
| @@ -351,15 +351,15 @@ |
| 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 |
| @@ -371,8 +371,8 @@ |
| $$ = createFunction(*$1); |
| if (!$$) |
| YYABORT; |
| - PARSER->deleteString($1); |
| - PARSER->registerParseNode($$); |
| + parser->deleteString($1); |
| + parser->registerParseNode($$); |
| } |
| | |
| FUNCTIONNAME '(' ArgumentList ')' |
| @@ -380,9 +380,9 @@ |
| $$ = createFunction(*$1, *$3); |
| if (!$$) |
| YYABORT; |
| - PARSER->deleteString($1); |
| - PARSER->deleteExpressionVector($3); |
| - PARSER->registerParseNode($$); |
| + parser->deleteString($1); |
| + parser->deleteExpressionVector($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -391,14 +391,14 @@ |
| { |
| $$ = new Vector<Expression*>; |
| $$->append($1); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->registerExpressionVector($$); |
| + parser->unregisterParseNode($1); |
| + parser->registerExpressionVector($$); |
| } |
| | |
| ArgumentList ',' Argument |
| { |
| $$->append($3); |
| - PARSER->unregisterParseNode($3); |
| + parser->unregisterParseNode($3); |
| } |
| ; |
| |
| @@ -414,9 +414,9 @@ |
| $$ = new Union; |
| $$->addSubExpression($1); |
| $$->addSubExpression($3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -432,9 +432,9 @@ |
| { |
| $3->setAbsolute(true); |
| $$ = new Path(static_cast<Filter*>($1), $3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| | |
| FilterExpr DescendantOrSelf RelativeLocationPath |
| @@ -442,10 +442,10 @@ |
| $3->insertFirstStep($2); |
| $3->setAbsolute(true); |
| $$ = new Path(static_cast<Filter*>($1), $3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($2); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($2); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -455,9 +455,9 @@ |
| PrimaryExpr PredicateList |
| { |
| $$ = new Filter($1, *$2); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->deletePredicateVector($2); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->deletePredicateVector($2); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -467,9 +467,9 @@ |
| 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($$); |
| } |
| ; |
| |
| @@ -479,9 +479,9 @@ |
| 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($$); |
| } |
| ; |
| |
| @@ -491,9 +491,9 @@ |
| EqualityExpr EQOP RelationalExpr |
| { |
| $$ = new EqTestOp($2, $1, $3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -503,9 +503,9 @@ |
| RelationalExpr RELOP AdditiveExpr |
| { |
| $$ = new EqTestOp($2, $1, $3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -515,17 +515,17 @@ |
| 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($$); |
| } |
| ; |
| |
| @@ -535,9 +535,9 @@ |
| MultiplicativeExpr MULOP UnaryExpr |
| { |
| $$ = new NumericOp($2, $1, $3); |
| - PARSER->unregisterParseNode($1); |
| - PARSER->unregisterParseNode($3); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($1); |
| + parser->unregisterParseNode($3); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |
| @@ -548,8 +548,8 @@ |
| { |
| $$ = new Negative; |
| $$->addSubExpression($2); |
| - PARSER->unregisterParseNode($2); |
| - PARSER->registerParseNode($$); |
| + parser->unregisterParseNode($2); |
| + parser->registerParseNode($$); |
| } |
| ; |
| |