| OLD | NEW |
| 1 %{ | 1 %{ |
| 2 | 2 |
| 3 /* | 3 /* |
| 4 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) | 4 * Copyright (C) 2002-2003 Lars Knoll (knoll@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 App
le Inc. All rights reserved. |
| 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 7 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 7 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
| 8 * Copyright (C) 2012 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012 Intel Corporation. All rights reserved. |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 %type <rule> rule | 281 %type <rule> rule |
| 282 %type <rule> valid_rule | 282 %type <rule> valid_rule |
| 283 %type <ruleList> block_rule_body | 283 %type <ruleList> block_rule_body |
| 284 %type <ruleList> block_rule_list | 284 %type <ruleList> block_rule_list |
| 285 %type <rule> block_rule | 285 %type <rule> block_rule |
| 286 %type <rule> block_valid_rule | 286 %type <rule> block_valid_rule |
| 287 %type <rule> supports | 287 %type <rule> supports |
| 288 %type <rule> viewport | 288 %type <rule> viewport |
| 289 %type <boolean> keyframes_rule_start | 289 %type <boolean> keyframes_rule_start |
| 290 | 290 |
| 291 %type <boolean> closing_square_bracket |
| 292 %type <boolean> closing_parenthesis |
| 291 %type <string> maybe_ns_prefix | 293 %type <string> maybe_ns_prefix |
| 292 | 294 |
| 293 %type <string> namespace_selector | 295 %type <string> namespace_selector |
| 294 | 296 |
| 295 %type <string> string_or_uri | 297 %type <string> string_or_uri |
| 296 %type <string> ident_or_string | 298 %type <string> ident_or_string |
| 297 %type <string> medium | 299 %type <string> medium |
| 298 %type <marginBox> margin_sym | 300 %type <marginBox> margin_sym |
| 299 | 301 |
| 300 %type <mediaList> media_list | 302 %type <mediaList> media_list |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 | maybe_sgml SGML_CD | 450 | maybe_sgml SGML_CD |
| 449 | maybe_sgml WHITESPACE | 451 | maybe_sgml WHITESPACE |
| 450 ; | 452 ; |
| 451 | 453 |
| 452 closing_brace: | 454 closing_brace: |
| 453 '}' | 455 '}' |
| 454 | %prec LOWEST_PREC TOKEN_EOF | 456 | %prec LOWEST_PREC TOKEN_EOF |
| 455 ; | 457 ; |
| 456 | 458 |
| 457 closing_parenthesis: | 459 closing_parenthesis: |
| 458 ')' | 460 ')' { $$ = true; } |
| 459 | %prec LOWEST_PREC TOKEN_EOF | 461 | %prec LOWEST_PREC TOKEN_EOF { |
| 462 // While parsing query selector's selector text, we should not |
| 463 // allow missing closing parenthesis. |
| 464 $$ = !parser->m_selectorListForParseSelector; |
| 465 } |
| 460 ; | 466 ; |
| 461 | 467 |
| 462 closing_square_bracket: | 468 closing_square_bracket: |
| 463 ']' | 469 ']' { $$ = true; } |
| 464 | %prec LOWEST_PREC TOKEN_EOF | 470 | %prec LOWEST_PREC TOKEN_EOF { |
| 471 // While parsing query selector's selector text, we should not |
| 472 // allow missing closing square bracket. |
| 473 $$ = !parser->m_selectorListForParseSelector; |
| 474 } |
| 465 ; | 475 ; |
| 466 | 476 |
| 467 semi_or_eof: | 477 semi_or_eof: |
| 468 ';' | 478 ';' |
| 469 | TOKEN_EOF | 479 | TOKEN_EOF |
| 470 ; | 480 ; |
| 471 | 481 |
| 472 maybe_charset: | 482 maybe_charset: |
| 473 /* empty */ | 483 /* empty */ |
| 474 | CHARSET_SYM maybe_space STRING maybe_space semi_or_eof { | 484 | CHARSET_SYM maybe_space STRING maybe_space semi_or_eof { |
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 attr_name: | 1245 attr_name: |
| 1236 IDENT maybe_space { | 1246 IDENT maybe_space { |
| 1237 if (parser->m_context.isHTMLDocument()) | 1247 if (parser->m_context.isHTMLDocument()) |
| 1238 parser->tokenToLowerCase($1); | 1248 parser->tokenToLowerCase($1); |
| 1239 $$ = $1; | 1249 $$ = $1; |
| 1240 } | 1250 } |
| 1241 ; | 1251 ; |
| 1242 | 1252 |
| 1243 attrib: | 1253 attrib: |
| 1244 '[' maybe_space attr_name closing_square_bracket { | 1254 '[' maybe_space attr_name closing_square_bracket { |
| 1255 if (!$4) |
| 1256 YYERROR; |
| 1245 $$ = parser->createFloatingSelector(); | 1257 $$ = parser->createFloatingSelector(); |
| 1246 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); | 1258 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
| 1247 $$->setMatch(CSSSelector::Set); | 1259 $$->setMatch(CSSSelector::Set); |
| 1248 } | 1260 } |
| 1249 | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space cl
osing_square_bracket { | 1261 | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space cl
osing_square_bracket { |
| 1262 if (!$8) |
| 1263 YYERROR; |
| 1250 $$ = parser->createFloatingSelector(); | 1264 $$ = parser->createFloatingSelector(); |
| 1251 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); | 1265 $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
| 1252 $$->setMatch((CSSSelector::Match)$4); | 1266 $$->setMatch((CSSSelector::Match)$4); |
| 1253 $$->setValue($6); | 1267 $$->setValue($6); |
| 1254 } | 1268 } |
| 1255 | '[' maybe_space namespace_selector attr_name closing_square_bracket { | 1269 | '[' maybe_space namespace_selector attr_name closing_square_bracket { |
| 1270 if (!$5) |
| 1271 YYERROR; |
| 1256 $$ = parser->createFloatingSelector(); | 1272 $$ = parser->createFloatingSelector(); |
| 1257 $$->setAttribute(parser->determineNameInNamespace($3, $4)); | 1273 $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
| 1258 $$->setMatch(CSSSelector::Set); | 1274 $$->setMatch(CSSSelector::Set); |
| 1259 } | 1275 } |
| 1260 | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_st
ring maybe_space closing_square_bracket { | 1276 | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_st
ring maybe_space closing_square_bracket { |
| 1277 if (!$9) |
| 1278 YYERROR; |
| 1261 $$ = parser->createFloatingSelector(); | 1279 $$ = parser->createFloatingSelector(); |
| 1262 $$->setAttribute(parser->determineNameInNamespace($3, $4)); | 1280 $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
| 1263 $$->setMatch((CSSSelector::Match)$5); | 1281 $$->setMatch((CSSSelector::Match)$5); |
| 1264 $$->setValue($7); | 1282 $$->setValue($7); |
| 1265 } | 1283 } |
| 1266 | '[' selector_recovery closing_square_bracket { | 1284 | '[' selector_recovery closing_square_bracket { |
| 1267 YYERROR; | 1285 YYERROR; |
| 1268 } | 1286 } |
| 1269 ; | 1287 ; |
| 1270 | 1288 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1330 $$->setValue($4); | 1348 $$->setValue($4); |
| 1331 // FIXME: This call is needed to force selector to compute the pseudoTyp
e early enough. | 1349 // FIXME: This call is needed to force selector to compute the pseudoTyp
e early enough. |
| 1332 CSSSelector::PseudoType type = $$->pseudoType(); | 1350 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1333 if (type == CSSSelector::PseudoUnknown) { | 1351 if (type == CSSSelector::PseudoUnknown) { |
| 1334 parser->reportError($3, InvalidSelectorPseudoCSSError); | 1352 parser->reportError($3, InvalidSelectorPseudoCSSError); |
| 1335 YYERROR; | 1353 YYERROR; |
| 1336 } | 1354 } |
| 1337 } | 1355 } |
| 1338 // used by ::cue(:past/:future) | 1356 // used by ::cue(:past/:future) |
| 1339 | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space closing_p
arenthesis { | 1357 | ':' ':' CUEFUNCTION maybe_space simple_selector_list maybe_space closing_p
arenthesis { |
| 1358 if (!$7) |
| 1359 YYERROR; |
| 1340 $$ = parser->createFloatingSelector(); | 1360 $$ = parser->createFloatingSelector(); |
| 1341 $$->setMatch(CSSSelector::PseudoElement); | 1361 $$->setMatch(CSSSelector::PseudoElement); |
| 1342 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($5)); | 1362 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($5)); |
| 1343 $$->setValue($3); | 1363 $$->setValue($3); |
| 1344 CSSSelector::PseudoType type = $$->pseudoType(); | 1364 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1345 if (type != CSSSelector::PseudoCue) | 1365 if (type != CSSSelector::PseudoCue) |
| 1346 YYERROR; | 1366 YYERROR; |
| 1347 } | 1367 } |
| 1348 | ':' ':' CUEFUNCTION selector_recovery closing_parenthesis { | 1368 | ':' ':' CUEFUNCTION selector_recovery closing_parenthesis { |
| 1349 YYERROR; | 1369 YYERROR; |
| 1350 } | 1370 } |
| 1351 // use by :-webkit-any. | 1371 // use by :-webkit-any. |
| 1352 // FIXME: should we support generic selectors here or just simple_selectors? | 1372 // FIXME: should we support generic selectors here or just simple_selectors? |
| 1353 // Use simple_selector_list for now to match -moz-any. | 1373 // Use simple_selector_list for now to match -moz-any. |
| 1354 // See http://lists.w3.org/Archives/Public/www-style/2010Sep/0566.html for s
ome | 1374 // See http://lists.w3.org/Archives/Public/www-style/2010Sep/0566.html for s
ome |
| 1355 // related discussion with respect to :not. | 1375 // related discussion with respect to :not. |
| 1356 | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space closing_paren
thesis { | 1376 | ':' ANYFUNCTION maybe_space simple_selector_list maybe_space closing_paren
thesis { |
| 1377 if (!$6) |
| 1378 YYERROR; |
| 1357 $$ = parser->createFloatingSelector(); | 1379 $$ = parser->createFloatingSelector(); |
| 1358 $$->setMatch(CSSSelector::PseudoClass); | 1380 $$->setMatch(CSSSelector::PseudoClass); |
| 1359 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); | 1381 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); |
| 1360 parser->tokenToLowerCase($2); | 1382 parser->tokenToLowerCase($2); |
| 1361 $$->setValue($2); | 1383 $$->setValue($2); |
| 1362 CSSSelector::PseudoType type = $$->pseudoType(); | 1384 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1363 if (type != CSSSelector::PseudoAny) | 1385 if (type != CSSSelector::PseudoAny) |
| 1364 YYERROR; | 1386 YYERROR; |
| 1365 } | 1387 } |
| 1366 | ':' ANYFUNCTION selector_recovery closing_parenthesis { | 1388 | ':' ANYFUNCTION selector_recovery closing_parenthesis { |
| 1367 YYERROR; | 1389 YYERROR; |
| 1368 } | 1390 } |
| 1369 // used by :nth-*(ax+b) | 1391 // used by :nth-*(ax+b) |
| 1370 | ':' FUNCTION maybe_space NTH maybe_space closing_parenthesis { | 1392 | ':' FUNCTION maybe_space NTH maybe_space closing_parenthesis { |
| 1393 if (!$6) |
| 1394 YYERROR; |
| 1371 $$ = parser->createFloatingSelector(); | 1395 $$ = parser->createFloatingSelector(); |
| 1372 $$->setMatch(CSSSelector::PseudoClass); | 1396 $$->setMatch(CSSSelector::PseudoClass); |
| 1373 $$->setArgument($4); | 1397 $$->setArgument($4); |
| 1374 $$->setValue($2); | 1398 $$->setValue($2); |
| 1375 CSSSelector::PseudoType type = $$->pseudoType(); | 1399 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1376 if (type == CSSSelector::PseudoUnknown) | 1400 if (type == CSSSelector::PseudoUnknown) |
| 1377 YYERROR; | 1401 YYERROR; |
| 1378 } | 1402 } |
| 1379 // used by :nth-* | 1403 // used by :nth-* |
| 1380 | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space closing_
parenthesis { | 1404 | ':' FUNCTION maybe_space maybe_unary_operator INTEGER maybe_space closing_
parenthesis { |
| 1405 if (!$7) |
| 1406 YYERROR; |
| 1381 $$ = parser->createFloatingSelector(); | 1407 $$ = parser->createFloatingSelector(); |
| 1382 $$->setMatch(CSSSelector::PseudoClass); | 1408 $$->setMatch(CSSSelector::PseudoClass); |
| 1383 $$->setArgument(AtomicString::number($4 * $5)); | 1409 $$->setArgument(AtomicString::number($4 * $5)); |
| 1384 $$->setValue($2); | 1410 $$->setValue($2); |
| 1385 CSSSelector::PseudoType type = $$->pseudoType(); | 1411 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1386 if (type == CSSSelector::PseudoUnknown) | 1412 if (type == CSSSelector::PseudoUnknown) |
| 1387 YYERROR; | 1413 YYERROR; |
| 1388 } | 1414 } |
| 1389 // used by :nth-*(odd/even) and :lang | 1415 // used by :nth-*(odd/even) and :lang |
| 1390 | ':' FUNCTION maybe_space IDENT maybe_space closing_parenthesis { | 1416 | ':' FUNCTION maybe_space IDENT maybe_space closing_parenthesis { |
| 1417 if (!$6) |
| 1418 YYERROR; |
| 1391 $$ = parser->createFloatingSelector(); | 1419 $$ = parser->createFloatingSelector(); |
| 1392 $$->setMatch(CSSSelector::PseudoClass); | 1420 $$->setMatch(CSSSelector::PseudoClass); |
| 1393 $$->setArgument($4); | 1421 $$->setArgument($4); |
| 1394 parser->tokenToLowerCase($2); | 1422 parser->tokenToLowerCase($2); |
| 1395 $$->setValue($2); | 1423 $$->setValue($2); |
| 1396 CSSSelector::PseudoType type = $$->pseudoType(); | 1424 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1397 if (type == CSSSelector::PseudoUnknown) | 1425 if (type == CSSSelector::PseudoUnknown) |
| 1398 YYERROR; | 1426 YYERROR; |
| 1399 else if (type == CSSSelector::PseudoNthChild || | 1427 else if (type == CSSSelector::PseudoNthChild || |
| 1400 type == CSSSelector::PseudoNthOfType || | 1428 type == CSSSelector::PseudoNthOfType || |
| 1401 type == CSSSelector::PseudoNthLastChild || | 1429 type == CSSSelector::PseudoNthLastChild || |
| 1402 type == CSSSelector::PseudoNthLastOfType) { | 1430 type == CSSSelector::PseudoNthLastOfType) { |
| 1403 if (!isValidNthToken($4)) | 1431 if (!isValidNthToken($4)) |
| 1404 YYERROR; | 1432 YYERROR; |
| 1405 } | 1433 } |
| 1406 } | 1434 } |
| 1407 | ':' FUNCTION selector_recovery closing_parenthesis { | 1435 | ':' FUNCTION selector_recovery closing_parenthesis { |
| 1408 YYERROR; | 1436 YYERROR; |
| 1409 } | 1437 } |
| 1410 // used by :not | 1438 // used by :not |
| 1411 | ':' NOTFUNCTION maybe_space simple_selector maybe_space closing_parenthesi
s { | 1439 | ':' NOTFUNCTION maybe_space simple_selector maybe_space closing_parenthesi
s { |
| 1440 if (!$6) |
| 1441 YYERROR; |
| 1412 if (!$4->isSimple()) | 1442 if (!$4->isSimple()) |
| 1413 YYERROR; | 1443 YYERROR; |
| 1414 else { | 1444 else { |
| 1415 $$ = parser->createFloatingSelector(); | 1445 $$ = parser->createFloatingSelector(); |
| 1416 $$->setMatch(CSSSelector::PseudoClass); | 1446 $$->setMatch(CSSSelector::PseudoClass); |
| 1417 | 1447 |
| 1418 Vector<OwnPtr<CSSParserSelector> > selectorVector; | 1448 Vector<OwnPtr<CSSParserSelector> > selectorVector; |
| 1419 selectorVector.append(parser->sinkFloatingSelector($4)); | 1449 selectorVector.append(parser->sinkFloatingSelector($4)); |
| 1420 $$->adoptSelectorVector(selectorVector); | 1450 $$->adoptSelectorVector(selectorVector); |
| 1421 | 1451 |
| 1422 parser->tokenToLowerCase($2); | 1452 parser->tokenToLowerCase($2); |
| 1423 $$->setValue($2); | 1453 $$->setValue($2); |
| 1424 } | 1454 } |
| 1425 } | 1455 } |
| 1426 | ':' NOTFUNCTION selector_recovery closing_parenthesis { | 1456 | ':' NOTFUNCTION selector_recovery closing_parenthesis { |
| 1427 YYERROR; | 1457 YYERROR; |
| 1428 } | 1458 } |
| 1429 | ':' HOSTFUNCTION maybe_space simple_selector_list maybe_space closing_pare
nthesis { | 1459 | ':' HOSTFUNCTION maybe_space simple_selector_list maybe_space closing_pare
nthesis { |
| 1460 if (!$6) |
| 1461 YYERROR; |
| 1430 $$ = parser->createFloatingSelector(); | 1462 $$ = parser->createFloatingSelector(); |
| 1431 $$->setMatch(CSSSelector::PseudoClass); | 1463 $$->setMatch(CSSSelector::PseudoClass); |
| 1432 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); | 1464 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); |
| 1433 parser->tokenToLowerCase($2); | 1465 parser->tokenToLowerCase($2); |
| 1434 $$->setValue($2); | 1466 $$->setValue($2); |
| 1435 CSSSelector::PseudoType type = $$->pseudoType(); | 1467 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1436 if (type != CSSSelector::PseudoHost) | 1468 if (type != CSSSelector::PseudoHost) |
| 1437 YYERROR; | 1469 YYERROR; |
| 1438 } | 1470 } |
| 1439 | ':' HOSTFUNCTION selector_recovery closing_parenthesis { | 1471 | ':' HOSTFUNCTION selector_recovery closing_parenthesis { |
| 1440 YYERROR; | 1472 YYERROR; |
| 1441 } | 1473 } |
| 1442 // used by :host-context() | 1474 // used by :host-context() |
| 1443 | ':' HOSTCONTEXTFUNCTION maybe_space simple_selector_list maybe_space closi
ng_parenthesis { | 1475 | ':' HOSTCONTEXTFUNCTION maybe_space simple_selector_list maybe_space closi
ng_parenthesis { |
| 1476 if (!$6) |
| 1477 YYERROR; |
| 1444 $$ = parser->createFloatingSelector(); | 1478 $$ = parser->createFloatingSelector(); |
| 1445 $$->setMatch(CSSSelector::PseudoClass); | 1479 $$->setMatch(CSSSelector::PseudoClass); |
| 1446 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); | 1480 $$->adoptSelectorVector(*parser->sinkFloatingSelectorVector($4)); |
| 1447 parser->tokenToLowerCase($2); | 1481 parser->tokenToLowerCase($2); |
| 1448 $$->setValue($2); | 1482 $$->setValue($2); |
| 1449 CSSSelector::PseudoType type = $$->pseudoType(); | 1483 CSSSelector::PseudoType type = $$->pseudoType(); |
| 1450 if (type != CSSSelector::PseudoHostContext) | 1484 if (type != CSSSelector::PseudoHostContext) |
| 1451 YYERROR; | 1485 YYERROR; |
| 1452 } | 1486 } |
| 1453 | ':' HOSTCONTEXTFUNCTION selector_recovery closing_parenthesis { | 1487 | ':' HOSTCONTEXTFUNCTION selector_recovery closing_parenthesis { |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1821 ; | 1855 ; |
| 1822 | 1856 |
| 1823 rule_error_recovery: | 1857 rule_error_recovery: |
| 1824 /* empty */ | 1858 /* empty */ |
| 1825 | rule_error_recovery error | 1859 | rule_error_recovery error |
| 1826 | rule_error_recovery invalid_square_brackets_block | 1860 | rule_error_recovery invalid_square_brackets_block |
| 1827 | rule_error_recovery invalid_parentheses_block | 1861 | rule_error_recovery invalid_parentheses_block |
| 1828 ; | 1862 ; |
| 1829 | 1863 |
| 1830 %% | 1864 %% |
| OLD | NEW |