📄 css_syntax.c
字号:
if (yyn == YYFLAG) goto yyerrlab; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; /* Shift the lookahead token. */ YYDPRINTF ((stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval;#if YYLSP_NEEDED *++yylsp = yylloc;#endif /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate;/*-----------------------------------------------------------.| yydefault -- do the default action for the current state. |`-----------------------------------------------------------*/yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce;/*-----------------------------.| yyreduce -- Do a reduction. |`-----------------------------*/yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to the semantic value of the lookahead token. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen];#if YYLSP_NEEDED /* Similarly for the default location. Let the user run additional commands if for instance locations are ranges. */ yyloc = yylsp[1-yylen]; YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);#endif#if YYDEBUG /* We have to keep this `#if YYDEBUG', since we use variables which are defined only if `YYDEBUG' is set. */ if (yydebug) { int yyi; YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", yyn, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); }#endif switch (yyn) {case 1:#line 96 "css_syntax.y"{ *(struct selector_list_t**) yyparam = yyvsp[0].selector_list; } break;case 2:#line 102 "css_syntax.y"{ struct selector_list_t *pos = yyvsp[-2].selector_list; if (pos != NULL) { while (pos->next != NULL) { pos = pos->next; } pos->next = yyvsp[0].selector_list; } else { yyvsp[-2].selector_list = yyvsp[0].selector_list; } yyval.selector_list = yyvsp[-2].selector_list; } break;case 3:#line 114 "css_syntax.y"{ yyval.selector_list = NULL; } break;case 12:#line 138 "css_syntax.y"{ yyval.lexeme = yyvsp[0].lexeme; } break;case 13:#line 139 "css_syntax.y"{ char *begin = yyvsp[0].lexeme; char *end = yyvsp[0].lexeme + strlen(yyvsp[0].lexeme); /* Skip url( */ begin += 4; /* skip whitespace */ while (*begin == ' ') ++begin; /* Skip ) */ end -= 2; /* skip whitespace */ while (*end == ' ') --end; end[1] = 0; yyval.lexeme = strdup(begin); free(yyvsp[0].lexeme); } break;case 14:#line 163 "css_syntax.y"{ yyval.letter = '-'; } break;case 15:#line 164 "css_syntax.y"{ yyval.letter = '+'; } break;case 16:#line 168 "css_syntax.y"{ yyval.letter = '/'; } break;case 17:#line 169 "css_syntax.y"{ yyval.letter = ','; } break;case 18:#line 170 "css_syntax.y"{yyval.letter = ' '; } break;case 19:#line 174 "css_syntax.y"{ yyval.lexeme = yyvsp[0].lexeme; } break;case 20:#line 178 "css_syntax.y"{ struct selector_list_t *pos = yyvsp[-3].selector_list; while (pos != NULL) { struct property_t *i = yyvsp[-1].property; while (i != NULL) { i->count++; i = i->next; } pos->selector->property = yyvsp[-1].property; pos = pos->next; } yyval.selector_list = yyvsp[-3].selector_list; } break;case 21:#line 194 "css_syntax.y"{ if (yyvsp[0].selector != NULL) { yyval.selector_list = (struct selector_list_t*) malloc (sizeof(struct selector_list_t)); yyval.selector_list->selector = yyvsp[0].selector; yyval.selector_list->next = NULL; } else { yyval.selector_list = NULL; } } break;case 22:#line 204 "css_syntax.y"{ if (yyvsp[-2].selector != NULL) { struct selector_list_t *new; new = (struct selector_list_t*) malloc (sizeof(struct selector_list_t)); new->selector = yyvsp[-2].selector; new->next = yyvsp[0].selector_list; yyval.selector_list = new; } else { yyval.selector_list = yyvsp[0].selector_list; } } break;case 23:#line 219 "css_syntax.y"{ yyval.property = yyvsp[0].property; } break;case 24:#line 222 "css_syntax.y"{ if (yyvsp[-2].property != NULL) { yyvsp[-2].property->next = yyvsp[0].property; yyval.property = yyvsp[-2].property; } else { yyval.property = yyvsp[0].property; } } break;case 25:#line 233 "css_syntax.y"{ struct selector_t *pos = yyvsp[-1].selector; while (pos->next != NULL) { pos = pos->next; } pos->pseudo_element = yyvsp[0].pseudo_element; yyval.selector = yyvsp[-1].selector; } break;case 26:#line 241 "css_syntax.y"{ struct selector_t *pos = yyvsp[-1].selector; while (pos->next != NULL) { pos = pos->next; } pos->next = yyvsp[0].selector; yyval.selector = yyvsp[-1].selector; } break;case 27:#line 249 "css_syntax.y"{ yyval.selector = yyvsp[0].selector; } break;case 28:#line 250 "css_syntax.y"{ yyval.selector = yyvsp[0].selector; } break;case 29:#line 251 "css_syntax.y"{ yyval.selector = NULL; } break;case 30:#line 252 "css_syntax.y"{ yyval.selector = NULL; } break;case 31:#line 256 "css_syntax.y"{ yyval.selector = yyvsp[0].selector; } break;case 32:#line 257 "css_syntax.y"{ yyvsp[-1].selector->next = yyvsp[0].selector; yyval.selector = yyvsp[-1].selector; } break;case 33:#line 270 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-3].lexeme; yyval.selector->id = yyvsp[-2].lexeme; yyval.selector->e_class = yyvsp[-1].lexeme; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 34:#line 280 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-2].lexeme; yyval.selector->id = yyvsp[-1].lexeme; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 35:#line 290 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-2].lexeme; yyval.selector->id = NULL; yyval.selector->e_class = yyvsp[-1].lexeme; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 36:#line 300 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-2].lexeme; yyval.selector->id = yyvsp[-1].lexeme; yyval.selector->e_class = yyvsp[0].lexeme; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 37:#line 310 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-1].lexeme; yyval.selector->id = yyvsp[0].lexeme; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 38:#line 320 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-1].lexeme; yyval.selector->id = NULL; yyval.selector->e_class = yyvsp[0].lexeme; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 39:#line 330 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[-1].lexeme; yyval.selector->id = NULL; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 40:#line 340 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = yyvsp[0].lexeme; yyval.selector->id = NULL; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 41:#line 350 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = yyvsp[-2].lexeme; yyval.selector->e_class = yyvsp[-1].lexeme; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 42:#line 360 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = yyvsp[-1].lexeme; yyval.selector->e_class = yyvsp[0].lexeme; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 43:#line 370 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = yyvsp[-1].lexeme; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 44:#line 380 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = yyvsp[0].lexeme; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 45:#line 390 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = NULL; yyval.selector->e_class = yyvsp[-1].lexeme; yyval.selector->pseudo_class = yyvsp[0].pseudo_class; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 46:#line 400 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = NULL; yyval.selector->e_class = yyvsp[0].lexeme; yyval.selector->pseudo_class = 0; yyval.selector->pseudo_element = 0; yyval.selector->next = NULL; } break;case 47:#line 410 "css_syntax.y"{ yyval.selector = (struct selector_t*) malloc(sizeof(struct selector_t)); yyval.selector->element_name = NULL; yyval.selector->id = NULL; yyval.selector->e_class = NULL; yyval.selector->pseudo_class = yyvsp[0].pseudo_class;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -