Chromium Code Reviews| 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 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 %token HOST_SYM | 123 %token HOST_SYM |
| 124 %token CHARSET_SYM | 124 %token CHARSET_SYM |
| 125 %token NAMESPACE_SYM | 125 %token NAMESPACE_SYM |
| 126 %token VARFUNCTION | 126 %token VARFUNCTION |
| 127 %token VIEWPORT_RULE_SYM | 127 %token VIEWPORT_RULE_SYM |
| 128 %token INTERNAL_DECLS_SYM | 128 %token INTERNAL_DECLS_SYM |
| 129 %token INTERNAL_MEDIALIST_SYM | 129 %token INTERNAL_MEDIALIST_SYM |
| 130 %token INTERNAL_RULE_SYM | 130 %token INTERNAL_RULE_SYM |
| 131 %token INTERNAL_SELECTOR_SYM | 131 %token INTERNAL_SELECTOR_SYM |
| 132 %token INTERNAL_VALUE_SYM | 132 %token INTERNAL_VALUE_SYM |
| 133 %token WEBKIT_KEYFRAME_RULE_SYM | 133 %token INTERNAL_KEYFRAME_RULE_SYM |
| 134 %token INTERNAL_SUPPORTS_CONDITION_SYM | |
| 134 %token WEBKIT_KEYFRAMES_SYM | 135 %token WEBKIT_KEYFRAMES_SYM |
| 135 %token WEBKIT_REGION_RULE_SYM | 136 %token WEBKIT_REGION_RULE_SYM |
| 136 %token WEBKIT_SUPPORTS_CONDITION_SYM | |
| 137 %token WEBKIT_FILTER_RULE_SYM | 137 %token WEBKIT_FILTER_RULE_SYM |
| 138 %token <marginBox> TOPLEFTCORNER_SYM | 138 %token <marginBox> TOPLEFTCORNER_SYM |
| 139 %token <marginBox> TOPLEFT_SYM | 139 %token <marginBox> TOPLEFT_SYM |
| 140 %token <marginBox> TOPCENTER_SYM | 140 %token <marginBox> TOPCENTER_SYM |
| 141 %token <marginBox> TOPRIGHT_SYM | 141 %token <marginBox> TOPRIGHT_SYM |
| 142 %token <marginBox> TOPRIGHTCORNER_SYM | 142 %token <marginBox> TOPRIGHTCORNER_SYM |
| 143 %token <marginBox> BOTTOMLEFTCORNER_SYM | 143 %token <marginBox> BOTTOMLEFTCORNER_SYM |
| 144 %token <marginBox> BOTTOMLEFT_SYM | 144 %token <marginBox> BOTTOMLEFT_SYM |
| 145 %token <marginBox> BOTTOMCENTER_SYM | 145 %token <marginBox> BOTTOMCENTER_SYM |
| 146 %token <marginBox> BOTTOMRIGHT_SYM | 146 %token <marginBox> BOTTOMRIGHT_SYM |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 | 312 |
| 313 %type <string> element_name | 313 %type <string> element_name |
| 314 %type <string> attr_name | 314 %type <string> attr_name |
| 315 | 315 |
| 316 %type <location> error_location | 316 %type <location> error_location |
| 317 | 317 |
| 318 %% | 318 %% |
| 319 | 319 |
| 320 stylesheet: | 320 stylesheet: |
| 321 maybe_charset maybe_sgml rule_list | 321 maybe_charset maybe_sgml rule_list |
| 322 | internal_decls maybe_space | 322 | internal_decls |
| 323 | internal_rule maybe_space | 323 | internal_rule |
| 324 | internal_selector maybe_space | 324 | internal_selector |
| 325 | internal_value maybe_space | 325 | internal_value |
| 326 | internal_medialist | 326 | internal_medialist |
| 327 | webkit_keyframe_rule maybe_space | 327 | internal_keyframe_rule |
| 328 | webkit_supports_condition maybe_space | 328 | internal_supports_condition |
| 329 ; | 329 ; |
| 330 | 330 |
| 331 internal_rule: | 331 internal_rule: |
| 332 INTERNAL_RULE_SYM '{' maybe_space valid_rule maybe_space '}' { | 332 INTERNAL_RULE_SYM maybe_space valid_rule maybe_space TOKEN_EOF { |
|
SeRya
2013/06/16 09:52:37
Wouldn't it work equally fine without TOKEN_EOF at
| |
| 333 parser->m_rule = $4; | 333 parser->m_rule = $3; |
| 334 } | 334 } |
| 335 ; | 335 ; |
| 336 | 336 |
| 337 webkit_keyframe_rule: | 337 internal_keyframe_rule: |
| 338 WEBKIT_KEYFRAME_RULE_SYM '{' maybe_space keyframe_rule maybe_space '}' { | 338 INTERNAL_KEYFRAME_RULE_SYM maybe_space keyframe_rule maybe_space TOKEN_EOF { |
| 339 parser->m_keyframe = $4; | 339 parser->m_keyframe = $3; |
| 340 } | 340 } |
| 341 ; | 341 ; |
| 342 | 342 |
| 343 internal_decls: | 343 internal_decls: |
| 344 INTERNAL_DECLS_SYM '{' maybe_space_before_declaration declaration_list '}' { | 344 INTERNAL_DECLS_SYM maybe_space_before_declaration declaration_list TOKEN_EOF { |
| 345 /* can be empty */ | 345 /* can be empty */ |
| 346 } | 346 } |
| 347 ; | 347 ; |
| 348 | 348 |
| 349 internal_value: | 349 internal_value: |
| 350 INTERNAL_VALUE_SYM '{' maybe_space expr '}' { | 350 INTERNAL_VALUE_SYM maybe_space expr TOKEN_EOF { |
| 351 if ($4) { | 351 if ($3) { |
| 352 parser->m_valueList = parser->sinkFloatingValueList($4); | 352 parser->m_valueList = parser->sinkFloatingValueList($3); |
| 353 int oldParsedProperties = parser->m_parsedProperties.size(); | 353 int oldParsedProperties = parser->m_parsedProperties.size(); |
| 354 if (!parser->parseValue(parser->m_id, parser->m_important)) | 354 if (!parser->parseValue(parser->m_id, parser->m_important)) |
| 355 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); | 355 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); |
| 356 parser->m_valueList = nullptr; | 356 parser->m_valueList = nullptr; |
| 357 } | 357 } |
| 358 } | 358 } |
| 359 ; | 359 ; |
| 360 | 360 |
| 361 internal_medialist: | 361 internal_medialist: |
| 362 INTERNAL_MEDIALIST_SYM maybe_space maybe_media_list TOKEN_EOF { | 362 INTERNAL_MEDIALIST_SYM maybe_space maybe_media_list TOKEN_EOF { |
| 363 parser->m_mediaList = $3; | 363 parser->m_mediaList = $3; |
| 364 } | 364 } |
| 365 ; | 365 ; |
| 366 | 366 |
| 367 internal_selector: | 367 internal_selector: |
| 368 INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { | 368 INTERNAL_SELECTOR_SYM maybe_space selector_list TOKEN_EOF { |
| 369 if ($4) { | 369 if ($3) { |
| 370 if (parser->m_selectorListForParseSelector) | 370 if (parser->m_selectorListForParseSelector) |
| 371 parser->m_selectorListForParseSelector->adoptSelectorVector(*$4) ; | 371 parser->m_selectorListForParseSelector->adoptSelectorVector(*$3) ; |
| 372 } | 372 } |
| 373 } | 373 } |
| 374 ; | 374 ; |
| 375 | 375 |
| 376 webkit_supports_condition: | 376 internal_supports_condition: |
| 377 WEBKIT_SUPPORTS_CONDITION_SYM '{' maybe_space supports_condition '}' { | 377 INTERNAL_SUPPORTS_CONDITION_SYM maybe_space supports_condition TOKEN_EOF { |
| 378 parser->m_supportsCondition = $4; | 378 parser->m_supportsCondition = $3; |
| 379 } | 379 } |
| 380 ; | 380 ; |
| 381 | 381 |
| 382 maybe_space: | 382 maybe_space: |
| 383 /* empty */ %prec UNIMPORTANT_TOK | 383 /* empty */ %prec UNIMPORTANT_TOK |
| 384 | maybe_space WHITESPACE | 384 | maybe_space WHITESPACE |
| 385 ; | 385 ; |
| 386 | 386 |
| 387 maybe_sgml: | 387 maybe_sgml: |
| 388 /* empty */ | 388 /* empty */ |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 399 closing_brace: | 399 closing_brace: |
| 400 '}' | 400 '}' |
| 401 | %prec LOWEST_PREC TOKEN_EOF | 401 | %prec LOWEST_PREC TOKEN_EOF |
| 402 ; | 402 ; |
| 403 | 403 |
| 404 closing_parenthesis: | 404 closing_parenthesis: |
| 405 ')' | 405 ')' |
| 406 | %prec LOWEST_PREC TOKEN_EOF | 406 | %prec LOWEST_PREC TOKEN_EOF |
| 407 ; | 407 ; |
| 408 | 408 |
| 409 closing_square_bracket: | |
| 410 ']' | |
| 411 | %prec LOWEST_PREC TOKEN_EOF | |
| 412 ; | |
| 413 | |
| 414 semi_or_eof: | |
| 415 ';' | |
| 416 | TOKEN_EOF | |
| 417 ; | |
| 418 | |
| 409 charset: | 419 charset: |
| 410 CHARSET_SYM maybe_space STRING maybe_space ';' { | 420 CHARSET_SYM maybe_space STRING maybe_space semi_or_eof { |
| 411 if (parser->m_styleSheet) | 421 if (parser->m_styleSheet) |
| 412 parser->m_styleSheet->parserSetEncodingFromCharsetRule($3); | 422 parser->m_styleSheet->parserSetEncodingFromCharsetRule($3); |
| 413 parser->startEndUnknownRule(); | 423 parser->startEndUnknownRule(); |
| 414 $$ = 0; | 424 $$ = 0; |
| 415 } | 425 } |
| 416 | CHARSET_SYM at_rule_recovery { | 426 | CHARSET_SYM at_rule_recovery { |
| 417 } | 427 } |
| 418 ; | 428 ; |
| 419 | 429 |
| 420 rule_list: | 430 rule_list: |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 505 } | 515 } |
| 506 ; | 516 ; |
| 507 | 517 |
| 508 before_import_rule: | 518 before_import_rule: |
| 509 /* empty */ { | 519 /* empty */ { |
| 510 parser->startRuleHeader(CSSRuleSourceData::IMPORT_RULE); | 520 parser->startRuleHeader(CSSRuleSourceData::IMPORT_RULE); |
| 511 } | 521 } |
| 512 ; | 522 ; |
| 513 | 523 |
| 514 import: | 524 import: |
| 515 before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list ';' { | 525 before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list semi_or_eof { |
| 516 $$ = parser->createImportRule($4, $6); | |
| 517 } | |
| 518 | before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list TOKEN_EOF { | |
| 519 $$ = parser->createImportRule($4, $6); | 526 $$ = parser->createImportRule($4, $6); |
| 520 } | 527 } |
| 521 | before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list invalid_block { | 528 | before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list invalid_block { |
| 522 $$ = 0; | 529 $$ = 0; |
| 523 parser->endRuleBody(true); | 530 parser->endRuleBody(true); |
| 524 } | 531 } |
| 525 | before_import_rule IMPORT_SYM at_rule_recovery { | 532 | before_import_rule IMPORT_SYM at_rule_recovery { |
| 526 $$ = 0; | 533 $$ = 0; |
| 527 parser->endRuleBody(true); | 534 parser->endRuleBody(true); |
| 528 } | 535 } |
| 529 ; | 536 ; |
| 530 | 537 |
| 531 namespace: | 538 namespace: |
| 532 NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space ';' { | 539 NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space semi_or_eof { |
| 533 parser->addNamespace($3, $4); | 540 parser->addNamespace($3, $4); |
| 534 $$ = 0; | 541 $$ = 0; |
| 535 } | 542 } |
| 536 | NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space invalid_bl ock { | 543 | NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space invalid_bl ock { |
| 537 $$ = 0; | 544 $$ = 0; |
| 538 } | 545 } |
| 539 | NAMESPACE_SYM at_rule_recovery { | 546 | NAMESPACE_SYM at_rule_recovery { |
| 540 $$ = 0; | 547 $$ = 0; |
| 541 } | 548 } |
| 542 ; | 549 ; |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 678 } | 685 } |
| 679 ; | 686 ; |
| 680 | 687 |
| 681 media: | 688 media: |
| 682 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at _rule_body_start maybe_space block_rule_body closing_brace { | 689 before_media_rule MEDIA_SYM maybe_space media_list at_rule_header_end '{' at _rule_body_start maybe_space block_rule_body closing_brace { |
| 683 $$ = parser->createMediaRule($4, $9); | 690 $$ = parser->createMediaRule($4, $9); |
| 684 } | 691 } |
| 685 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod y_start maybe_space block_rule_body closing_brace { | 692 | before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_bod y_start maybe_space block_rule_body closing_brace { |
| 686 $$ = parser->createMediaRule(0, $7); | 693 $$ = parser->createMediaRule(0, $7); |
| 687 } | 694 } |
| 688 | before_media_rule MEDIA_SYM maybe_space media_list ';' { | 695 | before_media_rule MEDIA_SYM maybe_space media_list semi_or_eof { |
| 689 $$ = 0; | 696 $$ = 0; |
| 690 parser->endRuleBody(true); | 697 parser->endRuleBody(true); |
| 691 } | 698 } |
| 692 | before_media_rule MEDIA_SYM at_rule_recovery { | 699 | before_media_rule MEDIA_SYM at_rule_recovery { |
| 693 $$ = 0; | 700 $$ = 0; |
| 694 parser->endRuleBody(true); | 701 parser->endRuleBody(true); |
| 695 } | 702 } |
| 696 ; | 703 ; |
| 697 | 704 |
| 698 medium: | 705 medium: |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 752 supports_disjunction: | 759 supports_disjunction: |
| 753 supports_condition_in_parens SUPPORTS_OR maybe_space supports_condition_in_p arens { | 760 supports_condition_in_parens SUPPORTS_OR maybe_space supports_condition_in_p arens { |
| 754 $$ = $1 || $4; | 761 $$ = $1 || $4; |
| 755 } | 762 } |
| 756 | supports_disjunction SUPPORTS_OR maybe_space supports_condition_in_parens { | 763 | supports_disjunction SUPPORTS_OR maybe_space supports_condition_in_parens { |
| 757 $$ = $1 || $4; | 764 $$ = $1 || $4; |
| 758 } | 765 } |
| 759 ; | 766 ; |
| 760 | 767 |
| 761 supports_condition_in_parens: | 768 supports_condition_in_parens: |
| 762 '(' maybe_space supports_condition ')' maybe_space { | 769 '(' maybe_space supports_condition closing_parenthesis maybe_space { |
| 763 $$ = $3; | 770 $$ = $3; |
| 764 } | 771 } |
| 765 | supports_declaration_condition | 772 | supports_declaration_condition |
| 766 | '(' error error_location error_recovery ')' maybe_space { | 773 | '(' error error_location error_recovery closing_parenthesis maybe_space { |
| 767 parser->reportError($3, CSSParser::InvalidSupportsConditionError); | 774 parser->reportError($3, CSSParser::InvalidSupportsConditionError); |
| 768 $$ = false; | 775 $$ = false; |
| 769 } | 776 } |
| 770 ; | 777 ; |
| 771 | 778 |
| 772 supports_declaration_condition: | 779 supports_declaration_condition: |
| 773 '(' maybe_space IDENT maybe_space ':' maybe_space expr prio ')' maybe_space { | 780 '(' maybe_space IDENT maybe_space ':' maybe_space expr prio closing_parenthe sis maybe_space { |
| 774 $$ = false; | 781 $$ = false; |
| 775 CSSPropertyID id = cssPropertyID($3); | 782 CSSPropertyID id = cssPropertyID($3); |
| 776 if (id != CSSPropertyInvalid) { | 783 if (id != CSSPropertyInvalid) { |
| 777 parser->m_valueList = parser->sinkFloatingValueList($7); | 784 parser->m_valueList = parser->sinkFloatingValueList($7); |
| 778 int oldParsedProperties = parser->m_parsedProperties.size(); | 785 int oldParsedProperties = parser->m_parsedProperties.size(); |
| 779 $$ = parser->parseValue(id, $8); | 786 $$ = parser->parseValue(id, $8); |
| 780 // We just need to know if the declaration is supported as it is wri tten. Rollback any additions. | 787 // We just need to know if the declaration is supported as it is wri tten. Rollback any additions. |
| 781 if ($$) | 788 if ($$) |
| 782 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); | 789 parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); |
| 783 } | 790 } |
| 784 parser->m_valueList = nullptr; | 791 parser->m_valueList = nullptr; |
| 785 parser->endProperty($8, false); | 792 parser->endProperty($8, false); |
| 786 } | 793 } |
| 787 | '(' maybe_space IDENT maybe_space ':' maybe_space error error_recovery ')' maybe_space { | 794 | '(' maybe_space IDENT maybe_space ':' maybe_space error error_recovery clo sing_parenthesis maybe_space { |
| 788 $$ = false; | 795 $$ = false; |
| 789 parser->endProperty(false, false, CSSParser::GeneralError); | 796 parser->endProperty(false, false, CSSParser::GeneralError); |
| 790 } | 797 } |
| 791 ; | 798 ; |
| 792 | 799 |
| 793 before_keyframes_rule: | 800 before_keyframes_rule: |
| 794 /* empty */ { | 801 /* empty */ { |
| 795 parser->startRuleHeader(CSSRuleSourceData::KEYFRAMES_RULE); | 802 parser->startRuleHeader(CSSRuleSourceData::KEYFRAMES_RULE); |
| 796 } | 803 } |
| 797 ; | 804 ; |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1309 | 1316 |
| 1310 attr_name: | 1317 attr_name: |
| 1311 IDENT maybe_space { | 1318 IDENT maybe_space { |
| 1312 if (parser->m_context.isHTMLDocument) | 1319 if (parser->m_context.isHTMLDocument) |
| 1313 parser->tokenToLowerCase($1); | 1320 parser->tokenToLowerCase($1); |
| 1314 $$ = $1; | 1321 $$ = $1; |
| 1315 } | 1322 } |
| 1316 ; | 1323 ; |
| 1317 | 1324 |
| 1318 attrib: | 1325 attrib: |
| 1319 '[' maybe_space attr_name ']' { | 1326 '[' maybe_space attr_name closing_square_bracket { |
| 1320 $$ = parser->createFloatingSelector(); | 1327 $$ = parser->createFloatingSelector(); |
| 1321 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); | 1328 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
| 1322 $$->setMatch(CSSSelector::Set); | 1329 $$->setMatch(CSSSelector::Set); |
| 1323 } | 1330 } |
| 1324 | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space '] ' { | 1331 | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space cl osing_square_bracket { |
| 1325 $$ = parser->createFloatingSelector(); | 1332 $$ = parser->createFloatingSelector(); |
| 1326 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); | 1333 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
| 1327 $$->setMatch((CSSSelector::Match)$4); | 1334 $$->setMatch((CSSSelector::Match)$4); |
| 1328 $$->setValue($6); | 1335 $$->setValue($6); |
| 1329 } | 1336 } |
| 1330 | '[' maybe_space namespace_selector attr_name ']' { | 1337 | '[' maybe_space namespace_selector attr_name closing_square_bracket { |
| 1331 $$ = parser->createFloatingSelector(); | 1338 $$ = parser->createFloatingSelector(); |
| 1332 $$->setAttribute(parser->determineNameInNamespace($3, $4)); | 1339 $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
| 1333 $$->setMatch(CSSSelector::Set); | 1340 $$->setMatch(CSSSelector::Set); |
| 1334 } | 1341 } |
| 1335 | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_st ring maybe_space ']' { | 1342 | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_st ring maybe_space closing_square_bracket { |
| 1336 $$ = parser->createFloatingSelector(); | 1343 $$ = parser->createFloatingSelector(); |
| 1337 $$->setAttribute(parser->determineNameInNamespace($3, $4)); | 1344 $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
| 1338 $$->setMatch((CSSSelector::Match)$5); | 1345 $$->setMatch((CSSSelector::Match)$5); |
| 1339 $$->setValue($7); | 1346 $$->setValue($7); |
| 1340 } | 1347 } |
| 1341 | '[' selector_recovery ']' { | 1348 | '[' selector_recovery closing_square_bracket { |
| 1342 YYERROR; | 1349 YYERROR; |
| 1343 } | 1350 } |
| 1344 ; | 1351 ; |
| 1345 | 1352 |
| 1346 match: | 1353 match: |
| 1347 '=' { | 1354 '=' { |
| 1348 $$ = CSSSelector::Exact; | 1355 $$ = CSSSelector::Exact; |
| 1349 } | 1356 } |
| 1350 | INCLUDES { | 1357 | INCLUDES { |
| 1351 $$ = CSSSelector::List; | 1358 $$ = CSSSelector::List; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1394 $$ = parser->createFloatingSelector(); | 1401 $$ = parser->createFloatingSelector(); |
| 1395 $$->setMatch(CSSSelector::PseudoElement); | 1402 $$->setMatch(CSSSelector::PseudoElement); |
| 1396 parser->tokenToLowerCase($3); | 1403 parser->tokenToLowerCase($3); |
| 1397 $$->setValue($3); | 1404 $$->setValue($3); |
| 1398 // FIXME: This call is needed to force selector to compute the pseudoTyp e early enough. | 1405 // FIXME: This call is needed to force selector to compute the pseudoTyp e early enough. |
| 1399 CSSSelector::PseudoType type = $$->pseudoType(); | 1406 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1400 if (type == CSSSelector::PseudoUnknown) | 1407 if (type == CSSSelector::PseudoUnknown) |
| 1401 $$ = 0; | 1408 $$ = 0; |
| 1402 } | 1409 } |
| 1403 // used by ::cue(:past/:future) | 1410 // used by ::cue(:past/:future) |
| 1404 | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space ')' { | 1411 | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space closing_p arenthesis { |
| 1405 if ($5) { | 1412 if ($5) { |
| 1406 $$ = parser->createFloatingSelector(); | 1413 $$ = parser->createFloatingSelector(); |
| 1407 $$->setMatch(CSSSelector::PseudoClass); | 1414 $$->setMatch(CSSSelector::PseudoClass); |
| 1408 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($5)); | 1415 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($5)); |
| 1409 $$->setValue($3); | 1416 $$->setValue($3); |
| 1410 CSSSelector::PseudoType type = $$->pseudoType(); | 1417 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1411 if (type != CSSSelector::PseudoCue) | 1418 if (type != CSSSelector::PseudoCue) |
| 1412 $$ = 0; | 1419 $$ = 0; |
| 1413 } else | 1420 } else |
| 1414 $$ = 0; | 1421 $$ = 0; |
| 1415 } | 1422 } |
| 1416 | ':' ':' CUEFUNCTION selector_recovery ')' { | 1423 | ':' ':' CUEFUNCTION selector_recovery closing_parenthesis { |
| 1417 YYERROR; | 1424 YYERROR; |
| 1418 } | 1425 } |
| 1419 | ':' ':' DISTRIBUTEDFUNCTION maybe_space relative_selector ')' { | 1426 | ':' ':' DISTRIBUTEDFUNCTION maybe_space relative_selector closing_parenthe sis { |
| 1420 if (!$5) | 1427 if (!$5) |
| 1421 $$ = 0; | 1428 $$ = 0; |
| 1422 else { | 1429 else { |
| 1423 $$ = parser->createFloatingSelector(); | 1430 $$ = parser->createFloatingSelector(); |
| 1424 $$->setMatch(CSSSelector::PseudoElement); | 1431 $$->setMatch(CSSSelector::PseudoElement); |
| 1425 $$->setFunctionArgumentSelector($5); | 1432 $$->setFunctionArgumentSelector($5); |
| 1426 parser->tokenToLowerCase($3); | 1433 parser->tokenToLowerCase($3); |
| 1427 $$->setValue($3); | 1434 $$->setValue($3); |
| 1428 } | 1435 } |
| 1429 } | 1436 } |
| 1430 | ':' ':' DISTRIBUTEDFUNCTION selector_recovery ')' { | 1437 | ':' ':' DISTRIBUTEDFUNCTION selector_recovery closing_parenthesis { |
| 1431 YYERROR; | 1438 YYERROR; |
| 1432 } | 1439 } |
| 1433 // use by :-webkit-any. | 1440 // use by :-webkit-any. |
| 1434 // FIXME: should we support generic selectors here or just simple_selectors? | 1441 // FIXME: should we support generic selectors here or just simple_selectors? |
| 1435 // Use simple_selector_list for now to match -moz-any. | 1442 // Use simple_selector_list for now to match -moz-any. |
| 1436 // See http://lists.w3.org/Archives/Public/www-style/2010Sep/0566.html for s ome | 1443 // See http://lists.w3.org/Archives/Public/www-style/2010Sep/0566.html for s ome |
| 1437 // related discussion with respect to :not. | 1444 // related discussion with respect to :not. |
| 1438 | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space ')' { | 1445 | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space closing_paren thesis { |
| 1439 if ($4) { | 1446 if ($4) { |
| 1440 $$ = parser->createFloatingSelector(); | 1447 $$ = parser->createFloatingSelector(); |
| 1441 $$->setMatch(CSSSelector::PseudoClass); | 1448 $$->setMatch(CSSSelector::PseudoClass); |
| 1442 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); | 1449 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); |
| 1443 parser->tokenToLowerCase($2); | 1450 parser->tokenToLowerCase($2); |
| 1444 $$->setValue($2); | 1451 $$->setValue($2); |
| 1445 CSSSelector::PseudoType type = $$->pseudoType(); | 1452 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1446 if (type != CSSSelector::PseudoAny) | 1453 if (type != CSSSelector::PseudoAny) |
| 1447 $$ = 0; | 1454 $$ = 0; |
| 1448 } else | 1455 } else |
| 1449 $$ = 0; | 1456 $$ = 0; |
| 1450 } | 1457 } |
| 1451 | ':' ANYFUNCTION selector_recovery ')' { | 1458 | ':' ANYFUNCTION selector_recovery closing_parenthesis { |
| 1452 YYERROR; | 1459 YYERROR; |
| 1453 } | 1460 } |
| 1454 // used by :nth-*(ax+b) | 1461 // used by :nth-*(ax+b) |
| 1455 | ':' FUNCTION maybe_space NTH maybe_space ')' { | 1462 | ':' FUNCTION maybe_space NTH maybe_space closing_parenthesis { |
| 1456 $$ = parser->createFloatingSelector(); | 1463 $$ = parser->createFloatingSelector(); |
| 1457 $$->setMatch(CSSSelector::PseudoClass); | 1464 $$->setMatch(CSSSelector::PseudoClass); |
| 1458 $$->setArgument($4); | 1465 $$->setArgument($4); |
| 1459 $$->setValue($2); | 1466 $$->setValue($2); |
| 1460 CSSSelector::PseudoType type = $$->pseudoType(); | 1467 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1461 if (type == CSSSelector::PseudoUnknown) | 1468 if (type == CSSSelector::PseudoUnknown) |
| 1462 $$ = 0; | 1469 $$ = 0; |
| 1463 } | 1470 } |
| 1464 // used by :nth-* | 1471 // used by :nth-* |
| 1465 | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space ')' { | 1472 | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space closing_ parenthesis { |
| 1466 $$ = parser->createFloatingSelector(); | 1473 $$ = parser->createFloatingSelector(); |
| 1467 $$->setMatch(CSSSelector::PseudoClass); | 1474 $$->setMatch(CSSSelector::PseudoClass); |
| 1468 $$->setArgument(String::number($4 * $5)); | 1475 $$->setArgument(String::number($4 * $5)); |
| 1469 $$->setValue($2); | 1476 $$->setValue($2); |
| 1470 CSSSelector::PseudoType type = $$->pseudoType(); | 1477 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1471 if (type == CSSSelector::PseudoUnknown) | 1478 if (type == CSSSelector::PseudoUnknown) |
| 1472 $$ = 0; | 1479 $$ = 0; |
| 1473 } | 1480 } |
| 1474 // used by :nth-*(odd/even) and :lang | 1481 // used by :nth-*(odd/even) and :lang |
| 1475 | ':' FUNCTION maybe_space IDENT maybe_space ')' { | 1482 | ':' FUNCTION maybe_space IDENT maybe_space closing_parenthesis { |
| 1476 $$ = parser->createFloatingSelector(); | 1483 $$ = parser->createFloatingSelector(); |
| 1477 $$->setMatch(CSSSelector::PseudoClass); | 1484 $$->setMatch(CSSSelector::PseudoClass); |
| 1478 $$->setArgument($4); | 1485 $$->setArgument($4); |
| 1479 parser->tokenToLowerCase($2); | 1486 parser->tokenToLowerCase($2); |
| 1480 $$->setValue($2); | 1487 $$->setValue($2); |
| 1481 CSSSelector::PseudoType type = $$->pseudoType(); | 1488 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1482 if (type == CSSSelector::PseudoUnknown) | 1489 if (type == CSSSelector::PseudoUnknown) |
| 1483 $$ = 0; | 1490 $$ = 0; |
| 1484 else if (type == CSSSelector::PseudoNthChild || | 1491 else if (type == CSSSelector::PseudoNthChild || |
| 1485 type == CSSSelector::PseudoNthOfType || | 1492 type == CSSSelector::PseudoNthOfType || |
| 1486 type == CSSSelector::PseudoNthLastChild || | 1493 type == CSSSelector::PseudoNthLastChild || |
| 1487 type == CSSSelector::PseudoNthLastOfType) { | 1494 type == CSSSelector::PseudoNthLastOfType) { |
| 1488 if (!isValidNthToken($4)) | 1495 if (!isValidNthToken($4)) |
| 1489 $$ = 0; | 1496 $$ = 0; |
| 1490 } | 1497 } |
| 1491 } | 1498 } |
| 1492 | ':' FUNCTION selector_recovery ')' { | 1499 | ':' FUNCTION selector_recovery closing_parenthesis { |
| 1493 YYERROR; | 1500 YYERROR; |
| 1494 } | 1501 } |
| 1495 // used by :not | 1502 // used by :not |
| 1496 | ':' NOTFUNCTION maybe_space simple_selector maybe_space ')' { | 1503 | ':' NOTFUNCTION maybe_space simple_selector maybe_space closing_parenthesi s { |
| 1497 if (!$4 || !$4->isSimple()) | 1504 if (!$4 || !$4->isSimple()) |
| 1498 $$ = 0; | 1505 $$ = 0; |
| 1499 else { | 1506 else { |
| 1500 $$ = parser->createFloatingSelector(); | 1507 $$ = parser->createFloatingSelector(); |
| 1501 $$->setMatch(CSSSelector::PseudoClass); | 1508 $$->setMatch(CSSSelector::PseudoClass); |
| 1502 | 1509 |
| 1503 Vector<OwnPtr<CSSParserSelector> > selectorVector; | 1510 Vector<OwnPtr<CSSParserSelector> > selectorVector; |
| 1504 selectorVector.append(parser->sinkFloatingSelector($4)); | 1511 selectorVector.append(parser->sinkFloatingSelector($4)); |
| 1505 $$->adoptSelectorVector(selectorVector); | 1512 $$->adoptSelectorVector(selectorVector); |
| 1506 | 1513 |
| 1507 parser->tokenToLowerCase($2); | 1514 parser->tokenToLowerCase($2); |
| 1508 $$->setValue($2); | 1515 $$->setValue($2); |
| 1509 } | 1516 } |
| 1510 } | 1517 } |
| 1511 | ':' NOTFUNCTION selector_recovery ')' { | 1518 | ':' NOTFUNCTION selector_recovery closing_parenthesis { |
| 1512 YYERROR; | 1519 YYERROR; |
| 1513 } | 1520 } |
| 1514 ; | 1521 ; |
| 1515 | 1522 |
| 1516 selector_recovery: | 1523 selector_recovery: |
| 1517 error error_location error_recovery; | 1524 error error_location error_recovery; |
| 1518 | 1525 |
| 1519 declaration_list: | 1526 declaration_list: |
| 1520 /* empty */ { $$ = false; } | 1527 /* empty */ { $$ = false; } |
| 1521 | declaration { | 1528 | declaration { |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1867 invalid_at: | 1874 invalid_at: |
| 1868 ATKEYWORD at_rule_recovery | 1875 ATKEYWORD at_rule_recovery |
| 1869 | margin_sym at_rule_recovery | 1876 | margin_sym at_rule_recovery |
| 1870 | error CHARSET_SYM at_rule_recovery | 1877 | error CHARSET_SYM at_rule_recovery |
| 1871 ; | 1878 ; |
| 1872 | 1879 |
| 1873 at_rule_recovery: | 1880 at_rule_recovery: |
| 1874 error rule_error_recovery at_rule_end; | 1881 error rule_error_recovery at_rule_end; |
| 1875 | 1882 |
| 1876 at_rule_end: | 1883 at_rule_end: |
| 1877 at_invalid_rule_header_end ';' | 1884 at_invalid_rule_header_end semi_or_eof |
| 1878 | at_invalid_rule_header_end invalid_block | 1885 | at_invalid_rule_header_end invalid_block |
| 1879 ; | 1886 ; |
| 1880 | 1887 |
| 1881 invalid_rule: | 1888 invalid_rule: |
| 1882 error rule_error_recovery at_invalid_rule_header_end invalid_block { | 1889 error rule_error_recovery at_invalid_rule_header_end invalid_block { |
| 1883 $$ = 0; | 1890 $$ = 0; |
| 1884 } | 1891 } |
| 1885 | invalid_at { | 1892 | invalid_at { |
| 1886 $$ = 0; | 1893 $$ = 0; |
| 1887 } | 1894 } |
| 1888 ; | 1895 ; |
| 1889 | 1896 |
| 1890 at_invalid_rule_header_end: | 1897 at_invalid_rule_header_end: |
| 1891 /* empty */ { | 1898 /* empty */ { |
| 1892 parser->endInvalidRuleHeader(); | 1899 parser->endInvalidRuleHeader(); |
| 1893 } | 1900 } |
| 1894 ; | 1901 ; |
| 1895 | 1902 |
| 1896 invalid_block: | 1903 invalid_block: |
| 1897 '{' error_recovery closing_brace { | 1904 '{' error_recovery closing_brace { |
| 1898 parser->invalidBlockHit(); | 1905 parser->invalidBlockHit(); |
| 1899 } | 1906 } |
| 1900 ; | 1907 ; |
| 1901 | 1908 |
| 1902 invalid_square_brackets_block: | 1909 invalid_square_brackets_block: |
| 1903 '[' error_recovery ']' | 1910 '[' error_recovery closing_square_bracket |
| 1904 | '[' error_recovery TOKEN_EOF | |
| 1905 ; | 1911 ; |
| 1906 | 1912 |
| 1907 invalid_parentheses_block: | 1913 invalid_parentheses_block: |
| 1908 opening_parenthesis error_recovery closing_parenthesis; | 1914 opening_parenthesis error_recovery closing_parenthesis; |
| 1909 | 1915 |
| 1910 opening_parenthesis: | 1916 opening_parenthesis: |
| 1911 '(' | FUNCTION | CALCFUNCTION | VARFUNCTION | MINFUNCTION | MAXFUNCTION | AN YFUNCTION | NOTFUNCTION | CUEFUNCTION | DISTRIBUTEDFUNCTION | 1917 '(' | FUNCTION | CALCFUNCTION | VARFUNCTION | MINFUNCTION | MAXFUNCTION | AN YFUNCTION | NOTFUNCTION | CUEFUNCTION | DISTRIBUTEDFUNCTION |
| 1912 ; | 1918 ; |
| 1913 | 1919 |
| 1914 error_location: { | 1920 error_location: { |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1926 | 1932 |
| 1927 rule_error_recovery: | 1933 rule_error_recovery: |
| 1928 /* empty */ | 1934 /* empty */ |
| 1929 | rule_error_recovery error | 1935 | rule_error_recovery error |
| 1930 | rule_error_recovery invalid_square_brackets_block | 1936 | rule_error_recovery invalid_square_brackets_block |
| 1931 | rule_error_recovery invalid_parentheses_block | 1937 | rule_error_recovery invalid_parentheses_block |
| 1932 ; | 1938 ; |
| 1933 | 1939 |
| 1934 %% | 1940 %% |
| 1935 | 1941 |
| OLD | NEW |