⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.cpp

📁 khtml在gtk上的移植版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
            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 + -