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

📄 parse_yy.c

📁 大3编译原理课程设计 绝对符合老师要求 报告代码一应俱全 很详细 很靠谱
💻 C
📖 第 1 页 / 共 3 页
字号:
		break;
	case 30:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 201 ".\\parse_yy.y"
 TreeNode * t = yyattribute(1 - 2); 
				  if (t != NULL) 
				  { while (t->sibling != NULL) 
					t = t->sibling; 
					t->sibling = yyattribute(2 - 2); 
					yyval = yyattribute(1 - 2); } 
				  else yyval = yyattribute(2 - 2); 
				
#line 649 "parse_yy.c"
			}
		}
		break;
	case 31:
		{
#line 210 ".\\parse_yy.y"
 yyval = NULL; 
#line 657 "parse_yy.c"
		}
		break;
	case 32:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 212 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 669 "parse_yy.c"
			}
		}
		break;
	case 33:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 213 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 682 "parse_yy.c"
			}
		}
		break;
	case 34:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 214 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 695 "parse_yy.c"
			}
		}
		break;
	case 35:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 215 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 708 "parse_yy.c"
			}
		}
		break;
	case 36:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 216 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 721 "parse_yy.c"
			}
		}
		break;
	case 37:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 219 ".\\parse_yy.y"
 yyval = yyattribute(1 - 2); 
#line 734 "parse_yy.c"
			}
		}
		break;
	case 38:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 221 ".\\parse_yy.y"
 yyval = NULL; 
#line 747 "parse_yy.c"
			}
		}
		break;
	case 39:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[6];
			yyinitdebug(yya, 6);
#endif
			{
#line 224 ".\\parse_yy.y"
 yyval = newStmtNode(SelectionK); 
                  yyval -> child[0] = yyattribute(3 - 5); 
                  yyval -> child[1] = yyattribute(5 - 5); 
                
#line 763 "parse_yy.c"
			}
		}
		break;
	case 40:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[8];
			yyinitdebug(yya, 8);
#endif
			{
#line 229 ".\\parse_yy.y"
 yyval = newStmtNode(SelectionK); 
                  yyval -> child[0] = yyattribute(3 - 7); 
                  yyval -> child[1] = yyattribute(5 - 7); 
				  yyval -> child[2] = yyattribute(7 - 7); 
                
#line 780 "parse_yy.c"
			}
		}
		break;
	case 41:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[6];
			yyinitdebug(yya, 6);
#endif
			{
#line 236 ".\\parse_yy.y"
 yyval = newStmtNode(IterationK); 
                  yyval -> child[0] = yyattribute(3 - 5); 
                  yyval -> child[1] = yyattribute(5 - 5); 
                
#line 796 "parse_yy.c"
			}
		}
		break;
	case 42:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 242 ".\\parse_yy.y"
 yyval = newStmtNode(ReturnK); 
                  yyval -> child[0] = NULL; 
                
#line 811 "parse_yy.c"
			}
		}
		break;
	case 43:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 246 ".\\parse_yy.y"
 yyval = newStmtNode(ReturnK); 
                  yyval -> child[0] = yyattribute(2 - 3); 
                
#line 826 "parse_yy.c"
			}
		}
		break;
	case 44:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 251 ".\\parse_yy.y"
 yyval = newExpNode(AssignK); 
                  yyval -> child[0] = yyattribute(1 - 3); 
                  yyval -> child[1] = yyattribute(3 - 3); 
                
#line 842 "parse_yy.c"
			}
		}
		break;
	case 45:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 256 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 855 "parse_yy.c"
			}
		}
		break;
	case 46:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 259 ".\\parse_yy.y"
 yyval = newExpNode(IdK); 
                  yyval -> attr.name = savedIdName; 
                
#line 870 "parse_yy.c"
			}
		}
		break;
	case 47:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[5];
			yyinitdebug(yya, 5);
#endif
			{
#line 263 ".\\parse_yy.y"
 yyval = newExpNode(IdK); 
				  yyval -> attr.name = savedIdName; 
                  yyval -> child[0] = yyattribute(3 - 4); 
                
#line 886 "parse_yy.c"
			}
		}
		break;
	case 48:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 269 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = LT; 
				  yyval -> type = Boolean; 
				
#line 904 "parse_yy.c"
			}
		}
		break;
	case 49:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 276 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = LTEQ; 
				  yyval -> type = Boolean; 
				
#line 922 "parse_yy.c"
			}
		}
		break;
	case 50:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 283 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = GT; 
				  yyval -> type = Boolean; 
				
#line 940 "parse_yy.c"
			}
		}
		break;
	case 51:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 290 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = GTEQ; 
				  yyval -> type = Boolean; 
				
#line 958 "parse_yy.c"
			}
		}
		break;
	case 52:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 297 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = EQ; 
				  yyval -> type = Boolean; 
				
#line 976 "parse_yy.c"
			}
		}
		break;
	case 53:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 304 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = NOEQ; 
				  yyval -> type = Boolean; 
				
#line 994 "parse_yy.c"
			}
		}
		break;
	case 54:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 311 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = PLUS; 
				
#line 1011 "parse_yy.c"
			}
		}
		break;
	case 55:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 317 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = MINUS; 
				
#line 1028 "parse_yy.c"
			}
		}
		break;
	case 56:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 323 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = TIMES; 
				
#line 1045 "parse_yy.c"
			}
		}
		break;
	case 57:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 329 ".\\parse_yy.y"
 yyval = newExpNode(OpK); 
				  yyval -> child[0] = yyattribute(1 - 3); 
				  yyval -> child[1] = yyattribute(3 - 3); 
				  yyval -> attr.op = OVER; 
				
#line 1062 "parse_yy.c"
			}
		}
		break;
	case 58:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 335 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 1075 "parse_yy.c"
			}
		}
		break;
	case 59:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 339 ".\\parse_yy.y"
 yyval = yyattribute(2 - 3); 
#line 1088 "parse_yy.c"
			}
		}
		break;
	case 60:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 341 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 1101 "parse_yy.c"
			}
		}
		break;
	case 61:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 343 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 1114 "parse_yy.c"
			}
		}
		break;
	case 62:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 345 ".\\parse_yy.y"
 yyval = newExpNode(ConstK); 
			      yyval -> type = Integer; 
			      yyval -> attr.val.i = atoi(tokenString); 
			    
#line 1130 "parse_yy.c"
			}
		}
		break;
	case 63:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[5];
			yyinitdebug(yya, 5);
#endif
			{
#line 351 ".\\parse_yy.y"
 yyval = newExpNode(CallK); 
				  yyval -> attr.name = yyattribute(1 - 4) -> attr.name; 
                  yyval -> child[0] = yyattribute(3 - 4); 
                
#line 1146 "parse_yy.c"
			}
		}
		break;
	case 64:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 357 ".\\parse_yy.y"
 TreeNode * t = yyattribute(1 - 3); 
				  if (t != NULL) 
				  { while (t->sibling != NULL) 
					t = t->sibling; 
					t->sibling = yyattribute(3 - 3); 
					yyval = yyattribute(1 - 3); } 
				  else yyval = yyattribute(3 - 3); 
				
#line 1166 "parse_yy.c"
			}
		}
		break;
	case 65:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 366 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 1179 "parse_yy.c"
			}
		}
		break;
	case 66:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 369 ".\\parse_yy.y"
 yyval = yyattribute(1 - 1); 
#line 1192 "parse_yy.c"
			}
		}
		break;
	case 67:
		{
#line 371 ".\\parse_yy.y"
 yyval = NULL; 
#line 1200 "parse_yy.c"
		}
		break;
	default:
		yyassert(0);
		break;
	}
}
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
	{ "$end", 0 },
	{ "error", 256 },
	{ "IF", 259 },
	{ "ELSE", 260 },
	{ "RETURN", 261 },
	{ "WHILE", 262 },
	{ "INT", 263 },
	{ "VOID", 264 },
	{ "ID", 265 },
	{ "NUM", 266 },
	{ "PLUS", 267 },
	{ "MINUS", 268 },
	{ "TIMES", 269 },
	{ "OVER", 270 },
	{ "LT", 271 },
	{ "LTEQ", 272 },
	{ "GT", 273 },
	{ "GTEQ", 274 },
	{ "EQ", 275 },
	{ "NOEQ", 276 },
	{ "ASSIGN", 277 },
	{ "SEMI", 278 },
	{ "COMMA", 279 },
	{ "LPAREN", 280 },
	{ "RPAREN", 281 },
	{ "LBRA", 282 },
	{ "RBRA", 283 },
	{ "LBRACE", 284 },
	{ "RBRACE", 285 },
	{ NULL, 0 }
};

YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = {
	"$accept: program",
	"program: dec_list",
	"dec_list: dec_list dec",
	"dec_list: dec",
	"dec: var_dec",
	"dec: fun_dec",
	"dec: fun_def",
	"id: ID",
	"fid:",
	"var_dec: type_spec id_list SEMI",
	"id_list: id_list COMMA var",
	"id_list: var",
	"id_list: id_list COMMA id ASSIGN simple_exp",
	"id_list: id ASSIGN simple_exp",
	"type_spec: INT",
	"type_spec: VOID",
	"fun_def: type_spec id fid LPAREN params RPAREN comp_stmt",
	"fun_def: id fid LPAREN params RPAREN comp_stmt",
	"fun_dec: type_spec id fid LPAREN params RPAREN SEMI",

⌨️ 快捷键说明

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