📄 parser.cpp
字号:
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
#ifdef YYLSP_NEEDED
*++yylsp = yylloc;
#endif
/* count tokens shifted since error; after three, turn off error status. */
if (yyerrstatus) yyerrstatus--;
yystate = yyn;
goto yynewstate;
/* Do the default action for the current state. */
yydefault:
yyn = yydefact[yystate];
if (yyn == 0)
goto yyerrlab;
/* Do a reduction. yyn is the number of a rule to reduce with. */
yyreduce:
yylen = yyr2[yyn];
if (yylen > 0)
yyval = yyvsp[1-yylen]; /* implement default value of the action */
#if YYDEBUG != 0
if (yydebug)
{
int i;
fprintf (stderr, "Reducing via rule %d (line %d), ",
yyn, yyrline[yyn]);
/* Print the symbols being reduced, and their result. */
for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
fprintf (stderr, "%s ", yytname[yyrhs[i]]);
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
switch (yyn) {
case 5:
#line 245 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
p->rule = yyvsp[-2].rule;
;
break;}
case 6:
#line 252 "parser.y"
{
/* can be empty */
;
break;}
case 7:
#line 258 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].valueList ) {
p->valueList = yyvsp[-1].valueList;
#ifdef CSS_DEBUG
kdDebug( 6080 ) << " got property for " << p->id <<
(p->important?" important":"")<< endl;
bool ok =
#endif
p->parseValue( p->id, p->important );
#ifdef CSS_DEBUG
if ( !ok )
kdDebug( 6080 ) << " couldn't parse value!" << endl;
#endif
}
#ifdef CSS_DEBUG
else
kdDebug( 6080 ) << " no value found!" << endl;
#endif
delete p->valueList;
p->valueList = 0;
;
break;}
case 14:
#line 295 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "charset rule: " << qString(yyvsp[-2].string) << endl;
#endif
;
break;}
case 18:
#line 306 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
p->styleElement->append( yyvsp[-1].rule );
} else {
delete yyvsp[-1].rule;
}
;
break;}
case 22:
#line 323 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
p->styleElement->append( yyvsp[-1].rule );
} else {
delete yyvsp[-1].rule;
}
;
break;}
case 30:
#line 344 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "@import: " << qString(yyvsp[-3].string) << endl;
#endif
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].mediaList && p->styleElement && p->styleElement->isCSSStyleSheet() )
yyval.rule = new CSSImportRuleImpl( p->styleElement, domString(yyvsp[-3].string), yyvsp[-1].mediaList );
else {
yyval.rule = 0;
delete yyvsp[-1].mediaList;
}
;
break;}
case 31:
#line 356 "parser.y"
{
yyval.rule = 0;
;
break;}
case 32:
#line 359 "parser.y"
{
yyval.rule = 0;
;
break;}
case 33:
#line 365 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "@namespace: " << qString(yyvsp[-2].string) << endl;
#endif
CSSParser *p = static_cast<CSSParser *>(parser);
if (p->styleElement && p->styleElement->isCSSStyleSheet())
static_cast<CSSStyleSheetImpl*>(p->styleElement)->addNamespace(p, domString(yyvsp[-3].string), domString(yyvsp[-2].string));
;
break;}
case 36:
#line 378 "parser.y"
{ yyval.string.string = 0; ;
break;}
case 37:
#line 379 "parser.y"
{ yyval.string = yyvsp[-1].string; ;
break;}
case 40:
#line 388 "parser.y"
{
yyval.mediaList = new MediaListImpl();
;
break;}
case 42:
#line 396 "parser.y"
{
yyval.mediaList = 0;
;
break;}
case 43:
#line 399 "parser.y"
{
yyval.mediaList = new MediaListImpl();
yyval.mediaList->appendMedium( domString(yyvsp[0].string).lower() );
;
break;}
case 44:
#line 403 "parser.y"
{
yyval.mediaList = yyvsp[-3].mediaList;
if (yyval.mediaList)
yyval.mediaList->appendMedium( domString(yyvsp[0].string) );
;
break;}
case 45:
#line 408 "parser.y"
{
delete yyvsp[-1].mediaList;
yyval.mediaList = 0;
;
break;}
case 46:
#line 415 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-4].mediaList && yyvsp[-1].ruleList &&
p->styleElement && p->styleElement->isCSSStyleSheet() ) {
yyval.rule = new CSSMediaRuleImpl( static_cast<CSSStyleSheetImpl*>(p->styleElement), yyvsp[-4].mediaList, yyvsp[-1].ruleList );
} else {
yyval.rule = 0;
delete yyvsp[-4].mediaList;
delete yyvsp[-1].ruleList;
}
;
break;}
case 47:
#line 429 "parser.y"
{ yyval.ruleList = 0; ;
break;}
case 48:
#line 430 "parser.y"
{
yyval.ruleList = yyvsp[-2].ruleList;
if ( yyvsp[-1].rule ) {
if ( !yyval.ruleList ) yyval.ruleList = new CSSRuleListImpl();
yyval.ruleList->append( yyvsp[-1].rule );
}
;
break;}
case 49:
#line 440 "parser.y"
{
yyval.string = yyvsp[-1].string;
;
break;}
case 50:
#line 462 "parser.y"
{
yyval.rule = 0;
;
break;}
case 51:
#line 465 "parser.y"
{
yyval.rule = 0;
;
break;}
case 52:
#line 471 "parser.y"
{
yyval.rule = 0;
;
break;}
case 53:
#line 474 "parser.y"
{
yyval.rule = 0;
;
break;}
case 54:
#line 480 "parser.y"
{ yyval.relation = CSSSelector::Sibling; ;
break;}
case 55:
#line 481 "parser.y"
{ yyval.relation = CSSSelector::Child; ;
break;}
case 56:
#line 482 "parser.y"
{ yyval.relation = CSSSelector::Descendant; ;
break;}
case 57:
#line 486 "parser.y"
{ yyval.val = -1; ;
break;}
case 58:
#line 487 "parser.y"
{ yyval.val = 1; ;
break;}
case 59:
#line 491 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "got ruleset" << endl << " selector:" << endl;
#endif
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-4].selector ) {
CSSStyleRuleImpl *rule = new CSSStyleRuleImpl( p->styleElement );
CSSMutableStyleDeclarationImpl *decl = p->createStyleDeclaration( rule );
rule->setSelector( yyvsp[-4].selector );
rule->setDeclaration(decl);
yyval.rule = rule;
} else {
yyval.rule = 0;
p->clearProperties();
}
;
break;}
case 60:
#line 510 "parser.y"
{
if ( yyvsp[0].selector ) {
yyval.selector = yyvsp[0].selector;
#ifdef CSS_DEBUG
kdDebug( 6080 ) << " got simple selector:" << endl;
yyvsp[0].selector->print();
#endif
} else {
yyval.selector = 0;
}
;
break;}
case 61:
#line 521 "parser.y"
{
if ( yyvsp[-3].selector && yyvsp[0].selector ) {
yyval.selector = yyvsp[-3].selector;
yyval.selector->append( yyvsp[0].selector );
#ifdef CSS_DEBUG
kdDebug( 6080 ) << " got simple selector:" << endl;
yyvsp[0].selector->print();
#endif
} else {
delete yyvsp[-3].selector;
delete yyvsp[0].selector;
yyval.selector = 0;
}
;
break;}
case 62:
#line 535 "parser.y"
{
delete yyvsp[-1].selector;
yyval.selector = 0;
;
break;}
case 63:
#line 542 "parser.y"
{
yyval.selector = yyvsp[0].selector;
;
break;}
case 64:
#line 545 "parser.y"
{
yyval.selector = yyvsp[0].selector;
if (!yyvsp[-2].selector) {
delete yyvsp[0].selector;
yyval.selector = 0;
}
else if (yyval.selector) {
CSSSelector *end = yyval.selector;
while( end->tagHistory )
end = end->tagHistory;
end->relation = yyvsp[-1].relation;
end->tagHistory = yyvsp[-2].selector;
if ( yyvsp[-1].relation == CSSSelector::Descendant ||
yyvsp[-1].relation == CSSSelector::Child ) {
CSSParser *p = static_cast<CSSParser *>(parser);
DOM::DocumentImpl *doc = p->document();
if ( doc )
doc->setUsesDescendantRules(true);
}
else if (yyvsp[-1].relation == CSSSelector::Sibling) {
CSSParser *p = static_cast<CSSParser *>(parser);
DOM::DocumentImpl *doc = p->document();
if (doc)
doc->setUsesSiblingRules(true);
}
} else {
delete yyvsp[-2].selector;
}
;
break;}
case 65:
#line 574 "parser.y"
{
delete yyvsp[-1].selector;
yyval.selector = 0;
;
break;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -