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

📄 myparser.c

📁 编译原理的课程设计,输出汇编,很好的 南开大学的同学做的
💻 C
📖 第 1 页 / 共 3 页
字号:
				yyval->child[1] = yyattribute(3 - 3);
//				printf("*************\n");
				yyval->op = LE;
			
#line 657 "myparser.c"
			}
		}
		break;
	case 27:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 255 ".\\myparser.y"

				++total;
				yyval=newExprNode(Exprk,total);
				yyval->child[0] = yyattribute(1 - 3);
				yyval->child[1] = yyattribute(3 - 3);
//				printf("*************\n");
				yyval->op = GE;
			
#line 677 "myparser.c"
			}
		}
		break;
	case 28:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 263 ".\\myparser.y"

				++total;
				yyval=newExprNode(Exprk,total);
				yyval->child[0] = yyattribute(1 - 3);
				yyval->child[1] = yyattribute(3 - 3);
//				printf("*************\n");
				yyval->op = NEQ;
			
#line 697 "myparser.c"
			}
		}
		break;
	case 29:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 271 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 710 "myparser.c"
			}
		}
		break;
	case 30:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[3];
			yyinitdebug(yya, 3);
#endif
			{
#line 276 ".\\myparser.y"
	
                ++total;
				yyval=newExprNode(Exprk,total);
				yyval->child[0] = yyattribute(2 - 2);
				yyval->op=NOT;	
			 
#line 728 "myparser.c"
			}
		}
		break;
	case 31:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 283 ".\\myparser.y"

								++total;
								//printf("%d: Expr             op:   +  \n",total);
								yyval=newExprNode(Exprk,total);
								yyval->child[0] = yyattribute(1 - 3);
								yyval->child[1] = yyattribute(3 - 3);
								yyval->op=PLUS;
								
#line 748 "myparser.c"
			}
		}
		break;
	case 32:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 291 ".\\myparser.y"

								//printf("%d: Expr             op:   -  \n",total);
								++total;
								yyval=newExprNode(Exprk,total);
								yyval->child[0] = yyattribute(1 - 3);
								yyval->child[1] = yyattribute(3 - 3);							
								yyval->op=MINUS;
								
#line 768 "myparser.c"
			}
		}
		break;
	case 33:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 299 ".\\myparser.y"
yyval=yyattribute(1 - 1); 
#line 781 "myparser.c"
			}
		}
		break;
	case 34:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 301 ".\\myparser.y"

								++total;
//								printf("%d: Term             op:   *  \n",total);
								yyval=newExprNode(Exprk,total);
								yyval->child[0] = yyattribute(1 - 3);
								yyval->child[1] = yyattribute(3 - 3);					
								yyval->op=TIMES;
								
#line 801 "myparser.c"
			}
		}
		break;
	case 35:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 310 ".\\myparser.y"

//								printf("%d: Term             op:   /  \n",total);
								++total;
								yyval=newExprNode(Exprk,total);
								yyval->child[0] = yyattribute(1 - 3);
								yyval->child[1] = yyattribute(3 - 3);
								yyval->op=OVER;
								
#line 821 "myparser.c"
			}
		}
		break;
	case 36:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 318 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 834 "myparser.c"
			}
		}
		break;
	case 37:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[4];
			yyinitdebug(yya, 4);
#endif
			{
#line 321 ".\\myparser.y"
yyval=yyattribute(2 - 3);
#line 847 "myparser.c"
			}
		}
		break;
	case 38:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 322 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 860 "myparser.c"
			}
		}
		break;
	case 39:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 323 ".\\myparser.y"
yyval=yyattribute(1 - 1);
#line 873 "myparser.c"
			}
		}
		break;
	case 40:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 325 ".\\myparser.y"
 ++total; //printf("%d: ID Declaration symbol:%s \n",total,yytext);
			yyval =newExprNode(IDk,total);
			//$$->name=yytext;
			strcpy(yyval->name,yytext);
//			insert_st($$->name);
		
#line 891 "myparser.c"
			}
		}
		break;
	case 41:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 339 ".\\myparser.y"
 ++total; //printf("%d: Const Declaration symbol:%d \n",total,atoi(yytext));
			yyval = newExprNode(Constk,total);
			yyval->val=atoi(yytext);
			
#line 907 "myparser.c"
			}
		}
		break;
	case 42:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 347 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Char");
		
#line 921 "myparser.c"
			}
		}
		break;
	case 43:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 349 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Integer");
		
#line 935 "myparser.c"
			}
		}
		break;
	case 44:
		{
#ifdef YYDEBUG
			YYSTYPE YYFAR *yya[2];
			yyinitdebug(yya, 2);
#endif
			{
#line 351 ".\\myparser.y"
++total;//$$ =newIDNode(Typek,total,"Double");
		
#line 949 "myparser.c"
			}
		}
		break;
	default:
		yyassert(0);
		break;
	}
}
#ifdef YYDEBUG
YYCONST yysymbol_t YYNEARFAR YYBASED_CODE YYDCDECL yysymbol[] = {
	{ "$end", 0 },
	{ "error", 256 },
	{ "ID", 257 },
	{ "NUM", 258 },
	{ "EQ", 259 },
	{ "IF", 260 },
	{ "CHAR", 261 },
	{ "DOUBLE", 262 },
	{ "INT", 263 },
	{ "LT", 265 },
	{ "PLUS", 266 },
	{ "MINUS", 267 },
	{ "TIMES", 268 },
	{ "OVER", 269 },
	{ "LPAREN", 270 },
	{ "RPAREN", 271 },
	{ "SEMI", 272 },
	{ "WHILE", 273 },
	{ "LEFTBIG", 274 },
	{ "RIGHTBIG", 275 },
	{ "MAIN", 276 },
	{ "COMMON", 277 },
	{ "FOR", 278 },
	{ "PRINT", 279 },
	{ "EQ_OP", 280 },
	{ "LE", 281 },
	{ "GT", 282 },
	{ "GE", 283 },
	{ "NEQ", 284 },
	{ "INPUT", 285 },
	{ "AND", 286 },
	{ "OR", 287 },
	{ "NOT", 288 },
	{ NULL, 0 }
};

YYCONST char *YYCONST YYNEARFAR YYBASED_CODE YYDCDECL yyrule[] = {
	"$accept: lines",
	"lines: MAIN LPAREN RPAREN compound_statement",
	"type_statement: type_specifier id_list SEMI",
	"id_list: id",
	"id_list: id_list COMMON id",
	"assign_statement: id EQ expr SEMI",
	"selection_statement: IF LPAREN expr RPAREN statement",
	"repeat_statement: WHILE LPAREN expr RPAREN statement",
	"repeat_statement: FOR LPAREN expr RPAREN statement",
	"print_statement: PRINT LPAREN expr RPAREN SEMI",
	"input_statement: INPUT LPAREN id RPAREN SEMI",
	"statement: assign_statement",
	"statement: selection_statement",
	"statement: repeat_statement",
	"statement: type_statement",
	"statement: print_statement",
	"statement: compound_statement",
	"statement: input_statement",
	"statement_list: statement",
	"statement_list: statement_list statement",
	"compound_statement: LEFTBIG RIGHTBIG",
	"compound_statement: LEFTBIG statement_list RIGHTBIG",
	"expr: uexpr AND uexpr",
	"expr: uexpr OR uexpr",
	"expr: uexpr",
	"uexpr: simple_exp LT simple_exp",
	"uexpr: simple_exp EQ_OP simple_exp",
	"uexpr: simple_exp GT simple_exp",
	"uexpr: simple_exp LE simple_exp",
	"uexpr: simple_exp GE simple_exp",
	"uexpr: simple_exp NEQ simple_exp",
	"uexpr: simple_exp",
	"simple_exp: NOT simple_exp",
	"simple_exp: simple_exp PLUS term",
	"simple_exp: simple_exp MINUS term",
	"simple_exp: term",
	"term: term TIMES factor",
	"term: term OVER factor",
	"term: factor",
	"factor: LPAREN expr RPAREN",
	"factor: id",
	"factor: num",
	"id: ID",
	"num: NUM",
	"type_specifier: CHAR",
	"type_specifier: INT",
	"type_specifier: DOUBLE"
};
#endif

YYCONST yyreduction_t YYNEARFAR YYBASED_CODE YYDCDECL yyreduction[] = {
	{ 0, 1, -1 },
	{ 1, 4, 0 },
	{ 2, 3, 1 },
	{ 3, 1, 2 },
	{ 3, 3, 3 },
	{ 4, 4, 4 },
	{ 5, 5, 5 },
	{ 6, 5, 6 },
	{ 6, 5, 7 },
	{ 7, 5, 8 },
	{ 8, 5, 9 },
	{ 9, 1, 10 },
	{ 9, 1, 11 },
	{ 9, 1, 12 },
	{ 9, 1, 13 },
	{ 9, 1, 14 },
	{ 9, 1, 15 },
	{ 9, 1, 16 },
	{ 10, 1, 17 },
	{ 10, 2, 18 },
	{ 11, 2, -1 },
	{ 11, 3, 19 },
	{ 12, 3, 20 },
	{ 12, 3, 21 },
	{ 12, 1, 22 },
	{ 13, 3, 23 },
	{ 13, 3, 24 },
	{ 13, 3, 25 },
	{ 13, 3, 26 },
	{ 13, 3, 27 },
	{ 13, 3, 28 },
	{ 13, 1, 29 },
	{ 14, 2, 30 },
	{ 14, 3, 31 },
	{ 14, 3, 32 },
	{ 14, 1, 33 },
	{ 15, 3, 34 },
	{ 15, 3, 35 },
	{ 15, 1, 36 },
	{ 16, 3, 37 },
	{ 16, 1, 38 },
	{ 16, 1, 39 },
	{ 17, 1, 40 },
	{ 18, 1, 41 },
	{ 19, 1, 42 },
	{ 19, 1, 43 },
	{ 19, 1, 44 }
};

