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 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
80 case VAR_DEFINITION: | 80 case VAR_DEFINITION: |
81 case UNICODERANGE: | 81 case UNICODERANGE: |
82 return true; | 82 return true; |
83 default: | 83 default: |
84 return false; | 84 return false; |
85 } | 85 } |
86 } | 86 } |
87 | 87 |
88 %} | 88 %} |
89 | 89 |
90 %expect 11 | 90 %expect 3 |
91 | 91 |
92 %nonassoc LOWEST_PREC | 92 %nonassoc LOWEST_PREC |
93 | 93 |
94 %left UNIMPORTANT_TOK | 94 %left UNIMPORTANT_TOK |
95 | 95 |
96 %token WHITESPACE SGML_CD | 96 %token WHITESPACE SGML_CD |
97 %token TOKEN_EOF 0 | 97 %token TOKEN_EOF 0 |
98 | 98 |
99 %token INCLUDES | 99 %token INCLUDES |
100 %token DASHMATCH | 100 %token DASHMATCH |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
241 | 241 |
242 %type <string> maybe_ns_prefix | 242 %type <string> maybe_ns_prefix |
243 | 243 |
244 %type <string> namespace_selector | 244 %type <string> namespace_selector |
245 | 245 |
246 %type <string> string_or_uri | 246 %type <string> string_or_uri |
247 %type <string> ident_or_string | 247 %type <string> ident_or_string |
248 %type <string> medium | 248 %type <string> medium |
249 %type <marginBox> margin_sym | 249 %type <marginBox> margin_sym |
250 | 250 |
251 %type <string> media_feature | |
252 %type <mediaList> media_list | 251 %type <mediaList> media_list |
253 %type <mediaList> maybe_media_list | 252 %type <mediaList> maybe_media_list |
253 %type <mediaList> mq_list | |
254 %type <mediaQuery> media_query | 254 %type <mediaQuery> media_query |
255 %type <mediaQuery> valid_media_query | |
255 %type <mediaQueryRestrictor> maybe_media_restrictor | 256 %type <mediaQueryRestrictor> maybe_media_restrictor |
256 %type <valueList> maybe_media_value | 257 %type <valueList> maybe_media_value |
257 %type <mediaQueryExp> media_query_exp | 258 %type <mediaQueryExp> media_query_exp |
258 %type <mediaQueryExpList> media_query_exp_list | 259 %type <mediaQueryExpList> media_query_exp_list |
259 %type <mediaQueryExpList> maybe_and_media_query_exp_list | 260 %type <mediaQueryExpList> maybe_and_media_query_exp_list |
260 | 261 |
261 %type <boolean> supports_condition | 262 %type <boolean> supports_condition |
262 %type <boolean> supports_condition_in_parens | 263 %type <boolean> supports_condition_in_parens |
263 %type <boolean> supports_negation | 264 %type <boolean> supports_negation |
264 %type <boolean> supports_conjunction | 265 %type <boolean> supports_conjunction |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
357 parser->m_valueList = parser->sinkFloatingValueList($4); | 358 parser->m_valueList = parser->sinkFloatingValueList($4); |
358 int oldParsedProperties = parser->m_parsedProperties.size(); | 359 int oldParsedProperties = parser->m_parsedProperties.size(); |
359 if (!parser->parseValue(parser->m_id, parser->m_important)) | 360 if (!parser->parseValue(parser->m_id, parser->m_important)) |
360 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); | 361 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); |
361 parser->m_valueList = nullptr; | 362 parser->m_valueList = nullptr; |
362 } | 363 } |
363 } | 364 } |
364 ; | 365 ; |
365 | 366 |
366 webkit_mediaquery: | 367 webkit_mediaquery: |
367 WEBKIT_MEDIAQUERY_SYM WHITESPACE maybe_space media_query '}' { | 368 WEBKIT_MEDIAQUERY_SYM maybe_space valid_media_query '}' { |
368 parser->m_mediaQuery = parser->sinkFloatingMediaQuery($4); | 369 parser->m_mediaQuery = parser->sinkFloatingMediaQuery($3); |
369 } | 370 } |
370 ; | 371 ; |
371 | 372 |
372 internal_selector: | 373 internal_selector: |
373 INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { | 374 INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { |
374 if ($4) { | 375 if ($4) { |
375 if (parser->m_selectorListForParseSelector) | 376 if (parser->m_selectorListForParseSelector) |
376 parser->m_selectorListForParseSelector->adoptSelectorVector(*$4) ; | 377 parser->m_selectorListForParseSelector->adoptSelectorVector(*$4) ; |
377 } | 378 } |
378 } | 379 } |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
567 maybe_ns_prefix: | 568 maybe_ns_prefix: |
568 /* empty */ { $$.clear(); } | 569 /* empty */ { $$.clear(); } |
569 | IDENT maybe_space { $$ = $1; } | 570 | IDENT maybe_space { $$ = $1; } |
570 ; | 571 ; |
571 | 572 |
572 string_or_uri: | 573 string_or_uri: |
573 STRING | 574 STRING |
574 | URI | 575 | URI |
575 ; | 576 ; |
576 | 577 |
577 media_feature: | |
578 IDENT maybe_space { | |
579 $$ = $1; | |
580 } | |
581 ; | |
582 | |
583 maybe_media_value: | 578 maybe_media_value: |
584 /*empty*/ { | 579 /*empty*/ { |
585 $$ = 0; | 580 $$ = 0; |
586 } | 581 } |
587 | ':' maybe_space expr { | 582 | ':' maybe_space expr { |
588 $$ = $3; | 583 $$ = $3; |
589 } | 584 } |
590 ; | 585 ; |
591 | 586 |
592 media_query_exp: | 587 media_query_exp: |
593 maybe_media_restrictor maybe_space '(' maybe_space media_feature maybe_space maybe_media_value ')' maybe_space { | 588 '(' maybe_space IDENT maybe_space maybe_media_value closing_parenthesis mayb e_space { |
594 // If restrictor is specified, media query expression is invalid. | 589 parser->tokenToLowerCase($3); |
595 // Create empty media query expression and continue parsing media query. | 590 $$ = parser->createFloatingMediaQueryExp($3, $5); |
596 if ($1 != MediaQuery::None) | |
597 $$ = parser->createFloatingMediaQueryExp("", 0); | |
598 else { | |
599 parser->tokenToLowerCase($5); | |
600 $$ = parser->createFloatingMediaQueryExp($5, $7); | |
601 } | |
602 } | 591 } |
603 | maybe_media_restrictor maybe_space '(' error error_recovery ')' { | 592 | '(' error error_recovery closing_parenthesis { |
604 YYERROR; | 593 YYERROR; |
605 } | 594 } |
606 ; | 595 ; |
607 | 596 |
608 media_query_exp_list: | 597 media_query_exp_list: |
609 media_query_exp { | 598 media_query_exp { |
610 $$ = parser->createFloatingMediaQueryExpList(); | 599 $$ = parser->createFloatingMediaQueryExpList(); |
611 $$->append(parser->sinkFloatingMediaQueryExp($1)); | 600 $$->append(parser->sinkFloatingMediaQueryExp($1)); |
612 } | 601 } |
613 | media_query_exp_list maybe_space MEDIA_AND maybe_space media_query_exp { | 602 | media_query_exp_list MEDIA_AND maybe_space media_query_exp { |
614 $$ = $1; | 603 $$ = $1; |
615 $$->append(parser->sinkFloatingMediaQueryExp($5)); | 604 $$->append(parser->sinkFloatingMediaQueryExp($4)); |
616 } | 605 } |
617 ; | 606 ; |
618 | 607 |
619 maybe_and_media_query_exp_list: | 608 maybe_and_media_query_exp_list: |
620 /*empty*/ { | 609 /*empty*/ { |
621 $$ = parser->createFloatingMediaQueryExpList(); | 610 $$ = parser->createFloatingMediaQueryExpList(); |
622 } | 611 } |
623 | MEDIA_AND maybe_space media_query_exp_list { | 612 | MEDIA_AND maybe_space media_query_exp_list { |
624 $$ = $3; | 613 $$ = $3; |
625 } | 614 } |
626 ; | 615 ; |
627 | 616 |
628 maybe_media_restrictor: | 617 maybe_media_restrictor: |
629 /*empty*/ { | 618 /*empty*/ { |
630 $$ = MediaQuery::None; | 619 $$ = MediaQuery::None; |
631 } | 620 } |
632 | MEDIA_ONLY { | 621 | MEDIA_ONLY maybe_space { |
633 $$ = MediaQuery::Only; | 622 $$ = MediaQuery::Only; |
634 } | 623 } |
635 | MEDIA_NOT { | 624 | MEDIA_NOT maybe_space { |
636 $$ = MediaQuery::Not; | 625 $$ = MediaQuery::Not; |
637 } | 626 } |
638 ; | 627 ; |
639 | 628 |
640 media_query: | 629 valid_media_query: |
641 media_query_exp_list { | 630 media_query_exp_list { |
642 $$ = parser->createFloatingMediaQuery(parser->sinkFloatingMediaQueryExpL ist($1)); | 631 $$ = parser->createFloatingMediaQuery(parser->sinkFloatingMediaQueryExpL ist($1)); |
643 } | 632 } |
644 | | 633 | maybe_media_restrictor medium maybe_and_media_query_exp_list { |
645 maybe_media_restrictor maybe_space medium maybe_and_media_query_exp_list { | 634 parser->tokenToLowerCase($2); |
646 parser->tokenToLowerCase($3); | 635 $$ = parser->createFloatingMediaQuery($1, $2, parser->sinkFloatingMediaQ ueryExpList($3)); |
647 $$ = parser->createFloatingMediaQuery($1, $3, parser->sinkFloatingMediaQ ueryExpList($4)); | |
648 } | 636 } |
649 ; | 637 ; |
650 | 638 |
639 media_query: | |
640 valid_media_query | |
641 | error rule_error_recovery { $$ = parser->createFloatingNotAllQuery(); } | |
SeRya
2013/06/03 12:58:08
The action should be placed on a separate line.
| |
642 ; | |
643 | |
651 maybe_media_list: | 644 maybe_media_list: |
652 /* empty */ { | 645 /* empty */ { |
653 $$ = parser->createMediaQuerySet(); | 646 $$ = parser->createMediaQuerySet(); |
654 } | 647 } |
655 | media_list | 648 | media_list |
656 ; | 649 ; |
657 | 650 |
658 media_list: | 651 media_list: |
659 media_query { | 652 media_query { |
660 $$ = parser->createMediaQuerySet(); | 653 $$ = parser->createMediaQuerySet(); |
661 $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); | 654 $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); |
662 parser->updateLastMediaLine($$); | 655 parser->updateLastMediaLine($$); |
663 } | 656 } |
664 | media_list ',' maybe_space media_query { | 657 | mq_list media_query { |
665 $$ = $1; | 658 $$ = $1; |
666 if ($$) { | 659 $$->addMediaQuery(parser->sinkFloatingMediaQuery($2)); |
667 $$->addMediaQuery(parser->sinkFloatingMediaQuery($4)); | 660 parser->updateLastMediaLine($$); |
668 parser->updateLastMediaLine($$); | |
669 } | |
670 } | 661 } |
671 | media_list error { | 662 | mq_list { |
672 $$ = 0; | 663 $$ = $1; |
664 $$->addMediaQuery(parser->sinkFloatingMediaQuery(parser->createFloatingN otAllQuery())); | |
665 parser->updateLastMediaLine($$); | |
673 } | 666 } |
674 ; | 667 ; |
675 | 668 |
669 mq_list: | |
670 media_query ',' maybe_space { | |
671 $$ = parser->createMediaQuerySet(); | |
672 $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); | |
673 } | |
674 | mq_list media_query ',' maybe_space { | |
675 $$ = $1; | |
676 $$->addMediaQuery(parser->sinkFloatingMediaQuery($2)); | |
677 } | |
678 ; | |
679 | |
676 at_rule_body_start: | 680 at_rule_body_start: |
677 /* empty */ { | 681 /* empty */ { |
678 parser->startRuleBody(); | 682 parser->startRuleBody(); |
679 } | 683 } |
680 ; | 684 ; |
681 | 685 |
682 before_media_rule: | 686 before_media_rule: |
683 /* empty */ { | 687 /* empty */ { |
684 parser->startRuleHeader(CSSRuleSourceData::MEDIA_RULE); | 688 parser->startRuleHeader(CSSRuleSourceData::MEDIA_RULE); |
685 } | 689 } |
686 ; | 690 ; |
687 | 691 |
688 at_rule_header_end_maybe_space: | 692 at_rule_header_end_maybe_space: |
689 maybe_space { | 693 maybe_space { |
690 parser->endRuleHeader(); | 694 parser->endRuleHeader(); |
691 } | 695 } |
692 ; | 696 ; |
693 | 697 |
694 media: | 698 media: |
695 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at _rule_body_start maybe_space block_rule_body closing_brace { | 699 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at _rule_body_start maybe_space block_rule_body closing_brace { |
696 $$ = parser->createMediaRule($4, $9); | 700 $$ = parser->createMediaRule($4, $9); |
697 } | 701 } |
698 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod y_start maybe_space block_rule_body closing_brace { | 702 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod y_start maybe_space block_rule_body closing_brace { |
699 $$ = parser->createMediaRule(0, $7); | 703 $$ = parser->createMediaRule(0, $7); |
700 } | 704 } |
705 | before_media_rule MEDIA_SYM maybe_space media_list ';' { | |
706 $$ = 0; | |
707 parser->endRuleBody(true); | |
708 } | |
701 | before_media_rule MEDIA_SYM at_rule_recovery { | 709 | before_media_rule MEDIA_SYM at_rule_recovery { |
702 $$ = 0; | 710 $$ = 0; |
703 parser->endRuleBody(true); | 711 parser->endRuleBody(true); |
704 } | 712 } |
705 ; | 713 ; |
706 | 714 |
707 medium: | 715 medium: |
708 IDENT maybe_space { | 716 IDENT maybe_space { |
709 $$ = $1; | 717 $$ = $1; |
710 } | 718 } |
(...skipping 1278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1989 | 1997 |
1990 rule_error_recovery: | 1998 rule_error_recovery: |
1991 /* empty */ | 1999 /* empty */ |
1992 | rule_error_recovery error | 2000 | rule_error_recovery error |
1993 | rule_error_recovery invalid_square_brackets_block | 2001 | rule_error_recovery invalid_square_brackets_block |
1994 | rule_error_recovery invalid_parentheses_block | 2002 | rule_error_recovery invalid_parentheses_block |
1995 ; | 2003 ; |
1996 | 2004 |
1997 %% | 2005 %% |
1998 | 2006 |
OLD | NEW |