Index: Source/core/css/CSSGrammar.y.in |
diff --git a/Source/core/css/CSSGrammar.y.in b/Source/core/css/CSSGrammar.y.in |
index 9a4c5db224f44c570c8b782107d5d87697342248..c9cbca285bf025f50fb2f621b88d5133cf6c9878 100644 |
--- a/Source/core/css/CSSGrammar.y.in |
+++ b/Source/core/css/CSSGrammar.y.in |
@@ -139,10 +139,10 @@ inline static CSSParserValue makeOperatorValue(int value) |
%token INTERNAL_RULE_SYM |
%token INTERNAL_SELECTOR_SYM |
%token INTERNAL_VALUE_SYM |
-%token WEBKIT_KEYFRAME_RULE_SYM |
+%token INTERNAL_KEYFRAME_RULE_SYM |
+%token INTERNAL_SUPPORTS_CONDITION_SYM |
%token WEBKIT_KEYFRAMES_SYM |
%token WEBKIT_REGION_RULE_SYM |
-%token WEBKIT_SUPPORTS_CONDITION_SYM |
%token WEBKIT_FILTER_RULE_SYM |
%token <marginBox> TOPLEFTCORNER_SYM |
%token <marginBox> TOPLEFT_SYM |
@@ -328,36 +328,36 @@ inline static CSSParserValue makeOperatorValue(int value) |
stylesheet: |
maybe_charset maybe_sgml rule_list |
- | internal_decls maybe_space |
- | internal_rule maybe_space |
- | internal_selector maybe_space |
- | internal_value maybe_space |
+ | internal_decls |
+ | internal_rule |
+ | internal_selector |
+ | internal_value |
| internal_medialist |
- | webkit_keyframe_rule maybe_space |
- | webkit_supports_condition maybe_space |
+ | internal_keyframe_rule |
+ | internal_supports_condition |
; |
internal_rule: |
- INTERNAL_RULE_SYM '{' maybe_space valid_rule maybe_space '}' { |
- parser->m_rule = $4; |
+ INTERNAL_RULE_SYM maybe_space valid_rule maybe_space TOKEN_EOF { |
+ parser->m_rule = $3; |
} |
; |
-webkit_keyframe_rule: |
- WEBKIT_KEYFRAME_RULE_SYM '{' maybe_space keyframe_rule maybe_space '}' { |
- parser->m_keyframe = $4; |
+internal_keyframe_rule: |
+ INTERNAL_KEYFRAME_RULE_SYM maybe_space keyframe_rule maybe_space TOKEN_EOF { |
+ parser->m_keyframe = $3; |
} |
; |
internal_decls: |
- INTERNAL_DECLS_SYM '{' maybe_space_before_declaration declaration_list '}' { |
+ INTERNAL_DECLS_SYM maybe_space_before_declaration declaration_list TOKEN_EOF { |
/* can be empty */ |
} |
; |
internal_value: |
- INTERNAL_VALUE_SYM '{' maybe_space expr '}' { |
- parser->m_valueList = parser->sinkFloatingValueList($4); |
+ INTERNAL_VALUE_SYM maybe_space expr TOKEN_EOF { |
+ parser->m_valueList = parser->sinkFloatingValueList($3); |
int oldParsedProperties = parser->m_parsedProperties.size(); |
if (!parser->parseValue(parser->m_id, parser->m_important)) |
parser->rollbackLastProperties(parser->m_parsedProperties.size() - oldParsedProperties); |
@@ -372,15 +372,15 @@ internal_medialist: |
; |
internal_selector: |
- INTERNAL_SELECTOR_SYM '{' maybe_space selector_list '}' { |
+ INTERNAL_SELECTOR_SYM maybe_space selector_list TOKEN_EOF { |
if (parser->m_selectorListForParseSelector) |
- parser->m_selectorListForParseSelector->adoptSelectorVector(*$4); |
+ parser->m_selectorListForParseSelector->adoptSelectorVector(*$3); |
} |
; |
-webkit_supports_condition: |
- WEBKIT_SUPPORTS_CONDITION_SYM '{' maybe_space supports_condition '}' { |
- parser->m_supportsCondition = $4; |
+internal_supports_condition: |
+ INTERNAL_SUPPORTS_CONDITION_SYM maybe_space supports_condition TOKEN_EOF { |
+ parser->m_supportsCondition = $3; |
} |
; |
@@ -410,8 +410,18 @@ closing_parenthesis: |
| %prec LOWEST_PREC TOKEN_EOF |
; |
+closing_square_bracket: |
+ ']' |
+ | %prec LOWEST_PREC TOKEN_EOF |
+ ; |
+ |
+semi_or_eof: |
+ ';' |
+ | TOKEN_EOF |
+ ; |
+ |
charset: |
- CHARSET_SYM maybe_space STRING maybe_space ';' { |
+ CHARSET_SYM maybe_space STRING maybe_space semi_or_eof { |
if (parser->m_styleSheet) |
parser->m_styleSheet->parserSetEncodingFromCharsetRule($3); |
parser->startEndUnknownRule(); |
@@ -523,10 +533,7 @@ before_import_rule: |
; |
import: |
- before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list ';' { |
- $$ = parser->createImportRule($4, $6); |
- } |
- | before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list TOKEN_EOF { |
+ before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list semi_or_eof { |
$$ = parser->createImportRule($4, $6); |
} |
| before_import_rule IMPORT_SYM at_import_header_end_maybe_space string_or_uri maybe_space maybe_media_list invalid_block { |
@@ -546,7 +553,7 @@ before_namespace_rule: |
; |
namespace: |
- before_namespace_rule NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space ';' { |
+ before_namespace_rule NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space semi_or_eof { |
parser->addNamespace($4, $5); |
$$ = 0; |
} |
@@ -703,7 +710,7 @@ media: |
| before_media_rule MEDIA_SYM at_rule_header_end_maybe_space '{' at_rule_body_start maybe_space block_rule_body closing_brace { |
$$ = parser->createMediaRule(0, $7); |
} |
- | before_media_rule MEDIA_SYM maybe_space media_list ';' { |
+ | before_media_rule MEDIA_SYM maybe_space media_list semi_or_eof { |
$$ = 0; |
parser->endRuleBody(true); |
} |
@@ -777,18 +784,18 @@ supports_disjunction: |
; |
supports_condition_in_parens: |
- '(' maybe_space supports_condition ')' maybe_space { |
+ '(' maybe_space supports_condition closing_parenthesis maybe_space { |
$$ = $3; |
} |
| supports_declaration_condition |
- | '(' error error_location error_recovery ')' maybe_space { |
+ | '(' error error_location error_recovery closing_parenthesis maybe_space { |
parser->reportError($3, CSSParser::InvalidSupportsConditionError); |
$$ = false; |
} |
; |
supports_declaration_condition: |
- '(' maybe_space IDENT maybe_space ':' maybe_space expr prio ')' maybe_space { |
+ '(' maybe_space IDENT maybe_space ':' maybe_space expr prio closing_parenthesis maybe_space { |
$$ = false; |
CSSPropertyID id = cssPropertyID($3); |
if (id != CSSPropertyInvalid) { |
@@ -802,7 +809,7 @@ supports_declaration_condition: |
parser->m_valueList = nullptr; |
parser->endProperty($8, false); |
} |
- | '(' maybe_space IDENT maybe_space ':' maybe_space error error_recovery ')' maybe_space { |
+ | '(' maybe_space IDENT maybe_space ':' maybe_space error error_recovery closing_parenthesis maybe_space { |
$$ = false; |
parser->endProperty(false, false, CSSParser::GeneralError); |
} |
@@ -1303,29 +1310,29 @@ attr_name: |
; |
attrib: |
- '[' maybe_space attr_name ']' { |
+ '[' maybe_space attr_name closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
$$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
$$->setMatch(CSSSelector::Set); |
} |
- | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space ']' { |
+ | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
$$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
$$->setMatch((CSSSelector::Match)$4); |
$$->setValue($6); |
} |
- | '[' maybe_space namespace_selector attr_name ']' { |
+ | '[' maybe_space namespace_selector attr_name closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
$$->setAttribute(parser->determineNameInNamespace($3, $4)); |
$$->setMatch(CSSSelector::Set); |
} |
- | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_string maybe_space ']' { |
+ | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_string maybe_space closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
$$->setAttribute(parser->determineNameInNamespace($3, $4)); |
$$->setMatch((CSSSelector::Match)$5); |
$$->setValue($7); |
} |
- | '[' selector_recovery ']' { |
+ | '[' selector_recovery closing_square_bracket { |
YYERROR; |
} |
; |
@@ -1388,7 +1395,7 @@ pseudo: |
YYERROR; |
} |
// used by ::cue(:past/:future) |
- | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space ')' { |
+ | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoClass); |
$$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($5)); |
@@ -1397,17 +1404,17 @@ pseudo: |
if (type != CSSSelector::PseudoCue) |
YYERROR; |
} |
- | ':' ':' CUEFUNCTION selector_recovery ')' { |
+ | ':' ':' CUEFUNCTION selector_recovery closing_parenthesis { |
YYERROR; |
} |
- | ':' ':' DISTRIBUTEDFUNCTION maybe_space relative_selector ')' { |
+ | ':' ':' DISTRIBUTEDFUNCTION maybe_space relative_selector closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoElement); |
$$->setFunctionArgumentSelector($5); |
parser->tokenToLowerCase($3); |
$$->setValue($3); |
} |
- | ':' ':' DISTRIBUTEDFUNCTION selector_recovery ')' { |
+ | ':' ':' DISTRIBUTEDFUNCTION selector_recovery closing_parenthesis { |
YYERROR; |
} |
// use by :-webkit-any. |
@@ -1415,7 +1422,7 @@ pseudo: |
// Use simple_selector_list for now to match -moz-any. |
// See http://lists.w3.org/Archives/Public/www-style/2010Sep/0566.html for some |
// related discussion with respect to :not. |
- | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space ')' { |
+ | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoClass); |
$$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); |
@@ -1425,11 +1432,11 @@ pseudo: |
if (type != CSSSelector::PseudoAny) |
YYERROR; |
} |
- | ':' ANYFUNCTION selector_recovery ')' { |
+ | ':' ANYFUNCTION selector_recovery closing_parenthesis { |
YYERROR; |
} |
// used by :nth-*(ax+b) |
- | ':' FUNCTION maybe_space NTH maybe_space ')' { |
+ | ':' FUNCTION maybe_space NTH maybe_space closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoClass); |
$$->setArgument($4); |
@@ -1439,7 +1446,7 @@ pseudo: |
YYERROR; |
} |
// used by :nth-* |
- | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space ')' { |
+ | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoClass); |
$$->setArgument(String::number($4 * $5)); |
@@ -1449,7 +1456,7 @@ pseudo: |
YYERROR; |
} |
// used by :nth-*(odd/even) and :lang |
- | ':' FUNCTION maybe_space IDENT maybe_space ')' { |
+ | ':' FUNCTION maybe_space IDENT maybe_space closing_parenthesis { |
$$ = parser->createFloatingSelector(); |
$$->setMatch(CSSSelector::PseudoClass); |
$$->setArgument($4); |
@@ -1466,11 +1473,11 @@ pseudo: |
YYERROR; |
} |
} |
- | ':' FUNCTION selector_recovery ')' { |
+ | ':' FUNCTION selector_recovery closing_parenthesis { |
YYERROR; |
} |
// used by :not |
- | ':' NOTFUNCTION maybe_space simple_selector maybe_space ')' { |
+ | ':' NOTFUNCTION maybe_space simple_selector maybe_space closing_parenthesis { |
if (!$4->isSimple()) |
YYERROR; |
else { |
@@ -1485,7 +1492,7 @@ pseudo: |
$$->setValue($2); |
} |
} |
- | ':' NOTFUNCTION selector_recovery ')' { |
+ | ':' NOTFUNCTION selector_recovery closing_parenthesis { |
YYERROR; |
} |
; |
@@ -1814,7 +1821,7 @@ at_rule_header_recovery: |
; |
at_rule_end: |
- at_invalid_rule_header_end ';' |
+ at_invalid_rule_header_end semi_or_eof |
| at_invalid_rule_header_end invalid_block |
; |
@@ -1843,8 +1850,7 @@ invalid_block: |
; |
invalid_square_brackets_block: |
- '[' error_recovery ']' |
- | '[' error_recovery TOKEN_EOF |
+ '[' error_recovery closing_square_bracket |
; |
invalid_parentheses_block: |