int YYNEAR YYDCDECL yytokenaction_size = 67;
YYCONST yytokenaction_t YYNEARFAR YYBASED_CODE YYDCDECL yytokenaction[] = {
	{ 71, YYAT_SHIFT, 8 },
	{ 71, YYAT_SHIFT, 9 },
	{ 71, YYAT_SHIFT, 10 },
	{ 71, YYAT_SHIFT, 11 },
	{ 69, YYAT_SHIFT, 38 },
	{ 44, YYAT_SHIFT, 60 },
	{ 44, YYAT_SHIFT, 61 },
	{ 44, YYAT_SHIFT, 62 },
	{ 87, YYAT_SHIFT, 61 },
	{ 87, YYAT_SHIFT, 62 },
	{ 33, YYAT_SHIFT, 52 },
	{ 86, YYAT_SHIFT, 61 },
	{ 86, YYAT_SHIFT, 62 },
	{ 71, YYAT_SHIFT, 12 },
	{ 71, YYAT_SHIFT, 5 },
	{ 33, YYAT_SHIFT, 53 },
	{ 69, YYAT_SHIFT, 39 },
	{ 73, YYAT_SHIFT, 93 },
	{ 71, YYAT_SHIFT, 14 },
	{ 71, YYAT_SHIFT, 15 },
	{ 44, YYAT_SHIFT, 63 },
	{ 44, YYAT_SHIFT, 64 },
	{ 44, YYAT_SHIFT, 65 },
	{ 44, YYAT_SHIFT, 66 },
	{ 44, YYAT_SHIFT, 67 },
	{ 71, YYAT_SHIFT, 16 },
	{ 85, YYAT_SHIFT, 61 },
	{ 85, YYAT_SHIFT, 62 },
	{ 84, YYAT_SHIFT, 61 },
	{ 84, YYAT_SHIFT, 62 },
	{ 83, YYAT_SHIFT, 61 },
	{ 83, YYAT_SHIFT, 62 },
	{ 82, YYAT_SHIFT, 68 },
	{ 82, YYAT_SHIFT, 69 },
	{ 81, YYAT_SHIFT, 68 },
	{ 81, YYAT_SHIFT, 69 },
	{ 80, YYAT_SHIFT, 61 },
	{ 80, YYAT_SHIFT, 62 },
	{ 56, YYAT_SHIFT, 61 },
	{ 56, YYAT_SHIFT, 62 },
	{ 45, YYAT_SHIFT, 68 },
	{ 45, YYAT_SHIFT, 69 },
	{ 43, YYAT_SHIFT, 58 },
	{ 43, YYAT_SHIFT, 59 },
	{ 72, YYAT_SHIFT, 92 },
	{ 67, YYAT_SHIFT, 40 },
	{ 55, YYAT_SHIFT, 76 },
	{ 54, YYAT_SHIFT, 75 },
	{ 53, YYAT_SHIFT, 7 },
	{ 51, YYAT_SHIFT, 73 },
	{ 50, YYAT_SHIFT, 72 },
	{ 49, YYAT_SHIFT, 71 },
	{ 48, YYAT_SHIFT, 70 },
	{ 42, YYAT_SHIFT, 57 },
	{ 27, YYAT_SHIFT, 36 },
	{ 20, YYAT_SHIFT, 35 },
	{ 16, YYAT_SHIFT, 32 },
	{ 15, YYAT_SHIFT, 31 },
	{ 14, YYAT_SHIFT, 30 },
	{ 12, YYAT_SHIFT, 29 },
	{ 8, YYAT_SHIFT, 28 },
	{ 5, YYAT_SHIFT, 13 },
	{ 4, YYAT_SHIFT, 5 },
	{ 3, YYAT_SHIFT, 4 },
	{ 2, YYAT_ACCEPT, 0 },
	{ 1, YYAT_SHIFT, 3 },
	{ 0, YYAT_SHIFT, 1 }
};

