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

📄 yytab.c

📁 用YACC实现的一个小的编译工具
💻 C
📖 第 1 页 / 共 4 页
字号:
      __yy_memcpy ((char *)yyls, (char *)yyls1,		   size * (unsigned int) sizeof (*yylsp));#endif#endif /* no yyoverflow */      yyssp = yyss + size - 1;      yyvsp = yyvs + size - 1;#ifdef YYLSP_NEEDED      yylsp = yyls + size - 1;#endif#if YYDEBUG != 0      if (yydebug)	fprintf(stderr, "Stack size increased to %d\n", yystacksize);#endif      if (yyssp >= yyss + yystacksize - 1)	YYABORT;    }#if YYDEBUG != 0  if (yydebug)    fprintf(stderr, "Entering state %d\n", yystate);#endif  goto yybackup; yybackup:/* Do appropriate processing given the current state.  *//* Read a lookahead token if we need one and don't already have one.  *//* yyresume: */  /* First try to decide what to do without reference to lookahead token.  */  yyn = yypact[yystate];  if (yyn == YYFLAG)    goto yydefault;  /* Not known => get a lookahead token if don't already have one.  */  /* yychar is either YYEMPTY or YYEOF     or a valid token in external form.  */  if (yychar == YYEMPTY)    {#if YYDEBUG != 0      if (yydebug)	fprintf(stderr, "Reading a token: ");#endif      yychar = YYLEX;    }  /* Convert token to internal form (in yychar1) for indexing tables with */  if (yychar <= 0)		/* This means end of input. */    {      yychar1 = 0;      yychar = YYEOF;		/* Don't call YYLEX any more */#if YYDEBUG != 0      if (yydebug)	fprintf(stderr, "Now at end of input.\n");#endif    }  else    {      yychar1 = YYTRANSLATE(yychar);#if YYDEBUG != 0      if (yydebug)	{	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);	  /* Give the individual parser a way to print the precise meaning	     of a token, for further debugging info.  */#ifdef YYPRINT	  YYPRINT (stderr, yychar, yylval);#endif	  fprintf (stderr, ")\n");	}#endif    }  yyn += yychar1;  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)    goto yydefault;  yyn = yytable[yyn];  /* yyn is what to do for this token type in this state.     Negative => reduce, -yyn is rule number.     Positive => shift, yyn is new state.       New state is final state => don't bother to shift,       just return success.     0, or most negative number => error.  */  if (yyn < 0)    {      if (yyn == YYFLAG)	goto yyerrlab;      yyn = -yyn;      goto yyreduce;    }  else if (yyn == 0)    goto yyerrlab;  if (yyn == YYFINAL)    YYACCEPT;  /* Shift the lookahead token.  */#if YYDEBUG != 0  if (yydebug)    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);#endif  /* Discard the token being shifted unless it is eof.  */  if (yychar != YYEOF)    yychar = YYEMPTY;  *++yyvsp = yylval;#ifdef YYLSP_NEEDED  *++yylsp = yylloc;#endif  /* count tokens shifted since error; after three, turn off error status.  */  if (yyerrstatus) yyerrstatus--;  yystate = yyn;  goto yynewstate;/* Do the default action for the current state.  */yydefault:  yyn = yydefact[yystate];  if (yyn == 0)    goto yyerrlab;/* Do a reduction.  yyn is the number of a rule to reduce with.  */yyreduce:  yylen = yyr2[yyn];  if (yylen > 0)    yyval = yyvsp[1-yylen]; /* implement default value of the action */#if YYDEBUG != 0  if (yydebug)    {      int i;      fprintf (stderr, "Reducing via rule %d (line %d), ",	       yyn, yyrline[yyn]);      /* Print the symbols being reduced, and their result.  */      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)	fprintf (stderr, "%s ", yytname[yyrhs[i]]);      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);    }#endif  switch (yyn) {case 1:#line 42 "gen.y"{yy yyb;yyval.attr[0] = yyvsp[0].attr[0];;    break;}case 2:#line 53 "gen.y"{yy yyb;yy yyv_L;yy yy_3_1;yy yyv_M;yy yy_4_1;yy yy_5_1_2_1;yy yy_5_2_1_1;yy yy_5_2_1_2;yy_3_1 = (yy)(yyvsp[-1].attr[1]);yy_4_1 = (yy)(yyvsp[0].attr[1]);yyv_L = yy_3_1;yyv_M = yy_4_1;{yy yysb = yyb;if (! is_sigmode()) goto yyfl_2_1_5_1;yy_5_1_2_1 = yyv_L;domwalker(yy_5_1_2_1);goto yysl_2_1_5;yyfl_2_1_5_1 : ;yy_5_2_1_1 = yyv_L;yy_5_2_1_2 = yyv_M;cppwalker(yy_5_2_1_1, yy_5_2_1_2);goto yysl_2_1_5;yysl_2_1_5 : ;yyb = yysb;}yyval.attr[0] = yyvsp[-3].attr[0];;    break;}case 3:#line 85 "gen.y"{yy yyb;yy yy_1;yy_1 = ((yy)0);yyglov_NextUniqueNumber = yy_1;yyGetPos(&yyval.attr[0]);;    break;}case 4:#line 95 "gen.y"{yy yyb;yy yy_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_1 = yyb + 0;yy_1[0] = 1;yyglov_FirstWithPos = yy_1;yyGetPos(&yyval.attr[0]);;    break;}case 5:#line 110 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yyv_H;yy yy_1_1;yy yyv_T;yy yy_2_1;yy_1_1 = (yy)(yyvsp[-1].attr[1]);yy_2_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 3; if (yyh > yyhx) yyExtend();yyv_H = yy_1_1;yyv_T = yy_2_1;yy_0_1_1 = yyv_H;yy_0_1_2 = yyv_T;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-1].attr[0];;    break;}case 6:#line 137 "gen.y"{yy yyb;yy yy_0_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_0_1 = yyb + 0;yy_0_1[0] = 2;yyval.attr[1] = ((long)yy_0_1);yyGetPos(&yyval.attr[0]);;    break;}case 7:#line 153 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yyv_H;yy yy_2_1;yy yyv_T;yy yy_3_1;yy_2_1 = (yy)(yyvsp[-1].attr[1]);yy_3_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 3; if (yyh > yyhx) yyExtend();yyv_H = yy_2_1;yyv_T = yy_3_1;yy_0_1_1 = yyv_H;yy_0_1_2 = yyv_T;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-2].attr[0];;    break;}case 8:#line 180 "gen.y"{yy yyb;yy yy_0_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_0_1 = yyb + 0;yy_0_1[0] = 2;yyval.attr[1] = ((long)yy_0_1);yyGetPos(&yyval.attr[0]);;    break;}case 9:#line 194 "gen.y"{yy yyb;StoreEnd();yyval.attr[0] = yyvsp[0].attr[0];;    break;}case 10:#line 205 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yy_0_1_3;yy yy_0_1_4;yy yyv_Start;yy yy_1_1;yy yyv_Pos;yy yy_2;yy yyv_Id;yy yy_3_1;yy yyv_Stop;yy yy_4_1;yy yy_5_1;yy yyv_Str;yy yy_5_2;yy yy_6_1;yy yy_7_1_1;yy yy_7_1_2;yy yy_7_1_2_1;yy_1_1 = (yy)(yyvsp[-2].attr[1]);yy_2 = (yy)(yyvsp[-2].attr[0]);yy_3_1 = (yy)(yyvsp[-1].attr[1]);yy_4_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 5; if (yyh > yyhx) yyExtend();yyv_Start = yy_1_1;yyv_Pos = yy_2;yyv_Id = yy_3_1;yyv_Stop = yy_4_1;yy_5_1 = yyv_Id;id_to_string(yy_5_1, &yy_5_2);yyv_Str = yy_5_2;yy_6_1 = yyv_Str;enterfilename(yy_6_1);{yy yysb = yyb;yyb = yyh;yyh += 2; if (yyh > yyhx) yyExtend();yy_7_1_1 = yyglov_FirstWithPos;if (yy_7_1_1 == (yy) yyu) yyErr(1,181);if (yy_7_1_1[0] != 1) goto yyfl_30_1_7_1;yy_7_1_2_1 = yyv_Pos;yy_7_1_2 = yyb + 0;yy_7_1_2[0] = 2;yy_7_1_2[1] = ((long)yy_7_1_2_1);yyglov_FirstWithPos = yy_7_1_2;goto yysl_30_1_7;yyfl_30_1_7_1 : ;goto yysl_30_1_7;yysl_30_1_7 : ;yyb = yysb;}yy_0_1_1 = yyv_Id;yy_0_1_2 = yyv_Start;yy_0_1_3 = yyv_Stop;yy_0_1_4 = yyv_Pos;yy_0_1 = yyb + 0;yy_0_1[0] = 2;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yy_0_1[3] = ((long)yy_0_1_3);yy_0_1[4] = ((long)yy_0_1_4);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-2].attr[0];;    break;}case 11:#line 277 "gen.y"{yy yyb;yy yy_0_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_0_1 = yyb + 0;yy_0_1[0] = 1;yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[0].attr[0];;    break;}case 12:#line 291 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yyv_B;yy yy_1_1;yy_1_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 2; if (yyh > yyhx) yyExtend();yyv_B = yy_1_1;yy_0_1_1 = yyv_B;yy_0_1 = yyb + 0;yy_0_1[0] = 3;yy_0_1[1] = ((long)yy_0_1_1);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[0].attr[0];;    break;}case 13:#line 316 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_1_1;yy yy_0_1_1_2;yy yy_0_1_1_3;yy yy_0_1_2;yy yy_0_1_3;yy yy_0_1_4;yy yyv_P1;yy yy_1_1;yy yyv_Pos;yy yy_2;yy yyv_Id;yy yy_3_1;yy yy_4_1;yy yyv_Defs;yy yy_5_1;yy yyv_P2;yy yy_6_1;yy_1_1 = (yy)(yyvsp[-4].attr[1]);yy_2 = (yy)(yyvsp[-4].attr[0]);yy_3_1 = (yy)(yyvsp[-3].attr[1]);yy_4_1 = (yy)(yyvsp[-2].attr[1]);yy_5_1 = (yy)(yyvsp[-1].attr[1]);yy_6_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 9; if (yyh > yyhx) yyExtend();yyv_P1 = yy_1_1;yyv_Pos = yy_2;yyv_Id = yy_3_1;yyv_Defs = yy_5_1;yyv_P2 = yy_6_1;yy_0_1_1_1 = yyv_Id;yy_0_1_1_2 = yyv_Defs;yy_0_1_1_3 = yyv_Pos;yy_0_1_1 = yyb + 5;yy_0_1_1[0] = 1;yy_0_1_1[1] = ((long)yy_0_1_1_1);yy_0_1_1[2] = ((long)yy_0_1_1_2);yy_0_1_1[3] = ((long)yy_0_1_1_3);yy_0_1_2 = yyv_P1;yy_0_1_3 = yyv_P2;yy_0_1_4 = yyv_Pos;yy_0_1 = yyb + 0;yy_0_1[0] = 4;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yy_0_1[3] = ((long)yy_0_1_3);yy_0_1[4] = ((long)yy_0_1_4);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-4].attr[0];;    break;}case 14:#line 375 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yyv_H;yy yy_1_1;yy yyv_T;yy yy_2_1;yy_1_1 = (yy)(yyvsp[-1].attr[1]);yy_2_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 3; if (yyh > yyhx) yyExtend();yyv_H = yy_1_1;yyv_T = yy_2_1;yy_0_1_1 = yyv_H;yy_0_1_2 = yyv_T;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-1].attr[0];;    break;}case 15:#line 402 "gen.y"{yy yyb;yy yy_0_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_0_1 = yyb + 0;yy_0_1[0] = 2;yyval.attr[1] = ((long)yy_0_1);yyGetPos(&yyval.attr[0]);;    break;}case 16:#line 419 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yy_0_1_3;yy yyv_Id;yy yy_1_1;yy yyv_Pos;yy yy_3;yy yyv_Args;yy yy_4_1;yy_1_1 = (yy)(yyvsp[-3].attr[1]);yy_3 = (yy)(yyvsp[-2].attr[0]);yy_4_1 = (yy)(yyvsp[-1].attr[1]);yyb = yyh;yyh += 4; if (yyh > yyhx) yyExtend();yyv_Id = yy_1_1;yyv_Pos = yy_3;yyv_Args = yy_4_1;yy_0_1_1 = yyv_Id;yy_0_1_2 = yyv_Args;yy_0_1_3 = yyv_Pos;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yy_0_1[3] = ((long)yy_0_1_3);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-3].attr[0];;    break;}case 17:#line 454 "gen.y"{yy yyb;yy yy_0_1;yy yyv_L;yy yy_1_1;yy_1_1 = (yy)(yyvsp[0].attr[1]);yyv_L = yy_1_1;yy_0_1 = yyv_L;yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[0].attr[0];;    break;}case 18:#line 468 "gen.y"{yy yyb;yy yy_0_1;yyb = yyh;yyh += 1; if (yyh > yyhx) yyExtend();yy_0_1 = yyb + 0;yy_0_1[0] = 2;yyval.attr[1] = ((long)yy_0_1);yyGetPos(&yyval.attr[0]);;    break;}case 19:#line 484 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yyv_H;yy yy_1_1;yy yyv_T;yy yy_3_1;yy_1_1 = (yy)(yyvsp[-2].attr[1]);yy_3_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 3; if (yyh > yyhx) yyExtend();yyv_H = yy_1_1;yyv_T = yy_3_1;yy_0_1_1 = yyv_H;yy_0_1_2 = yyv_T;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[-2].attr[0];;    break;}case 20:#line 512 "gen.y"{yy yyb;yy yy_0_1;yy yy_0_1_1;yy yy_0_1_2;yy yyv_Def;yy yy_1_1;yy_1_1 = (yy)(yyvsp[0].attr[1]);yyb = yyh;yyh += 4; if (yyh > yyhx) yyExtend();yyv_Def = yy_1_1;yy_0_1_1 = yyv_Def;yy_0_1_2 = yyb + 3;yy_0_1_2[0] = 2;yy_0_1 = yyb + 0;yy_0_1[0] = 1;yy_0_1[1] = ((long)yy_0_1_1);yy_0_1[2] = ((long)yy_0_1_2);yyval.attr[1] = ((long)yy_0_1);yyval.attr[0] = yyvsp[0].attr[0];

⌨️ 快捷键说明

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