📄 parse.c
字号:
{ yyval.ptree = newDecNode(CompK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[-1].ptree; }break;case 31:#line 235 "Parse.y"{ TreeNode *t = yyvsp[-1].ptree; if (t!=NULL) { while (t->sibling!=NULL) t=t->sibling; t->sibling = yyvsp[0].ptree; yyval.ptree = yyvsp[-1].ptree; } else yyval.ptree = yyvsp[0].ptree; }break;case 32:#line 247 "Parse.y"{yyval.ptree = NULL;}break;case 33:#line 251 "Parse.y"{ TreeNode *t = yyvsp[-1].ptree; if (t!=NULL) { while (t->sibling!=NULL) t = t->sibling; t->sibling = yyvsp[0].ptree; yyval.ptree = yyvsp[-1].ptree; } else yyval.ptree = yyvsp[0].ptree; }break;case 34:#line 263 "Parse.y"{yyval.ptree = NULL;}break;case 35:#line 266 "Parse.y"{yyval.ptree = yyvsp[0].ptree;}break;case 36:#line 267 "Parse.y"{yyval.ptree = yyvsp[0].ptree;}break;case 37:#line 268 "Parse.y"{yyval.ptree = yyvsp[0].ptree;}break;case 38:#line 269 "Parse.y"{yyval.ptree = yyvsp[0].ptree;}break;case 39:#line 270 "Parse.y"{yyval.ptree = yyvsp[0].ptree;}break;case 40:#line 271 "Parse.y"{yyval.ptree = newStmtNode(ContinueK);}break;case 41:#line 272 "Parse.y"{yyval.ptree = newStmtNode(BreakK);}break;case 42:#line 275 "Parse.y"{yyval.ptree = yyvsp[-1].ptree;}break;case 43:#line 276 "Parse.y"{yyval.ptree = NULL;}break;case 44:#line 280 "Parse.y"{ yyval.ptree = newStmtNode(IfK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; }break;case 45:#line 286 "Parse.y"{ yyval.ptree = newStmtNode(IfK); yyval.ptree->child[0] = yyvsp[-4].ptree; yyval.ptree->child[1] = yyvsp[-2].ptree; yyval.ptree->child[2] = yyvsp[0].ptree; }break;case 46:#line 295 "Parse.y"{ yyval.ptree = newStmtNode(WhileK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; }break;case 47:#line 303 "Parse.y"{ yyval.ptree = newStmtNode(ReturnK); yyval.ptree->child[0] = NULL; }break;case 48:#line 308 "Parse.y"{ yyval.ptree = newStmtNode(ReturnK); yyval.ptree->child[0] = yyvsp[-1].ptree; }break;case 49:#line 315 "Parse.y"{ yyval.ptree = newStmtNode(AssignK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; }break;case 50:#line 321 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 51:#line 327 "Parse.y"{ yyval.ptree = newExpNode(IdK); yyval.ptree->attr.name= savedIdName; }break;case 52:#line 332 "Parse.y"{ yyval.ptree = newExpNode(IdK); yyval.ptree->attr.name = savedIdName; yyval.ptree->child[0] = yyvsp[-1].ptree; }break;case 53:#line 340 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = OR; }break;case 54:#line 347 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = AND; }break;case 55:#line 354 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = LT; yyval.ptree->type = Bool; }break;case 56:#line 362 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = LE; yyval.ptree->type = Bool; }break;case 57:#line 370 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = GT; yyval.ptree->type = Bool; }break;case 58:#line 378 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = GE; yyval.ptree->type = Bool; }break;case 59:#line 386 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = EQ; yyval.ptree->type = Bool; }break;case 60:#line 394 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = NEQ; yyval.ptree->type = Bool; }break;case 61:#line 402 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = PLUS; }break;case 62:#line 409 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = SUB; }break;case 63:#line 416 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = MUT; }break;case 64:#line 423 "Parse.y"{ yyval.ptree = newExpNode(OpK); yyval.ptree->child[0] = yyvsp[-2].ptree; yyval.ptree->child[1] = yyvsp[0].ptree; yyval.ptree->attr.op = DIV; }break;case 65:#line 430 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 66:#line 434 "Parse.y"{ yyval.ptree = yyvsp[-1].ptree; }break;case 67:#line 438 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 68:#line 442 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 69:#line 446 "Parse.y"{ yyval.ptree = newExpNode(NumK); yyval.ptree->type = Int; yyval.ptree->attr.val.i = atoi(tokenString); }break;case 70:#line 452 "Parse.y"{ yyval.ptree = newExpNode(FNumK); yyval.ptree->type = Float; yyval.ptree->attr.val.f = (float)atof(tokenString); }break;case 71:#line 458 "Parse.y"{ yyval.ptree = newExpNode(CharK); yyval.ptree->type = Char; yyval.ptree->attr.val.i = *(tokenString + 1); }break;case 72:#line 464 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; yyval.ptree->attr.op = NOT; }break;case 73:#line 471 "Parse.y"{ yyval.ptree = newStmtNode(CallK); yyval.ptree->attr.name = yyvsp[-3].ptree->attr.name; yyval.ptree->child[0] = yyvsp[-1].ptree; }break;case 74:#line 480 "Parse.y"{ TreeNode *t = yyvsp[-2].ptree; if (t != NULL) { while(t->sibling!=NULL) t = t->sibling; t->sibling = yyvsp[0].ptree; yyval.ptree = yyvsp[-2].ptree; } else yyval.ptree = yyvsp[0].ptree; }break;case 75:#line 493 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 76:#line 499 "Parse.y"{ yyval.ptree = yyvsp[0].ptree; }break;case 77:#line 503 "Parse.y"{ yyval.ptree = NULL; }break;#line 1189 "Parse.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) {#if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, 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("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, 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("%sdebug: after reduction, shifting from state %d \to state %d\n", YYPREFIX, *yyssp, yystate);#endif if (yyssp >= yysslim && yygrowstack()) { 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 + -