YYCONST yystateaction_t YYNEARFAR YYBASED_CODE YYDCDECL yystateaction[] = {
	{ -210, 1, YYAT_ERROR, 0 },
	{ -205, 1, YYAT_ERROR, 0 },
	{ 64, 1, YYAT_ERROR, 0 },
	{ -208, 1, YYAT_ERROR, 0 },
	{ -212, 1, YYAT_ERROR, 0 },
	{ -214, 1, YYAT_DEFAULT, 71 },
	{ 0, 0, YYAT_REDUCE, 1 },
	{ 0, 0, YYAT_REDUCE, 42 },
	{ -210, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 44 },
	{ 0, 0, YYAT_REDUCE, 46 },
	{ 0, 0, YYAT_REDUCE, 45 },
	{ -211, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 20 },
	{ -212, 1, YYAT_ERROR, 0 },
	{ -213, 1, YYAT_ERROR, 0 },
	{ -214, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 16 },
	{ 0, 0, YYAT_REDUCE, 14 },
	{ 0, 0, YYAT_DEFAULT, 53 },
	{ -204, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 11 },
	{ 0, 0, YYAT_REDUCE, 12 },
	{ 0, 0, YYAT_REDUCE, 18 },
	{ 0, 0, YYAT_REDUCE, 13 },
	{ 0, 0, YYAT_REDUCE, 15 },
	{ 0, 0, YYAT_REDUCE, 17 },
	{ -221, 1, YYAT_DEFAULT, 71 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 53 },
	{ -262, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 3 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_REDUCE, 21 },
	{ 0, 0, YYAT_REDUCE, 19 },
	{ 0, 0, YYAT_REDUCE, 43 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_REDUCE, 40 },
	{ -218, 1, YYAT_ERROR, 0 },
	{ -244, 1, YYAT_REDUCE, 24 },
	{ -260, 1, YYAT_REDUCE, 31 },
	{ -228, 1, YYAT_REDUCE, 35 },
	{ 0, 0, YYAT_REDUCE, 38 },
	{ 0, 0, YYAT_REDUCE, 41 },
	{ -219, 1, YYAT_ERROR, 0 },
	{ -220, 1, YYAT_ERROR, 0 },
	{ -221, 1, YYAT_ERROR, 0 },
	{ -222, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 2 },
	{ -209, 1, YYAT_ERROR, 0 },
	{ -225, 1, YYAT_ERROR, 0 },
	{ -225, 1, YYAT_ERROR, 0 },
	{ -228, 1, YYAT_REDUCE, 32 },
	{ 0, 0, YYAT_DEFAULT, 71 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 69 },
	{ 0, 0, YYAT_DEFAULT, 69 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ 0, 0, YYAT_DEFAULT, 67 },
	{ -243, 1, YYAT_DEFAULT, 69 },
	{ 0, 0, YYAT_DEFAULT, 69 },
	{ -254, 1, YYAT_DEFAULT, 53 },
	{ 0, 0, YYAT_DEFAULT, 71 },
	{ -260, 1, YYAT_DEFAULT, 53 },
	{ -228, 1, YYAT_ERROR, 0 },
	{ -255, 1, YYAT_ERROR, 0 },
	{ 0, 0, YYAT_REDUCE, 4 },
	{ 0, 0, YYAT_REDUCE, 5 },
	{ 0, 0, YYAT_REDUCE, 39 },
	{ 0, 0, YYAT_REDUCE, 6 },
	{ 0, 0, YYAT_REDUCE, 22 },
	{ 0, 0, YYAT_REDUCE, 23 },
	{ -230, 1, YYAT_REDUCE, 25 },
	{ -234, 1, YYAT_REDUCE, 33 },
	{ -236, 1, YYAT_REDUCE, 34 },
	{ -236, 1, YYAT_REDUCE, 26 },
	{ -238, 1, YYAT_REDUCE, 28 },
	{ -240, 1, YYAT_REDUCE, 27 },
	{ -255, 1, YYAT_REDUCE, 29 },
	{ -258, 1, YYAT_REDUCE, 30 },
	{ 0, 0, YYAT_REDUCE, 36 },
	{ 0, 0, YYAT_REDUCE, 37 },
	{ 0, 0, YYAT_REDUCE, 7 },
	{ 0, 0, YYAT_REDUCE, 8 },
	{ 0, 0, YYAT_REDUCE, 9 },
	{ 0, 0, YYAT_REDUCE, 10 }
};

int YYNEAR YYDCDECL yynontermgoto_size = 46;

YYCONST yynontermgoto_t YYNEARFAR YYBASED_CODE YYDCDECL yynontermgoto[] = {
	{ 71, 18 },
	{ 70, 90 },
	{ 71, 21 },
	{ 71, 22 },
	{ 71, 24 },
	{ 71, 25 },
	{ 71, 26 },
	{ 71, 91 },
	{ 19, 33 },
	{ 71, 17 },
	{ 69, 89 },
	{ 69, 41 },
	{ 69, 47 },
	{ 67, 87 },
	{ 67, 45 },
	{ 71, 20 },
	{ 68, 88 },
	{ 71, 19 },
	{ 62, 82 },
	{ 62, 46 },
	{ 59, 79 },
	{ 59, 44 },
	{ 19, 34 },
	{ 39, 55 },
	{ 39, 43 },
	{ 5, 23 },
	{ 5, 27 },
	{ 66, 86 },
	{ 65, 85 },
	{ 64, 84 },
	{ 63, 83 },
	{ 61, 81 },
	{ 60, 80 },
	{ 58, 78 },
	{ 57, 77 },
	{ 53, 74 },

⌨️ 快捷键说明

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