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

📄 parse.c

📁 大3编译原理课程设计 绝对符合老师要求 报告代码一应俱全 很详细 很靠谱
💻 C
📖 第 1 页 / 共 3 页
字号:
	case 36:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 221 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 720 "parse.c"
			}
		}
		break;
	case 37:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 222 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 733 "parse.c"
			}
		}
		break;
	case 38:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 223 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 746 "parse.c"
			}
		}
		break;
	case 39:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 224 ".\\parse.y"
 yyval.ptree = newStmtNode(ContinueK); 
#line 759 "parse.c"
			}
		}
		break;
	case 40:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 225 ".\\parse.y"
 yyval.ptree = newStmtNode(BreakK); 
#line 772 "parse.c"
			}
		}
		break;
	case 41:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 228 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 2).ptree; 
#line 785 "parse.c"
			}
		}
		break;
	case 42:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 230 ".\\parse.y"
 yyval.ptree = NULL; 
#line 798 "parse.c"
			}
		}
		break;
	case 43:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[6];
			yyinitdebug(yya, 6);
#endif
			{
#line 233 ".\\parse.y"
 yyval.ptree = newStmtNode(IfK); 
yyval.ptree -> child[0] = yyattribute(3 - 5).ptree; 
yyval.ptree -> child[1] = yyattribute(5 - 5).ptree; 

#line 814 "parse.c"
			}
		}
		break;
	case 44:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[8];
			yyinitdebug(yya, 8);
#endif
			{
#line 238 ".\\parse.y"
 yyval.ptree = newStmtNode(IfK); 
yyval.ptree -> child[0] = yyattribute(3 - 7).ptree; 
yyval.ptree -> child[1] = yyattribute(5 - 7).ptree; 
yyval.ptree -> child[2] = yyattribute(7 - 7).ptree; 

#line 831 "parse.c"
			}
		}
		break;
	case 45:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[6];
			yyinitdebug(yya, 6);
#endif
			{
#line 245 ".\\parse.y"
 yyval.ptree = newStmtNode(WhileK); 
yyval.ptree -> child[0] = yyattribute(3 - 5).ptree; 
yyval.ptree -> child[1] = yyattribute(5 - 5).ptree; 

#line 847 "parse.c"
			}
		}
		break;
	case 46:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 251 ".\\parse.y"
 yyval.ptree = newStmtNode(ReturnK); 
yyval.ptree -> child[0] = NULL; 

#line 862 "parse.c"
			}
		}
		break;
	case 47:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 255 ".\\parse.y"
 yyval.ptree = newStmtNode(ReturnK); 
yyval.ptree -> child[0] = yyattribute(2 - 3).ptree; 

#line 877 "parse.c"
			}
		}
		break;
	case 48:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 260 ".\\parse.y"
 yyval.ptree = newStmtNode(AssignK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 

#line 893 "parse.c"
			}
		}
		break;
	case 49:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 265 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 906 "parse.c"
			}
		}
		break;
	case 50:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 268 ".\\parse.y"
 yyval.ptree = newExpNode(IdK); 
yyval.ptree -> attr.name = savedIdName; 

#line 921 "parse.c"
			}
		}
		break;
	case 51:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[5];
			yyinitdebug(yya, 5);
#endif
			{
#line 272 ".\\parse.y"
 yyval.ptree = newExpNode(IdK); 
yyval.ptree -> attr.name = savedIdName; 
yyval.ptree -> child[0] = yyattribute(3 - 4).ptree; 

#line 937 "parse.c"
			}
		}
		break;
	case 52:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 278 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = OR; 

#line 954 "parse.c"
			}
		}
		break;
	case 53:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 284 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = AND; 

#line 971 "parse.c"
			}
		}
		break;
	case 54:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 290 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = LT; 
yyval.ptree -> type = Boolean; 

#line 989 "parse.c"
			}
		}
		break;
	case 55:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 297 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = LE; 
yyval.ptree -> type = Boolean; 

#line 1007 "parse.c"
			}
		}
		break;
	case 56:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 304 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = GT; 
yyval.ptree -> type = Boolean; 

#line 1025 "parse.c"
			}
		}
		break;
	case 57:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 311 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = GE; 
yyval.ptree -> type = Boolean; 

#line 1043 "parse.c"
			}
		}
		break;
	case 58:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 318 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = EQ; 
yyval.ptree -> type = Boolean; 

#line 1061 "parse.c"
			}
		}
		break;
	case 59:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 325 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = NEQ; 
yyval.ptree -> type = Boolean; 

#line 1079 "parse.c"
			}
		}
		break;
	case 60:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 332 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = PLUS; 

#line 1096 "parse.c"
			}
		}
		break;
	case 61:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 338 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = SUB; 

#line 1113 "parse.c"
			}
		}
		break;
	case 62:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 344 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = MUT; 

#line 1130 "parse.c"
			}
		}
		break;
	case 63:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 350 ".\\parse.y"
 yyval.ptree = newExpNode(OpK); 
yyval.ptree -> child[0] = yyattribute(1 - 3).ptree; 
yyval.ptree -> child[1] = yyattribute(3 - 3).ptree; 
yyval.ptree -> attr.op = DIV; 

#line 1147 "parse.c"
			}
		}
		break;
	case 64:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 356 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 1160 "parse.c"
			}
		}
		break;
	case 65:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 360 ".\\parse.y"
 yyval.ptree = yyattribute(2 - 3).ptree; 
#line 1173 "parse.c"
			}
		}
		break;
	case 66:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 362 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 1186 "parse.c"
			}
		}
		break;
	case 67:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 364 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 1199 "parse.c"
			}
		}
		break;
	case 68:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 366 ".\\parse.y"
 yyval.ptree = newExpNode(NumK); 
yyval.ptree -> type = Integer; 
yyval.ptree -> attr.val.i = atoi(tokenString); 

#line 1215 "parse.c"
			}
		}
		break;
	case 69:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 371 ".\\parse.y"
 yyval.ptree = newExpNode(FnumK); 
yyval.ptree -> type = Float; 
yyval.ptree -> attr.val.f = atof(tokenString); 

#line 1231 "parse.c"
			}
		}
		break;
	case 70:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 376 ".\\parse.y"
 yyval.ptree = newExpNode(CharK); 
yyval.ptree -> type = Char; 
yyval.ptree -> attr.val.i = *(tokenString + 1); 

#line 1247 "parse.c"
			}
		}
		break;
	case 71:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 381 ".\\parse.y"
 yyval.ptree = yyattribute(2 - 2).ptree; 
yyval.ptree -> attr.op = NOT; 

#line 1262 "parse.c"
			}
		}
		break;
	case 72:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[5];
			yyinitdebug(yya, 5);
#endif
			{
#line 386 ".\\parse.y"
 yyval.ptree = newStmtNode(CallK); 
yyval.ptree -> attr.name = yyattribute(1 - 4).ptree -> attr.name; 
yyval.ptree -> child[0] = yyattribute(3 - 4).ptree; 

#line 1278 "parse.c"
			}
		}
		break;
	case 73:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 392 ".\\parse.y"
 TreeNode * t = yyattribute(1 - 3).ptree; 
if (t != NULL) 
{ while (t->sibling != NULL) 
t = t->sibling; 
t->sibling = yyattribute(3 - 3).ptree; 
yyval.ptree = yyattribute(1 - 3).ptree; } 
else yyval.ptree = yyattribute(3 - 3).ptree; 

#line 1298 "parse.c"
			}
		}
		break;
	case 74:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 401 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 1311 "parse.c"
			}
		}
		break;
	case 75:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 404 ".\\parse.y"
 yyval.ptree = yyattribute(1 - 1).ptree; 
#line 1324 "parse.c"
			}
		}
		break;
	case 76:
		{
#line 406 ".\\parse.y"
 yyval.ptree = NULL; 
#line 1332 "parse.c"
		}
		break;
	default:
		yyassert(0);
		break;
	}
}
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
	{ "$end", 0 },
	{ "error", 256 },
	{ "INT", 259 },
	{ "CHAR", 260 },
	{ "FLOAT", 261 },
	{ "IF", 262 },
	{ "ELSE", 263 },
	{ "WHILE", 264 },
	{ "VOID", 265 },
	{ "RETURN", 266 },
	{ "BREAK", 267 },
	{ "CONTINUE", 268 },
	{ "ID", 269 },
	{ "NUM", 270 },
	{ "FNUM", 271 },
	{ "SCHAR", 272 },
	{ "PLUS", 273 },
	{ "SUB", 274 },
	{ "MUT", 275 },
	{ "DIV", 276 },
	{ "LT", 277 },
	{ "LE", 278 },
	{ "GT", 279 },
	{ "GE", 280 },
	{ "EQ", 281 },
	{ "NEQ", 282 },
	{ "AND", 283 },
	{ "OR", 284 },
	{ "NOT", 285 },
	{ "ASSIGN", 286 },
	{ "SEMI", 287 },
	{ "COMMA", 288 },
	{ "LP", 289 },
	{ "RP", 290 },
	{ "LSP", 291 },
	{ "RSP", 292 },
	{ "LFP", 293 },
	{ "RFP", 294 },
	{ 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: FLOAT",
	"type_spec: CHAR",
	"type_spec: VOID",
	"fun_def: type_spec id fid LP params RP comp_stmt",
	"fun_def: id fid LP params RP comp_stmt",
	"fun_dec: type_spec id fid LP params RP SEMI",
	"fun_dec: id fid LP params RP SEMI",
	"params: param_list",
	"params:",
	"param_list: param_list COMMA param",
	"param_list: param",
	"param: type_spec",
	"param: type_spec id",
	"param: type_spec id LSP RSP",
	"param: type_spec id LSP simple_exp RSP",
	"comp_stmt: LFP local_dec stmt_list RFP",
	"local_dec: local_dec var_dec",
	"local_dec:",
	"stmt_list: stmt_list stmt",
	"stmt_list:",
	"stmt: exp_stmt",

⌨️ 快捷键说明

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