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

📄 bc.c

📁 操作系统源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
			      sprintf (genstr, "J%d:N%1d:", yyvsp[0].i_value, if_label); 			      generate (genstr);			      if_label = yyvsp[0].i_value;			    }break;case 48:#line 300 "bc.y"{			      /* Check auto list against parameter list? */			      check_params (yyvsp[-4].a_value,yyvsp[0].a_value);			      sprintf (genstr, "F%d,%s.%s[", lookup(yyvsp[-6].s_value,FUNCT), 				       arg_str (yyvsp[-4].a_value,TRUE), arg_str (yyvsp[0].a_value,TRUE));			      generate (genstr);			      free_args (yyvsp[-4].a_value);			      free_args (yyvsp[0].a_value);			      yyvsp[-7].i_value = next_label;			      next_label = 0;			    }break;case 49:#line 312 "bc.y"{			      generate ("0R]");			      next_label = yyvsp[-11].i_value;			    }break;case 50:#line 318 "bc.y"{ yyval.a_value = NULL; }break;case 52:#line 322 "bc.y"{ yyval.a_value = NULL; }break;case 53:#line 324 "bc.y"{ yyval.a_value = yyvsp[-1].a_value; }break;case 54:#line 326 "bc.y"{ yyval.a_value = yyvsp[-1].a_value; }break;case 55:#line 329 "bc.y"{ yyval.a_value = nextarg (NULL, lookup (yyvsp[0].s_value,SIMPLE)); }break;case 56:#line 331 "bc.y"{ yyval.a_value = nextarg (NULL, lookup (yyvsp[-2].s_value,ARRAY)); }break;case 57:#line 333 "bc.y"{ yyval.a_value = nextarg (yyvsp[-2].a_value, lookup (yyvsp[0].s_value,SIMPLE)); }break;case 58:#line 335 "bc.y"{ yyval.a_value = nextarg (yyvsp[-4].a_value, lookup (yyvsp[-2].s_value,ARRAY)); }break;case 59:#line 338 "bc.y"{ yyval.a_value = NULL; }break;case 61:#line 342 "bc.y"{			      if (yyvsp[0].i_value > 1) warn ("comparison in argument");			      yyval.a_value = nextarg (NULL,0);			    }break;case 62:#line 347 "bc.y"{			      sprintf (genstr, "K%d:", -lookup (yyvsp[-2].s_value,ARRAY));			      generate (genstr);			      yyval.a_value = nextarg (NULL,1);			    }break;case 63:#line 353 "bc.y"{			      if (yyvsp[0].i_value > 1) warn ("comparison in argument");			      yyval.a_value = nextarg (yyvsp[-2].a_value,0);			    }break;case 64:#line 358 "bc.y"{			      sprintf (genstr, "K%d:", -lookup (yyvsp[-2].s_value,ARRAY));			      generate (genstr);			      yyval.a_value = nextarg (yyvsp[-4].a_value,1);			    }break;case 65:#line 365 "bc.y"{			      yyval.i_value = -1;			      warn ("Missing expression in for statement");			    }break;case 67:#line 372 "bc.y"{			      yyval.i_value = 0;			      generate ("0");			    }break;case 68:#line 377 "bc.y"{			      if (yyvsp[0].i_value > 1)				warn ("comparison in return expresion");			    }break;case 69:#line 383 "bc.y"{			      if (yyvsp[0].c_value != '=')				{				  if (yyvsp[-1].i_value < 0)				    sprintf (genstr, "DL%d:", -yyvsp[-1].i_value);				  else				    sprintf (genstr, "l%d:", yyvsp[-1].i_value);				  generate (genstr);				}			    }break;case 70:#line 394 "bc.y"{			      if (yyvsp[0].i_value > 1) warn("comparison in assignment");			      if (yyvsp[-2].c_value != '=')				{				  sprintf (genstr, "%c", yyvsp[-2].c_value);				  generate (genstr);				}			      if (yyvsp[-3].i_value < 0)				sprintf (genstr, "S%d:", -yyvsp[-3].i_value);			      else				sprintf (genstr, "s%d:", yyvsp[-3].i_value);			      generate (genstr);			      yyval.i_value = 0;			    }break;case 71:#line 410 "bc.y"{			      warn("&& operator");			      yyvsp[0].i_value = next_label++;			      sprintf (genstr, "DZ%d:p", yyvsp[0].i_value);			      generate (genstr);			    }break;case 72:#line 417 "bc.y"{			      sprintf (genstr, "DZ%d:p1N%d:", yyvsp[-2].i_value, yyvsp[-2].i_value);			      generate (genstr);			      yyval.i_value = yyvsp[-3].i_value | yyvsp[0].i_value;			    }break;case 73:#line 423 "bc.y"{			      warn("|| operator");			      yyvsp[0].i_value = next_label++;			      sprintf (genstr, "B%d:", yyvsp[0].i_value);			      generate (genstr);			    }break;case 74:#line 430 "bc.y"{			      int tmplab;			      tmplab = next_label++;			      sprintf (genstr, "B%d:0J%d:N%d:1N%d:",				       yyvsp[-2].i_value, tmplab, yyvsp[-2].i_value, tmplab);			      generate (genstr);			      yyval.i_value = yyvsp[-3].i_value | yyvsp[0].i_value;			    }break;case 75:#line 439 "bc.y"{			      yyval.i_value = yyvsp[0].i_value;			      warn("! operator");			      generate ("!");			    }break;case 76:#line 445 "bc.y"{			      yyval.i_value = 3;			      switch (*(yyvsp[-1].s_value))				{				case '=':				  generate ("=");				  break;				case '!':				  generate ("#");				  break;				case '<':				  if (yyvsp[-1].s_value[1] == '=')				    generate ("{");				  else				    generate ("<");				  break;				case '>':				  if (yyvsp[-1].s_value[1] == '=')				    generate ("}");				  else				    generate (">");				  break;				}			    }break;case 77:#line 473 "bc.y"{			      generate ("+");			      yyval.i_value = yyvsp[-2].i_value | yyvsp[0].i_value;			    }break;case 78:#line 478 "bc.y"{			      generate ("-");			      yyval.i_value = yyvsp[-2].i_value | yyvsp[0].i_value;			    }break;case 79:#line 483 "bc.y"{			      genstr[0] = yyvsp[-1].c_value;			      genstr[1] = 0;			      generate (genstr);			      yyval.i_value = yyvsp[-2].i_value | yyvsp[0].i_value;			    }break;case 80:#line 490 "bc.y"{			      generate ("^");			      yyval.i_value = yyvsp[-2].i_value | yyvsp[0].i_value;			    }break;case 81:#line 495 "bc.y"{			      generate ("n");			      yyval.i_value = yyvsp[0].i_value;			    }break;case 82:#line 500 "bc.y"{			      yyval.i_value = 1;			      if (yyvsp[0].i_value < 0)				sprintf (genstr, "L%d:", -yyvsp[0].i_value);			      else				sprintf (genstr, "l%d:", yyvsp[0].i_value);			      generate (genstr);			    }break;case 83:#line 509 "bc.y"{			      int len = strlen(yyvsp[0].s_value);			      yyval.i_value = 1;			      if (len == 1 && *yyvsp[0].s_value == '0')				generate ("0");			      else if (len == 1 && *yyvsp[0].s_value == '1')				generate ("1");			      else				{				  generate ("K");				  generate (yyvsp[0].s_value);				  generate (":");				}			      free (yyvsp[0].s_value);			    }break;case 84:#line 525 "bc.y"{ yyval.i_value = yyvsp[-1].i_value | 1; }break;case 85:#line 527 "bc.y"{			      yyval.i_value = 1;			      if (yyvsp[-1].a_value != NULL)				{ 				  sprintf (genstr, "C%d,%s:",					   lookup (yyvsp[-3].s_value,FUNCT),					   arg_str (yyvsp[-1].a_value,FALSE));				  free_args (yyvsp[-1].a_value);				}			      else				{				  sprintf (genstr, "C%d:", lookup (yyvsp[-3].s_value,FUNCT));				}			      generate (genstr);			    }break;case 86:#line 543 "bc.y"{			      yyval.i_value = 1;			      if (yyvsp[0].i_value < 0)				{				  if (yyvsp[-1].c_value == '+')				    sprintf (genstr, "DA%d:L%d:", -yyvsp[0].i_value, -yyvsp[0].i_value);				  else				    sprintf (genstr, "DM%d:L%d:", -yyvsp[0].i_value, -yyvsp[0].i_value);				}			      else				{				  if (yyvsp[-1].c_value == '+')				    sprintf (genstr, "i%d:l%d:", yyvsp[0].i_value, yyvsp[0].i_value);				  else				    sprintf (genstr, "d%d:l%d:", yyvsp[0].i_value, yyvsp[0].i_value);				}			      generate (genstr);			    }break;case 87:#line 562 "bc.y"{			      yyval.i_value = 1;			      if (yyvsp[-1].i_value < 0)				{				  sprintf (genstr, "DL%d:x", -yyvsp[-1].i_value);				  generate (genstr); 				  if (yyvsp[0].c_value == '+')				    sprintf (genstr, "A%d:", -yyvsp[-1].i_value);				  else				      sprintf (genstr, "M%d:", -yyvsp[-1].i_value);				}			      else				{				  sprintf (genstr, "l%d:", yyvsp[-1].i_value);				  generate (genstr);				  if (yyvsp[0].c_value == '+')				    sprintf (genstr, "i%d:", yyvsp[-1].i_value);				  else				    sprintf (genstr, "d%d:", yyvsp[-1].i_value);				}			      generate (genstr);			    }break;case 88:#line 585 "bc.y"{ generate ("cL"); yyval.i_value = 1;}break;case 89:#line 587 "bc.y"{ generate ("cR"); yyval.i_value = 1;}break;case 90:#line 589 "bc.y"{ generate ("cS"); yyval.i_value = 1;}break;case 91:#line 591 "bc.y"{			      warn ("read function");			      generate ("cI"); yyval.i_value = 1;			    }break;case 92:#line 597 "bc.y"{ yyval.i_value = lookup(yyvsp[0].s_value,SIMPLE); }break;case 93:#line 599 "bc.y"{			      if (yyvsp[-1].i_value > 1) warn("comparison in subscript");			      yyval.i_value = lookup(yyvsp[-3].s_value,ARRAY);			    }break;case 94:#line 604 "bc.y"{ yyval.i_value = 0; }break;case 95:#line 606 "bc.y"{ yyval.i_value = 1; }break;case 96:#line 608 "bc.y"{ yyval.i_value = 2; }break;case 97:#line 610 "bc.y"{ yyval.i_value = 3; }break;#line 1314 "y.tab.c"    }    yyssp -= yym;    yystate = *yyssp;    yyvsp -= yym;    yym = yylhs[yyn];    if (yystate == 0 && yym == 0)    {#if YYDEBUG        if (yydebug)            printf("yydebug: after reduction, shifting from state 0 to\ state %d\n", YYFINAL);#endif        yystate = YYFINAL;        *++yyssp = YYFINAL;        *++yyvsp = yyval;        if (yychar < 0)        {            if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG            if (yydebug)            {                yys = 0;                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];                if (!yys) yys = "illegal-symbol";                printf("yydebug: state %d, reading %d (%s)\n",                        YYFINAL, yychar, yys);            }#endif        }        if (yychar == 0) goto yyaccept;        goto yyloop;    }    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)        yystate = yytable[yyn];    else        yystate = yydgoto[yym];#if YYDEBUG    if (yydebug)        printf("yydebug: after reduction, shifting from state %d \to state %d\n", *yyssp, yystate);#endif    if (yyssp >= yyss + yystacksize - 1)    {        goto yyoverflow;    }    *++yyssp = yystate;    *++yyvsp = yyval;    goto yyloop;yyoverflow:    yyerror("yacc stack overflow");yyabort:    return (1);yyaccept:    return (0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -