📄 bc.c
字号:
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 + -