📄 parse.c_shipped
字号:
if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } if (yyn == YYFINAL) YYACCEPT; /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; 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 garbage. 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]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 4:#line 108 "scripts/genksyms/parse.y" { is_typedef = 0; is_extern = 0; current_name = NULL; decl_spec = NULL; ;} break; case 5:#line 110 "scripts/genksyms/parse.y" { free_list(*(yyvsp[(2) - (2)]), NULL); *(yyvsp[(2) - (2)]) = NULL; ;} break; case 6:#line 114 "scripts/genksyms/parse.y" { is_typedef = 1; ;} break; case 7:#line 115 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 8:#line 116 "scripts/genksyms/parse.y" { is_typedef = 1; ;} break; case 9:#line 117 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 14:#line 122 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 15:#line 123 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 16:#line 128 "scripts/genksyms/parse.y" { if (current_name) { struct string_list *decl = (*(yyvsp[(3) - (3)]))->next; (*(yyvsp[(3) - (3)]))->next = NULL; add_symbol(current_name, is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern); current_name = NULL; } (yyval) = (yyvsp[(3) - (3)]); ;} break; case 17:#line 141 "scripts/genksyms/parse.y" { (yyval) = NULL; ;} break; case 19:#line 147 "scripts/genksyms/parse.y" { struct string_list *decl = *(yyvsp[(1) - (1)]); *(yyvsp[(1) - (1)]) = NULL; add_symbol(current_name, is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern); current_name = NULL; (yyval) = (yyvsp[(1) - (1)]); ;} break; case 20:#line 155 "scripts/genksyms/parse.y" { struct string_list *decl = *(yyvsp[(3) - (3)]); *(yyvsp[(3) - (3)]) = NULL; free_list(*(yyvsp[(2) - (3)]), NULL); *(yyvsp[(2) - (3)]) = decl_spec; add_symbol(current_name, is_typedef ? SYM_TYPEDEF : SYM_NORMAL, decl, is_extern); current_name = NULL; (yyval) = (yyvsp[(3) - (3)]); ;} break; case 21:#line 168 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]) ? (yyvsp[(4) - (4)]) : (yyvsp[(3) - (4)]) ? (yyvsp[(3) - (4)]) : (yyvsp[(2) - (4)]) ? (yyvsp[(2) - (4)]) : (yyvsp[(1) - (4)]); ;} break; case 22:#line 173 "scripts/genksyms/parse.y" { decl_spec = NULL; ;} break; case 24:#line 178 "scripts/genksyms/parse.y" { decl_spec = *(yyvsp[(1) - (1)]); ;} break; case 25:#line 179 "scripts/genksyms/parse.y" { decl_spec = *(yyvsp[(2) - (2)]); ;} break; case 26:#line 184 "scripts/genksyms/parse.y" { /* Version 2 checksumming ignores storage class, as that is really irrelevant to the linkage. */ remove_node((yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 31:#line 196 "scripts/genksyms/parse.y" { is_extern = 1; (yyval) = (yyvsp[(1) - (1)]); ;} break; case 32:#line 197 "scripts/genksyms/parse.y" { is_extern = 0; (yyval) = (yyvsp[(1) - (1)]); ;} break; case 37:#line 209 "scripts/genksyms/parse.y" { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_STRUCT; (yyval) = (yyvsp[(2) - (2)]); ;} break; case 38:#line 211 "scripts/genksyms/parse.y" { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_UNION; (yyval) = (yyvsp[(2) - (2)]); ;} break; case 39:#line 213 "scripts/genksyms/parse.y" { remove_node((yyvsp[(1) - (2)])); (*(yyvsp[(2) - (2)]))->tag = SYM_ENUM; (yyval) = (yyvsp[(2) - (2)]); ;} break; case 40:#line 217 "scripts/genksyms/parse.y" { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r; r = copy_node(i); r->tag = SYM_STRUCT; r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL; add_symbol(i->string, SYM_STRUCT, s, is_extern); (yyval) = (yyvsp[(3) - (3)]); ;} break; case 41:#line 224 "scripts/genksyms/parse.y" { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r; r = copy_node(i); r->tag = SYM_UNION; r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL; add_symbol(i->string, SYM_UNION, s, is_extern); (yyval) = (yyvsp[(3) - (3)]); ;} break; case 42:#line 231 "scripts/genksyms/parse.y" { struct string_list *s = *(yyvsp[(3) - (3)]), *i = *(yyvsp[(2) - (3)]), *r; r = copy_node(i); r->tag = SYM_ENUM; r->next = (*(yyvsp[(1) - (3)]))->next; *(yyvsp[(3) - (3)]) = r; (*(yyvsp[(1) - (3)]))->next = NULL; add_symbol(i->string, SYM_ENUM, s, is_extern); (yyval) = (yyvsp[(3) - (3)]); ;} break; case 43:#line 239 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 44:#line 240 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 45:#line 241 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 56:#line 255 "scripts/genksyms/parse.y" { (*(yyvsp[(1) - (1)]))->tag = SYM_TYPEDEF; (yyval) = (yyvsp[(1) - (1)]); ;} break; case 57:#line 260 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;} break; case 58:#line 264 "scripts/genksyms/parse.y" { (yyval) = NULL; ;} break; case 61:#line 270 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 65:#line 276 "scripts/genksyms/parse.y" { /* restrict has no effect in prototypes so ignore it */ remove_node((yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 66:#line 283 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 68:#line 289 "scripts/genksyms/parse.y" { if (current_name != NULL) { error_with_pos("unexpected second declaration name"); YYERROR; } else { current_name = (*(yyvsp[(1) - (1)]))->string; (yyval) = (yyvsp[(1) - (1)]); } ;} break; case 69:#line 298 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 70:#line 300 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 71:#line 302 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 72:#line 304 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 73:#line 306 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 74:#line 312 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 78:#line 320 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 79:#line 322 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 80:#line 324 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 81:#line 326 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 82:#line 328 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 83:#line 332 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]); ;} break; case 85:#line 334 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 86:#line 338 "scripts/genksyms/parse.y" { (yyval) = NULL; ;} break; case 89:#line 345 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(3) - (3)]); ;} break; case 90:#line 350 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;} break; case 91:#line 355 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(2) - (2)]) ? (yyvsp[(2) - (2)]) : (yyvsp[(1) - (2)]); ;} break; case 93:#line 360 "scripts/genksyms/parse.y" { (yyval) = NULL; ;} break; case 94:#line 362 "scripts/genksyms/parse.y" { /* For version 2 checksums, we don't want to remember private parameter names. */ remove_node((yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 95:#line 370 "scripts/genksyms/parse.y" { remove_node((yyvsp[(1) - (1)])); (yyval) = (yyvsp[(1) - (1)]); ;} break; case 96:#line 374 "scripts/genksyms/parse.y" { (yyval) = (yyvsp[(4) - (4)]); ;} break; case 97:#line 376 "script
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -