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

📄 parse.c_shipped

📁 linux 内核源代码
💻 C_SHIPPED
📖 第 1 页 / 共 5 页
字号:
  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 + -