📄 parser.cpp
字号:
CSSSelector *end = yyvsp[-1].selector; while( end->tagHistory ) end = end->tagHistory; end->relation = CSSSelector::SubSelector; end->tagHistory = yyvsp[0].selector; } ; break;}case 78:#line 662 "parser.y"{ delete yyvsp[-1].selector; yyval.selector = 0; ; break;}case 79:#line 669 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->match = CSSSelector::Id; yyval.selector->attr = ATTR_ID; CSSParser *p = static_cast<CSSParser *>(parser); if (!p->strict) yyvsp[0].string.lower(); yyval.selector->value = atomicString(yyvsp[0].string); ; break;}case 83:#line 684 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->match = CSSSelector::Class; yyval.selector->attr = ATTR_CLASS; CSSParser *p = static_cast<CSSParser *>(parser); if (!p->strict) yyvsp[0].string.lower(); yyval.selector->value = atomicString(yyvsp[0].string); ; break;}case 84:#line 696 "parser.y"{ CSSParser *p = static_cast<CSSParser *>(parser); DOM::DocumentImpl *doc = p->document(); QString attr = qString(yyvsp[-1].string); if ( doc ) { if (doc->isHTMLDocument()) attr = attr.lower(); const DOMString dattr(attr); yyval.attribute = doc->attrId(0, dattr.implementation(), false); } else { yyval.attribute = khtml::getAttrID(attr.lower().ascii(), attr.length()); // this case should never happen - only when loading // the default stylesheet - which must not contain unknown attributes assert(yyval.attribute != 0); } ; break;}case 85:#line 716 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->attr = yyvsp[-1].attribute; yyval.selector->match = CSSSelector::Set; ; break;}case 86:#line 721 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->attr = yyvsp[-5].attribute; yyval.selector->match = (CSSSelector::Match)yyvsp[-4].val; yyval.selector->value = atomicString(yyvsp[-2].string); ; break;}case 87:#line 727 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->attr = yyvsp[-1].attribute; yyval.selector->match = CSSSelector::Set; CSSParser *p = static_cast<CSSParser *>(parser); if (p->styleElement && p->styleElement->isCSSStyleSheet()) static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector->attr, domString(yyvsp[-3].string)); ; break;}case 88:#line 735 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->attr = yyvsp[-5].attribute; yyval.selector->match = (CSSSelector::Match)yyvsp[-4].val; yyval.selector->value = atomicString(yyvsp[-2].string); CSSParser *p = static_cast<CSSParser *>(parser); if (p->styleElement && p->styleElement->isCSSStyleSheet()) static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector->attr, domString(yyvsp[-7].string)); ; break;}case 89:#line 747 "parser.y"{ yyval.val = CSSSelector::Exact; ; break;}case 90:#line 750 "parser.y"{ yyval.val = CSSSelector::List; ; break;}case 91:#line 753 "parser.y"{ yyval.val = CSSSelector::Hyphen; ; break;}case 92:#line 756 "parser.y"{ yyval.val = CSSSelector::Begin; ; break;}case 93:#line 759 "parser.y"{ yyval.val = CSSSelector::End; ; break;}case 94:#line 762 "parser.y"{ yyval.val = CSSSelector::Contain; ; break;}case 97:#line 773 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->match = CSSSelector::Pseudo; yyvsp[0].string.lower(); yyval.selector->value = atomicString(yyvsp[0].string); if (yyval.selector->value == "empty" || yyval.selector->value == "only-child" || yyval.selector->value == "first-child" || yyval.selector->value == "last-child") { CSSParser *p = static_cast<CSSParser *>(parser); DOM::DocumentImpl *doc = p->document(); if (doc) doc->setUsesSiblingRules(true); } ; break;}case 98:#line 787 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->match = CSSSelector::Pseudo; yyvsp[0].string.lower(); yyval.selector->value = atomicString(yyvsp[0].string); ; break;}case 99:#line 793 "parser.y"{ yyval.selector = new CSSSelector(); yyval.selector->match = CSSSelector::Pseudo; yyval.selector->simpleSelector = yyvsp[-2].selector; yyvsp[-4].string.lower(); yyval.selector->value = atomicString(yyvsp[-4].string); ; break;}case 100:#line 803 "parser.y"{ yyval.ok = yyvsp[0].ok; ; break;}case 101:#line 806 "parser.y"{ yyval.ok = yyvsp[-1].ok; if ( yyvsp[0].ok ) yyval.ok = yyvsp[0].ok; ; break;}case 102:#line 811 "parser.y"{ yyval.ok = yyvsp[0].ok; ; break;}case 103:#line 814 "parser.y"{ yyval.ok = false;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping bogus declaration" << endl;#endif ; break;}case 104:#line 820 "parser.y"{ yyval.ok = false;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping all declarations" << endl;#endif ; break;}case 105:#line 829 "parser.y"{ yyval.ok = yyvsp[-2].ok; ; break;}case 106:#line 832 "parser.y"{ yyval.ok = false; ; break;}case 107:#line 835 "parser.y"{ yyval.ok = false;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping bogus declaration" << endl;#endif ; break;}case 108:#line 841 "parser.y"{ yyval.ok = false;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping bogus declaration" << endl;#endif ; break;}case 109:#line 847 "parser.y"{ yyval.ok = yyvsp[-3].ok; if ( yyvsp[-2].ok ) yyval.ok = yyvsp[-2].ok; ; break;}case 110:#line 852 "parser.y"{ yyval.ok = yyvsp[-3].ok;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping bogus declaration" << endl;#endif ; break;}case 111:#line 858 "parser.y"{ yyval.ok = yyvsp[-5].ok;#ifdef CSS_DEBUG kdDebug( 6080 ) << "skipping bogus declaration" << endl;#endif ; break;}case 112:#line 867 "parser.y"{ yyval.ok = false; CSSParser *p = static_cast<CSSParser *>(parser); if ( yyvsp[-4].prop_id && yyvsp[-1].valueList ) { p->valueList = yyvsp[-1].valueList;#ifdef CSS_DEBUG kdDebug( 6080 ) << " got property: " << yyvsp[-4].prop_id << (yyvsp[0].b?" important":"")<< endl;#endif bool ok = p->parseValue( yyvsp[-4].prop_id, yyvsp[0].b ); if ( ok ) yyval.ok = ok;#ifdef CSS_DEBUG else kdDebug( 6080 ) << " couldn't parse value!" << endl;#endif } else { delete yyvsp[-1].valueList; } delete p->valueList; p->valueList = 0; ; break;}case 113:#line 890 "parser.y"{ yyval.ok = false; ; break;}case 114:#line 894 "parser.y"{ /* The default movable type template has letter-spacing: .none; Handle this by looking for error tokens at the start of an expr, recover the expr and then treat as an error, cleaning up and deleting the shifted expr. */ delete yyvsp[-1].valueList; yyval.ok = false; ; break;}case 115:#line 902 "parser.y"{ /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */ yyval.ok = false; ; break;}case 116:#line 907 "parser.y"{ /* div { font-family: } Just reduce away this property with no value. */ yyval.ok = false; ; break;}case 117:#line 914 "parser.y"{ QString str = qString(yyvsp[-1].string); yyval.prop_id = getPropertyID( str.lower().latin1(), str.length() ); ; break;}case 118:#line 921 "parser.y"{ yyval.b = true; ; break;}case 119:#line 922 "parser.y"{ yyval.b = false; ; break;}case 120:#line 926 "parser.y"{ yyval.valueList = new ValueList; yyval.valueList->addValue( yyvsp[0].value ); ; break;}case 121:#line 930 "parser.y"{ yyval.valueList = yyvsp[-2].valueList; if ( yyval.valueList ) { if ( yyvsp[-1].tok ) { Value v; v.id = 0; v.unit = Value::Operator; v.iValue = yyvsp[-1].tok; yyval.valueList->addValue( v ); } yyval.valueList->addValue( yyvsp[0].value ); } ; break;}case 122:#line 943 "parser.y"{ delete yyvsp[-1].valueList; yyval.valueList = 0; ; break;}case 123:#line 950 "parser.y"{ yyval.tok = '/'; ; break;}case 124:#line 953 "parser.y"{ yyval.tok = ','; ; break;}case 125:#line 956 "parser.y"{ yyval.tok = 0; ; break;}case 126:#line 962 "parser.y"{ yyval.value = yyvsp[0].value; ; break;}case 127:#line 963 "parser.y"{ yyval.value = yyvsp[0].value; yyval.value.fValue *= yyvsp[-1].val; ; break;}case 128:#line 964 "parser.y"{ yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_STRING; ; break;}case 129:#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -