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

📄 parse.c

📁 在linux下实行的简单的c语言编译器
💻 C
📖 第 1 页 / 共 3 页
字号:
{			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 + -