| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. |
| 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 6 * Copyright (C) 2012 Intel Corporation. All rights reserved. | 6 * Copyright (C) 2012 Intel Corporation. All rights reserved. |
| 7 * Copyright (C) 2013 Opera Software ASA. All rights reserved. |
| 7 * | 8 * |
| 8 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Lesser General Public | 10 * modify it under the terms of the GNU Lesser General Public |
| 10 * License as published by the Free Software Foundation; either | 11 * License as published by the Free Software Foundation; either |
| 11 * version 2 of the License, or (at your option) any later version. | 12 * version 2 of the License, or (at your option) any later version. |
| 12 * | 13 * |
| 13 * This library is distributed in the hope that it will be useful, | 14 * This library is distributed in the hope that it will be useful, |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 * Lesser General Public License for more details. | 17 * Lesser General Public License for more details. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 case VAR_DEFINITION: | 81 case VAR_DEFINITION: |
| 81 case UNICODERANGE: | 82 case UNICODERANGE: |
| 82 return true; | 83 return true; |
| 83 default: | 84 default: |
| 84 return false; | 85 return false; |
| 85 } | 86 } |
| 86 } | 87 } |
| 87 | 88 |
| 88 %} | 89 %} |
| 89 | 90 |
| 90 %expect 38 | 91 %expect 36 |
| 91 | 92 |
| 92 %nonassoc LOWEST_PREC | 93 %nonassoc LOWEST_PREC |
| 93 | 94 |
| 94 %left UNIMPORTANT_TOK | 95 %left UNIMPORTANT_TOK |
| 95 | 96 |
| 96 %token WHITESPACE SGML_CD | 97 %token WHITESPACE SGML_CD |
| 97 %token TOKEN_EOF 0 | 98 %token TOKEN_EOF 0 |
| 98 | 99 |
| 99 %token INCLUDES | 100 %token INCLUDES |
| 100 %token DASHMATCH | 101 %token DASHMATCH |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 %type <string> namespace_selector | 243 %type <string> namespace_selector |
| 243 | 244 |
| 244 %type <string> string_or_uri | 245 %type <string> string_or_uri |
| 245 %type <string> ident_or_string | 246 %type <string> ident_or_string |
| 246 %type <string> medium | 247 %type <string> medium |
| 247 %type <marginBox> margin_sym | 248 %type <marginBox> margin_sym |
| 248 | 249 |
| 249 %type <string> media_feature | 250 %type <string> media_feature |
| 250 %type <mediaList> media_list | 251 %type <mediaList> media_list |
| 251 %type <mediaList> maybe_media_list | 252 %type <mediaList> maybe_media_list |
| 252 %type <mediaQuery> media_query | 253 %type <mediaQuery> media_query invalid_media_query |
| 253 %type <mediaQueryRestrictor> maybe_media_restrictor | 254 %type <mediaQueryRestrictor> maybe_media_restrictor |
| 254 %type <valueList> maybe_media_value | 255 %type <valueList> maybe_media_value |
| 255 %type <mediaQueryExp> media_query_exp | 256 %type <mediaQueryExp> media_query_exp |
| 256 %type <mediaQueryExpList> media_query_exp_list | 257 %type <mediaQueryExpList> media_query_exp_list |
| 257 %type <mediaQueryExpList> maybe_and_media_query_exp_list | 258 %type <mediaQueryExpList> maybe_and_media_query_exp_list |
| 258 | 259 |
| 259 %type <boolean> supports_condition | 260 %type <boolean> supports_condition |
| 260 %type <boolean> supports_condition_in_parens | 261 %type <boolean> supports_condition_in_parens |
| 261 %type <boolean> supports_negation | 262 %type <boolean> supports_negation |
| 262 %type <boolean> supports_conjunction | 263 %type <boolean> supports_conjunction |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 parser->m_valueList = parser->sinkFloatingValueList($4); | 355 parser->m_valueList = parser->sinkFloatingValueList($4); |
| 355 int oldParsedProperties = parser->m_parsedProperties.size(); | 356 int oldParsedProperties = parser->m_parsedProperties.size(); |
| 356 if (!parser->parseValue(parser->m_id, parser->m_important)) | 357 if (!parser->parseValue(parser->m_id, parser->m_important)) |
| 357 parser->rollbackLastProperties(parser->m_parsedProperties.size()
- oldParsedProperties); | 358 parser->rollbackLastProperties(parser->m_parsedProperties.size()
- oldParsedProperties); |
| 358 parser->m_valueList = nullptr; | 359 parser->m_valueList = nullptr; |
| 359 } | 360 } |
| 360 } | 361 } |
| 361 ; | 362 ; |
| 362 | 363 |
| 363 webkit_mediaquery: | 364 webkit_mediaquery: |
| 364 WEBKIT_MEDIAQUERY_SYM WHITESPACE maybe_space media_query '}' { | 365 WEBKIT_MEDIAQUERY_SYM maybe_space media_query TOKEN_EOF { |
| 365 parser->m_mediaQuery = parser->sinkFloatingMediaQuery($4); | 366 parser->m_mediaQuery = parser->sinkFloatingMediaQuery($3); |
| 367 } |
| 368 | WEBKIT_MEDIAQUERY_SYM maybe_space media_query error TOKEN_EOF { |
| 369 parser->m_mediaQuery = parser->sinkFloatingMediaQuery(parser->createFlo
atingMediaQuery(MediaQuery::Not, "all", parser->sinkFloatingMediaQueryExpList(pa
rser->createFloatingMediaQueryExpList()))); |
| 370 } |
| 371 | WEBKIT_MEDIAQUERY_SYM maybe_space error TOKEN_EOF { |
| 372 parser->m_mediaQuery = parser->sinkFloatingMediaQuery(parser->createFlo
atingMediaQuery(MediaQuery::Not, "all", parser->sinkFloatingMediaQueryExpList(pa
rser->createFloatingMediaQueryExpList()))); |
| 366 } | 373 } |
| 367 ; | 374 ; |
| 368 | 375 |
| 369 internal_selector: | 376 internal_selector: |
| 370 INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { | 377 INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { |
| 371 if ($4) { | 378 if ($4) { |
| 372 if (parser->m_selectorListForParseSelector) | 379 if (parser->m_selectorListForParseSelector) |
| 373 parser->m_selectorListForParseSelector->adoptSelectorVector(*$4)
; | 380 parser->m_selectorListForParseSelector->adoptSelectorVector(*$4)
; |
| 374 } | 381 } |
| 375 } | 382 } |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 maybe_media_value: | 582 maybe_media_value: |
| 576 /*empty*/ { | 583 /*empty*/ { |
| 577 $$ = 0; | 584 $$ = 0; |
| 578 } | 585 } |
| 579 | ':' maybe_space expr maybe_space { | 586 | ':' maybe_space expr maybe_space { |
| 580 $$ = $3; | 587 $$ = $3; |
| 581 } | 588 } |
| 582 ; | 589 ; |
| 583 | 590 |
| 584 media_query_exp: | 591 media_query_exp: |
| 585 maybe_media_restrictor maybe_space '(' maybe_space media_feature maybe_space
maybe_media_value ')' maybe_space { | 592 '(' maybe_space media_feature maybe_space maybe_media_value ')' maybe_space
{ |
| 586 // If restrictor is specified, media query expression is invalid. | 593 $3.lower(); |
| 587 // Create empty media query expression and continue parsing media query. | 594 $$ = parser->createFloatingMediaQueryExp($3, $5); |
| 588 if ($1 != MediaQuery::None) | |
| 589 $$ = parser->createFloatingMediaQueryExp("", 0); | |
| 590 else { | |
| 591 $5.lower(); | |
| 592 $$ = parser->createFloatingMediaQueryExp($5, $7); | |
| 593 } | |
| 594 } | 595 } |
| 595 ; | 596 ; |
| 596 | 597 |
| 597 media_query_exp_list: | 598 media_query_exp_list: |
| 598 media_query_exp { | 599 media_query_exp { |
| 599 $$ = parser->createFloatingMediaQueryExpList(); | 600 $$ = parser->createFloatingMediaQueryExpList(); |
| 600 $$->append(parser->sinkFloatingMediaQueryExp($1)); | 601 $$->append(parser->sinkFloatingMediaQueryExp($1)); |
| 601 } | 602 } |
| 602 | media_query_exp_list maybe_space MEDIA_AND maybe_space media_query_exp { | 603 | media_query_exp_list maybe_space MEDIA_AND maybe_space media_query_exp { |
| 603 $$ = $1; | 604 $$ = $1; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 623 } | 624 } |
| 624 | MEDIA_NOT { | 625 | MEDIA_NOT { |
| 625 $$ = MediaQuery::Not; | 626 $$ = MediaQuery::Not; |
| 626 } | 627 } |
| 627 ; | 628 ; |
| 628 | 629 |
| 629 media_query: | 630 media_query: |
| 630 media_query_exp_list { | 631 media_query_exp_list { |
| 631 $$ = parser->createFloatingMediaQuery(parser->sinkFloatingMediaQueryExpL
ist($1)); | 632 $$ = parser->createFloatingMediaQuery(parser->sinkFloatingMediaQueryExpL
ist($1)); |
| 632 } | 633 } |
| 633 | | 634 | maybe_media_restrictor maybe_space medium maybe_and_media_query_exp_list { |
| 634 maybe_media_restrictor maybe_space medium maybe_and_media_query_exp_list { | |
| 635 $3.lower(); | 635 $3.lower(); |
| 636 $$ = parser->createFloatingMediaQuery($1, $3, parser->sinkFloatingMediaQ
ueryExpList($4)); | 636 $$ = parser->createFloatingMediaQuery($1, $3, parser->sinkFloatingMediaQ
ueryExpList($4)); |
| 637 } | 637 } |
| 638 | invalid_media_query maybe_space { |
| 639 $$ = $1; |
| 640 } |
| 641 ; |
| 642 |
| 643 invalid_media_query: |
| 644 error ',' { |
| 645 $$ = parser->recoverMediaQuery(); |
| 646 } |
| 647 | error '{' { |
| 648 $$ = parser->recoverMediaQuery(); |
| 649 } |
| 650 | error ';' { |
| 651 $$ = parser->recoverMediaQuery(); |
| 652 } |
| 653 | error '}' { |
| 654 $$ = parser->recoverMediaQuery(); |
| 655 } |
| 638 ; | 656 ; |
| 639 | 657 |
| 640 maybe_media_list: | 658 maybe_media_list: |
| 641 /* empty */ { | 659 /* empty */ { |
| 642 $$ = parser->createMediaQuerySet(); | 660 $$ = parser->createMediaQuerySet(); |
| 643 } | 661 } |
| 644 | media_list | 662 | media_list |
| 645 ; | 663 ; |
| 664 |
| 665 at_media_list_start: |
| 666 /* empty */ { |
| 667 parser->markMediaListStart(); |
| 668 } |
| 669 ; |
| 646 | 670 |
| 647 media_list: | 671 media_list: |
| 648 media_query { | 672 at_media_list_start media_query { |
| 649 $$ = parser->createMediaQuerySet(); | 673 $$ = parser->createMediaQuerySet(); |
| 650 $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); | 674 $$->addMediaQuery(parser->sinkFloatingMediaQuery($2)); |
| 651 parser->updateLastMediaLine($$); | 675 parser->updateLastMediaLine($$); |
| 652 } | 676 } |
| 653 | media_list ',' maybe_space media_query { | 677 | media_list ',' maybe_space media_query { |
| 654 $$ = $1; | 678 $$ = $1; |
| 655 if ($$) { | 679 $$->addMediaQuery(parser->sinkFloatingMediaQuery($4)); |
| 656 $$->addMediaQuery(parser->sinkFloatingMediaQuery($4)); | 680 parser->updateLastMediaLine($$); |
| 657 parser->updateLastMediaLine($$); | |
| 658 } | |
| 659 } | 681 } |
| 660 | media_list error { | 682 | media_list invalid_media_query maybe_space { |
| 661 $$ = 0; | 683 $$->replaceLastMediaQuery(parser->sinkFloatingMediaQuery($2)); |
| 662 } | 684 } |
| 663 ; | 685 ; |
| 664 | 686 |
| 665 at_rule_body_start: | 687 at_rule_body_start: |
| 666 /* empty */ { | 688 /* empty */ { |
| 667 parser->startRuleBody(); | 689 parser->startRuleBody(); |
| 668 } | 690 } |
| 669 ; | 691 ; |
| 670 | 692 |
| 671 before_media_rule: | 693 before_media_rule: |
| 672 /* empty */ { | 694 /* empty */ { |
| 673 parser->startRuleHeader(CSSRuleSourceData::MEDIA_RULE); | 695 parser->startRuleHeader(CSSRuleSourceData::MEDIA_RULE); |
| 674 } | 696 } |
| 675 ; | 697 ; |
| 676 | 698 |
| 677 at_rule_header_end_maybe_space: | 699 at_rule_header_end_maybe_space: |
| 678 maybe_space { | 700 maybe_space { |
| 679 parser->endRuleHeader(); | 701 parser->endRuleHeader(); |
| 680 } | 702 } |
| 681 ; | 703 ; |
| 682 | 704 |
| 683 media: | 705 media: |
| 684 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at
_rule_body_start maybe_space block_rule_list save_block { | 706 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at
_rule_body_start maybe_space block_rule_list save_block { |
| 685 $$ = parser->createMediaRule($4, $9); | 707 $$ = parser->createMediaRule($4, $9); |
| 686 } | 708 } |
| 687 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod
y_start maybe_space block_rule_list save_block { | 709 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod
y_start maybe_space block_rule_list save_block { |
| 688 $$ = parser->createMediaRule(0, $7); | 710 $$ = parser->createMediaRule(0, $7); |
| 689 } | 711 } |
| 690 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space ';' { | 712 | before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end ';'
{ |
| 691 $$ = 0; | 713 $$ = 0; |
| 692 parser->endRuleBody(true); | 714 parser->endRuleBody(true); |
| 693 } | 715 } |
| 716 | before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '}'
{ |
| 717 $$ = 0; |
| 718 parser->endRuleBody(true); |
| 719 } |
| 694 ; | 720 ; |
| 695 | 721 |
| 696 medium: | 722 medium: |
| 697 IDENT maybe_space { | 723 IDENT maybe_space { |
| 698 $$ = $1; | 724 $$ = $1; |
| 699 } | 725 } |
| 700 ; | 726 ; |
| 701 | 727 |
| 702 supports: | 728 supports: |
| 703 before_supports_rule SUPPORTS_SYM maybe_space supports_condition at_supports
_rule_header_end '{' at_rule_body_start maybe_space block_rule_list save_block { | 729 before_supports_rule SUPPORTS_SYM maybe_space supports_condition at_supports
_rule_header_end '{' at_rule_body_start maybe_space block_rule_list save_block { |
| (...skipping 1306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2010 } | 2036 } |
| 2011 ; | 2037 ; |
| 2012 | 2038 |
| 2013 error_location: { | 2039 error_location: { |
| 2014 $$ = parser->currentLocation(); | 2040 $$ = parser->currentLocation(); |
| 2015 } | 2041 } |
| 2016 ; | 2042 ; |
| 2017 | 2043 |
| 2018 %% | 2044 %% |
| 2019 | 2045 |
| OLD | NEW |