Changeset 124099 in webkit


Ignore:
Timestamp:
Jul 30, 2012 3:18:20 PM (12 years ago)
Author:
alexis.menard@openbossa.org
Message:

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.

Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r124098 r124099  
     12012-07-30  Alexis Menard  <alexis.menard@openbossa.org>
     2
     3        Build fix with newer bison 2.6.
     4        https://bugs.webkit.org/show_bug.cgi?id=92264
     5
     6        Reviewed by Adam Barth.
     7
     8        As stated in http://www.gnu.org/software/bison/manual/html_node/Table-of-Symbols.html
     9        YYLEX_PARAM and YYPARSE_PARAM are depecreated since version 1.875. So far all Mac OS
     10        version I had access to as well as recent Linux runs at least version 2.3 so it's safe
     11        to use the replacement of these deprecated macros in favor of %lex-param and %parse-param.
     12        As announced http://lists.gnu.org/archive/html/info-gnu/2012-07/msg00011.html with the release
     13        of version 2.6 YYLEX_PARAM and YYPARSE_PARAM are not supported anymore.
     14
     15        No new tests : build fix and the patch should not trigger any regressions
     16
     17        * css/CSSGrammar.y:
     18        * css/CSSParser.cpp:
     19        * xml/XPathGrammar.y: Refactored a bit to not use an intermediate PARSER define.
     20        * xml/XPathParser.cpp: bison 2.6 declare xpathyyparse in the .h file now, i.e. XPathGrammar.h
     21        therefore including this file within the namespace {} declarations leads to xpathyyparse being
     22        defined part of WebCore::XPath namespaces but the actual implementation of xpathyyparse is in XPathGrammar.cpp
     23        (generated) and not implemented within the WebCore::XPath so it lead to linking issues. Last, XPathGrammar.h needs
     24        to be included after the other includes as it uses some XPath types. It breaks the style but CSSParser.cpp is doing the same.
     25
    1262012-07-30  Sadrul Habib Chowdhury  <sadrul@chromium.org>
    227
  • trunk/Source/WebCore/css/CSSGrammar.y

    r121874 r124099  
    5454#define YYDEBUG 0
    5555
    56 // FIXME: Replace with %parse-param { CSSParser* parser } once we can depend on bison 2.x
    57 #define YYPARSE_PARAM parser
    58 #define YYLEX_PARAM parser
    59 
    6056%}
    6157
    6258%pure_parser
     59
     60%parse-param { CSSParser* parser }
     61%lex-param { CSSParser* parser }
    6362
    6463%union {
     
    9089%{
    9190
    92 static inline int cssyyerror(const char*)
     91static inline int cssyyerror(void*, const char*)
    9392{
    9493    return 1;
  • trunk/Source/WebCore/css/CSSParser.cpp

    r123746 r124099  
    115115#endif
    116116
    117 extern int cssyyparse(void* parser);
     117extern int cssyyparse(WebCore::CSSParser*);
    118118
    119119using namespace std;
  • trunk/Source/WebCore/xml/XPathGrammar.y

    r97771 r124099  
    3535#include "XPathPath.h"
    3636#include "XPathPredicate.h"
     37#include "XPathStep.h"
    3738#include "XPathVariableReference.h"
    3839#include <wtf/FastMalloc.h>
     
    4546#define YYDEBUG 0
    4647#define YYMAXDEPTH 10000
    47 #define YYPARSE_PARAM parserParameter
    48 #define PARSER static_cast<Parser*>(parserParameter)
    4948
    5049using namespace WebCore;
     
    5453
    5554%pure_parser
     55%parse-param { WebCore::XPath::Parser* parser }
    5656
    5757%union
     
    7272
    7373static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); }
    74 static void xpathyyerror(const char*) { }
     74static void xpathyyerror(void*, const char*) { }
    7575   
    7676%}
     
    119119    OrExpr
    120120    {
    121         PARSER->m_topExpr = $1;
     121        parser->m_topExpr = $1;
    122122    }
    123123    ;
     
    139139    {
    140140        $$ = new LocationPath;
    141         PARSER->registerParseNode($$);
     141        parser->registerParseNode($$);
    142142    }
    143143    |
     
    151151        $$ = $2;
    152152        $$->insertFirstStep($1);
    153         PARSER->unregisterParseNode($1);
     153        parser->unregisterParseNode($1);
    154154    }
    155155    ;
     
    160160        $$ = new LocationPath;
    161161        $$->appendStep($1);
    162         PARSER->unregisterParseNode($1);
    163         PARSER->registerParseNode($$);
     162        parser->unregisterParseNode($1);
     163        parser->registerParseNode($$);
    164164    }
    165165    |
     
    167167    {
    168168        $$->appendStep($3);
    169         PARSER->unregisterParseNode($3);
     169        parser->unregisterParseNode($3);
    170170    }
    171171    |
     
    174174        $$->appendStep($2);
    175175        $$->appendStep($3);
    176         PARSER->unregisterParseNode($2);
    177         PARSER->unregisterParseNode($3);
     176        parser->unregisterParseNode($2);
     177        parser->unregisterParseNode($3);
    178178    }
    179179    ;
     
    184184        if ($2) {
    185185            $$ = new Step(Step::ChildAxis, *$1, *$2);
    186             PARSER->deletePredicateVector($2);
     186            parser->deletePredicateVector($2);
    187187        } else
    188188            $$ = new Step(Step::ChildAxis, *$1);
    189         PARSER->deleteNodeTest($1);
    190         PARSER->registerParseNode($$);
     189        parser->deleteNodeTest($1);
     190        parser->registerParseNode($$);
    191191    }
    192192    |
     
    195195        String localName;
    196196        String namespaceURI;
    197         if (!PARSER->expandQName(*$1, localName, namespaceURI)) {
    198             PARSER->m_gotNamespaceError = true;
     197        if (!parser->expandQName(*$1, localName, namespaceURI)) {
     198            parser->m_gotNamespaceError = true;
    199199            YYABORT;
    200200        }
     
    202202        if ($2) {
    203203            $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$2);
    204             PARSER->deletePredicateVector($2);
     204            parser->deletePredicateVector($2);
    205205        } else
    206206            $$ = new Step(Step::ChildAxis, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
    207         PARSER->deleteString($1);
    208         PARSER->registerParseNode($$);
     207        parser->deleteString($1);
     208        parser->registerParseNode($$);
    209209    }
    210210    |
     
    213213        if ($3) {
    214214            $$ = new Step($1, *$2, *$3);
    215             PARSER->deletePredicateVector($3);
     215            parser->deletePredicateVector($3);
    216216        } else
    217217            $$ = new Step($1, *$2);
    218         PARSER->deleteNodeTest($2);
    219         PARSER->registerParseNode($$);
     218        parser->deleteNodeTest($2);
     219        parser->registerParseNode($$);
    220220    }
    221221    |
     
    224224        String localName;
    225225        String namespaceURI;
    226         if (!PARSER->expandQName(*$2, localName, namespaceURI)) {
    227             PARSER->m_gotNamespaceError = true;
     226        if (!parser->expandQName(*$2, localName, namespaceURI)) {
     227            parser->m_gotNamespaceError = true;
    228228            YYABORT;
    229229        }
     
    231231        if ($3) {
    232232            $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI), *$3);
    233             PARSER->deletePredicateVector($3);
     233            parser->deletePredicateVector($3);
    234234        } else
    235235            $$ = new Step($1, Step::NodeTest(Step::NodeTest::NameTest, localName, namespaceURI));
    236         PARSER->deleteString($2);
    237         PARSER->registerParseNode($$);
     236        parser->deleteString($2);
     237        parser->registerParseNode($$);
    238238    }
    239239    |
     
    260260            $$ = new Step::NodeTest(Step::NodeTest::CommentNodeTest);
    261261
    262         PARSER->deleteString($1);
    263         PARSER->registerNodeTest($$);
     262        parser->deleteString($1);
     263        parser->registerNodeTest($$);
    264264    }
    265265    |
     
    267267    {
    268268        $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest);
    269         PARSER->deleteString($1);       
    270         PARSER->registerNodeTest($$);
     269        parser->deleteString($1);
     270        parser->registerNodeTest($$);
    271271    }
    272272    |
     
    274274    {
    275275        $$ = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, $3->stripWhiteSpace());
    276         PARSER->deleteString($1);       
    277         PARSER->deleteString($3);
    278         PARSER->registerNodeTest($$);
     276        parser->deleteString($1);
     277        parser->deleteString($3);
     278        parser->registerNodeTest($$);
    279279    }
    280280    ;
     
    294294        $$ = new Vector<Predicate*>;
    295295        $$->append(new Predicate($1));
    296         PARSER->unregisterParseNode($1);
    297         PARSER->registerPredicateVector($$);
     296        parser->unregisterParseNode($1);
     297        parser->registerPredicateVector($$);
    298298    }
    299299    |
     
    301301    {
    302302        $$->append(new Predicate($2));
    303         PARSER->unregisterParseNode($2);
     303        parser->unregisterParseNode($2);
    304304    }
    305305    ;
     
    316316    {
    317317        $$ = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
    318         PARSER->registerParseNode($$);
     318        parser->registerParseNode($$);
    319319    }
    320320    ;
     
    324324    {
    325325        $$ = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
    326         PARSER->registerParseNode($$);
     326        parser->registerParseNode($$);
    327327    }
    328328    |
     
    330330    {
    331331        $$ = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest));
    332         PARSER->registerParseNode($$);
     332        parser->registerParseNode($$);
    333333    }
    334334    ;
     
    338338    {
    339339        $$ = new VariableReference(*$1);
    340         PARSER->deleteString($1);
    341         PARSER->registerParseNode($$);
     340        parser->deleteString($1);
     341        parser->registerParseNode($$);
    342342    }
    343343    |
     
    350350    {
    351351        $$ = new StringExpression(*$1);
    352         PARSER->deleteString($1);
    353         PARSER->registerParseNode($$);
     352        parser->deleteString($1);
     353        parser->registerParseNode($$);
    354354    }
    355355    |
     
    357357    {
    358358        $$ = new Number($1->toDouble());
    359         PARSER->deleteString($1);
    360         PARSER->registerParseNode($$);
     359        parser->deleteString($1);
     360        parser->registerParseNode($$);
    361361    }
    362362    |
     
    370370        if (!$$)
    371371            YYABORT;
    372         PARSER->deleteString($1);
    373         PARSER->registerParseNode($$);
     372        parser->deleteString($1);
     373        parser->registerParseNode($$);
    374374    }
    375375    |
     
    379379        if (!$$)
    380380            YYABORT;
    381         PARSER->deleteString($1);
    382         PARSER->deleteExpressionVector($3);
    383         PARSER->registerParseNode($$);
     381        parser->deleteString($1);
     382        parser->deleteExpressionVector($3);
     383        parser->registerParseNode($$);
    384384    }
    385385    ;
     
    390390        $$ = new Vector<Expression*>;
    391391        $$->append($1);
    392         PARSER->unregisterParseNode($1);
    393         PARSER->registerExpressionVector($$);
     392        parser->unregisterParseNode($1);
     393        parser->registerExpressionVector($$);
    394394    }
    395395    |
     
    397397    {
    398398        $$->append($3);
    399         PARSER->unregisterParseNode($3);
     399        parser->unregisterParseNode($3);
    400400    }
    401401    ;
     
    413413        $$->addSubExpression($1);
    414414        $$->addSubExpression($3);
    415         PARSER->unregisterParseNode($1);
    416         PARSER->unregisterParseNode($3);
    417         PARSER->registerParseNode($$);
     415        parser->unregisterParseNode($1);
     416        parser->unregisterParseNode($3);
     417        parser->registerParseNode($$);
    418418    }
    419419    ;
     
    431431        $3->setAbsolute(true);
    432432        $$ = new Path(static_cast<Filter*>($1), $3);
    433         PARSER->unregisterParseNode($1);
    434         PARSER->unregisterParseNode($3);
    435         PARSER->registerParseNode($$);
     433        parser->unregisterParseNode($1);
     434        parser->unregisterParseNode($3);
     435        parser->registerParseNode($$);
    436436    }
    437437    |
     
    441441        $3->setAbsolute(true);
    442442        $$ = new Path(static_cast<Filter*>($1), $3);
    443         PARSER->unregisterParseNode($1);
    444         PARSER->unregisterParseNode($2);
    445         PARSER->unregisterParseNode($3);
    446         PARSER->registerParseNode($$);
     443        parser->unregisterParseNode($1);
     444        parser->unregisterParseNode($2);
     445        parser->unregisterParseNode($3);
     446        parser->registerParseNode($$);
    447447    }
    448448    ;
     
    454454    {
    455455        $$ = new Filter($1, *$2);
    456         PARSER->unregisterParseNode($1);
    457         PARSER->deletePredicateVector($2);
    458         PARSER->registerParseNode($$);
     456        parser->unregisterParseNode($1);
     457        parser->deletePredicateVector($2);
     458        parser->registerParseNode($$);
    459459    }
    460460    ;
     
    466466    {
    467467        $$ = new LogicalOp(LogicalOp::OP_Or, $1, $3);
    468         PARSER->unregisterParseNode($1);
    469         PARSER->unregisterParseNode($3);
    470         PARSER->registerParseNode($$);
     468        parser->unregisterParseNode($1);
     469        parser->unregisterParseNode($3);
     470        parser->registerParseNode($$);
    471471    }
    472472    ;
     
    478478    {
    479479        $$ = new LogicalOp(LogicalOp::OP_And, $1, $3);
    480         PARSER->unregisterParseNode($1);
    481         PARSER->unregisterParseNode($3);
    482         PARSER->registerParseNode($$);
     480        parser->unregisterParseNode($1);
     481        parser->unregisterParseNode($3);
     482        parser->registerParseNode($$);
    483483    }
    484484    ;
     
    490490    {
    491491        $$ = new EqTestOp($2, $1, $3);
    492         PARSER->unregisterParseNode($1);
    493         PARSER->unregisterParseNode($3);
    494         PARSER->registerParseNode($$);
     492        parser->unregisterParseNode($1);
     493        parser->unregisterParseNode($3);
     494        parser->registerParseNode($$);
    495495    }
    496496    ;
     
    502502    {
    503503        $$ = new EqTestOp($2, $1, $3);
    504         PARSER->unregisterParseNode($1);
    505         PARSER->unregisterParseNode($3);
    506         PARSER->registerParseNode($$);
     504        parser->unregisterParseNode($1);
     505        parser->unregisterParseNode($3);
     506        parser->registerParseNode($$);
    507507    }
    508508    ;
     
    514514    {
    515515        $$ = new NumericOp(NumericOp::OP_Add, $1, $3);
    516         PARSER->unregisterParseNode($1);
    517         PARSER->unregisterParseNode($3);
    518         PARSER->registerParseNode($$);
     516        parser->unregisterParseNode($1);
     517        parser->unregisterParseNode($3);
     518        parser->registerParseNode($$);
    519519    }
    520520    |
     
    522522    {
    523523        $$ = new NumericOp(NumericOp::OP_Sub, $1, $3);
    524         PARSER->unregisterParseNode($1);
    525         PARSER->unregisterParseNode($3);
    526         PARSER->registerParseNode($$);
     524        parser->unregisterParseNode($1);
     525        parser->unregisterParseNode($3);
     526        parser->registerParseNode($$);
    527527    }
    528528    ;
     
    534534    {
    535535        $$ = new NumericOp($2, $1, $3);
    536         PARSER->unregisterParseNode($1);
    537         PARSER->unregisterParseNode($3);
    538         PARSER->registerParseNode($$);
     536        parser->unregisterParseNode($1);
     537        parser->unregisterParseNode($3);
     538        parser->registerParseNode($$);
    539539    }
    540540    ;
     
    547547        $$ = new Negative;
    548548        $$->addSubExpression($2);
    549         PARSER->unregisterParseNode($2);
    550         PARSER->registerParseNode($$);
     549        parser->unregisterParseNode($2);
     550        parser->registerParseNode($$);
    551551    }
    552552    ;
  • trunk/Source/WebCore/xml/XPathParser.cpp

    r97771 r124099  
    3333#include "XPathException.h"
    3434#include "XPathNSResolver.h"
     35#include "XPathPath.h"
    3536#include "XPathStep.h"
    3637#include <wtf/StdLibExtras.h>
    3738#include <wtf/text/StringHash.h>
    3839
    39 int xpathyyparse(void*);
    40 
     40using namespace WebCore;
    4141using namespace WTF;
    4242using namespace Unicode;
    43 
    44 namespace WebCore {
    45 namespace XPath {
    46 
    47 class LocationPath;
    48 
    49 #include "XPathGrammar.h"   
     43using namespace XPath;
     44
     45extern int xpathyyparse(WebCore::XPath::Parser*);
     46#include "XPathGrammar.h"
    5047
    5148Parser* Parser::currentParser = 0;
    52    
     49
    5350enum XMLCat { NameStart, NameCont, NotPartOfName };
    5451
     
    631628}
    632629
    633 }
    634 }
Note: See TracChangeset for help on using the changeset viewer.