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

📄 checker.tab.c.bak

📁 一个用C++实现的C的Compiler。 代码风格良好。 原作者自己写了这个编译器
💻 BAK
📖 第 1 页 / 共 5 页
字号:
    {	yyval.int_list = yyvsp[-2].int_list; yyval.int_list.push_back(yyvsp[0].intval);							;}
    break;

  case 12:
#line 116 "checker.y"
    {	yyval = yyvsp[-1];											;}
    break;

  case 13:
#line 117 "checker.y"
    {	yyval.intval = yyvsp[-3].intval;
																	yyval.int_list = yyvsp[-1].int_list;
																	yyval.int_list.push_front(*yyvsp[-3].int_list.begin());		;}
    break;

  case 14:
#line 120 "checker.y"
    {	CheckAddConstVariable(SymbolListTypeADDArrayList(yyvsp[-4].intval, yyvsp[-4].int_list), yyvsp[-3].intval, yyvsp[-1].Ventry);
																														;}
    break;

  case 15:
#line 124 "checker.y"
    {	yyval.Ventry = yyvsp[-1].Ventry;											;}
    break;

  case 16:
#line 127 "checker.y"
    {	yyval.intval = SymbolListTypeADDArrayList(yyvsp[-1].intval, yyvsp[-1].int_list);
																	yyval.int_list.clear(); yyval.int_list.push_back(yyvsp[0].intval);		;}
    break;

  case 17:
#line 131 "checker.y"
    {	yyval.Ventry_list.clear(); 
																	TSymbolListVariableEntry Ventry;
																	Ventry.var_type = SymbolListTypeADDArrayList(yyvsp[0].intval, yyvsp[0].int_list);
																	yyval.Ventry_list.push_back(Ventry);								;}
    break;

  case 18:
#line 135 "checker.y"
    {	yyval.Ventry_list = yyvsp[-2].Ventry_list;
																	TSymbolListVariableEntry Ventry;
																	Ventry.var_type = SymbolListTypeADDArrayList(yyvsp[0].intval, yyvsp[0].int_list);
																	yyval.Ventry_list.push_back(Ventry);								;}
    break;

  case 19:
#line 141 "checker.y"
    {	yyval.intval = yyvsp[0].intval; yyval.int_list.clear();				;}
    break;

  case 20:
#line 142 "checker.y"
    {	yyval.intval = SymbolListTypeADDArrayList(yyvsp[-1].intval, yyvsp[-1].int_list);	
																	yyval.intval = SymbolListTypeADDStar(yyval.intval);
																	yyval.int_list.clear();								;}
    break;

  case 21:
#line 145 "checker.y"
    {	yyval.intval = yyvsp[-1].intval; yyval.int_list = yyvsp[-1].int_list;
																	yyval.int_list.push_back(CheckArraysubToConst(yyvsp[0].Ventry));	;}
    break;

  case 22:
#line 147 "checker.y"
    {	yyval.intval = SymbolListMakeFunctionType(SymbolListTypeADDArrayList(yyvsp[-5].intval, yyvsp[-5].int_list),
																						yyvsp[-1].Ventry_list);
																	yyval.int_list.clear();								;}
    break;

  case 23:
#line 152 "checker.y"
    {	yyval.intval = var_type_int;									;}
    break;

  case 24:
#line 153 "checker.y"
    {	yyval.intval = var_type_char;									;}
    break;

  case 25:
#line 154 "checker.y"
    {	yyval.intval = var_type_void;									;}
    break;

  case 26:
#line 155 "checker.y"
    {	if (SymbolListType[yyvsp[0].intval].total_size == type_undefined )
																	{
																		errormsg(4, PROGRAM_LineNumber, IDHash_int2ID(yyvsp[0].intval));
																		yyval.intval = var_type_notfound;
																	}
																	else
																	{
																		yyval.intval = yyvsp[0].intval;
																	}
																														;}
    break;

  case 27:
#line 167 "checker.y"
    {	TSymbolListFunctionEntry Fentry;
																	Fentry.defined = 0; 
																	Fentry.id = yyvsp[-4].intval; Fentry.arg_list = yyvsp[-2].Ventry_list; 
																	Fentry.func_type = SymbolListMakeFunctionType(SymbolListTypeADDArrayList(yyvsp[-5].intval, yyvsp[-5].int_list), yyvsp[-2].Ventry_list);
																	Fentry.defined_line = PROGRAM_LineNumber; Fentry.valid = 1;
																	yyval.Fentry = Fentry;										;}
    break;

  case 28:
#line 175 "checker.y"
    {	yyval.Ventry_list = yyvsp[0].Ventry_list;											;}
    break;

  case 29:
#line 176 "checker.y"
    {	yyval.Ventry_list.clear();											;}
    break;

  case 30:
#line 179 "checker.y"
    {	yyval.Ventry_list.clear(); yyval.Ventry_list.push_back(yyvsp[0].Ventry);						;}
    break;

  case 31:
#line 180 "checker.y"
    {	yyval.Ventry_list = yyvsp[-2].Ventry_list; yyval.Ventry_list.push_back(yyvsp[0].Ventry);							;}
    break;

  case 32:
#line 183 "checker.y"
    {	yyval.Ventry.var_type = yyvsp[0].intval; yyval.Ventry.defined_line = PROGRAM_LineNumber;
																	yyval.Ventry.id = *yyvsp[0].int_list.begin(); 
																	yyval.Ventry.const_sign = 0; yyval.Ventry.lvalue = 1;					;}
    break;

  case 33:
#line 188 "checker.y"
    {	TSymbolListFunctionEntry Fentry;
																	Fentry.id = yyvsp[-3].intval; Fentry.arg_list = yyvsp[-1].Ventry_list; 
																	Fentry.func_type = SymbolListMakeFunctionType(SymbolListTypeADDArrayList(yyvsp[-4].intval, yyvsp[-4].int_list), yyvsp[-1].Ventry_list);
																	Fentry.defined_line = PROGRAM_LineNumber; Fentry.valid = 1;
																	CheckMakeNewFuncDecl(Fentry);						
																	yyval.Fentry = Fentry;

																	PROGRAM_func_ret = SymbolListTypeADDArrayList(yyvsp[-4].intval, yyvsp[-4].int_list);
																	SymbolListIncLevel();
																	for (list <TSymbolListVariableEntry> :: iterator p = yyvsp[-1].Ventry_list.begin(); p != yyvsp[-1].Ventry_list.end(); p ++)
																	{
																		CheckMakeNewVarDecl(*p);
																	}
																	SymbolListNowLevel --;								;}
    break;

  case 34:
#line 202 "checker.y"
    {	yyval.Fentry = yyvsp[-1].Fentry;										;}
    break;

  case 35:
#line 205 "checker.y"
    {	yyval.intval = PROGRAM_LineNumber;						;}
    break;

  case 36:
#line 206 "checker.y"
    {	CheckMakeNewStructDef(yyvsp[-3].intval, yyvsp[-1].Tentry, yyvsp[-2].intval);			;}
    break;

  case 37:
#line 209 "checker.y"
    {	yyval.Tentry = yyvsp[-1].Tentry;											;}
    break;

  case 38:
#line 210 "checker.y"
    {	SymbolListMakeNewStruct(yyval.Tentry);						;}
    break;

  case 39:
#line 213 "checker.y"
    {	SymbolListMakeNewStruct(yyval.Tentry);
																	AddVars2Field(yyval.Tentry, yyvsp[0].intval, yyvsp[0].int_list);			;}
    break;

  case 40:
#line 215 "checker.y"
    {	yyval.Tentry = yyvsp[-1].Tentry;
																	AddVars2Field(yyval.Tentry, yyvsp[0].intval, yyvsp[0].int_list);			;}
    break;

  case 41:
#line 220 "checker.y"
    {	SymbolListIncLevel();								;}
    break;

  case 42:
#line 221 "checker.y"
    {	SymbolListDecLevel();								;}
    break;

  case 43:
#line 224 "checker.y"
    {	;}
    break;

  case 44:
#line 225 "checker.y"
    {	;}
    break;

  case 45:
#line 228 "checker.y"
    {	;}
    break;

  case 46:
#line 229 "checker.y"
    {	;}
    break;

  case 47:
#line 232 "checker.y"
    {	;}
    break;

  case 48:
#line 233 "checker.y"
    {	;}
    break;

  case 49:
#line 236 "checker.y"
    {	;}
    break;

  case 50:
#line 237 "checker.y"
    {	;}
    break;

  case 51:
#line 240 "checker.y"
    {	;}
    break;

  case 52:
#line 241 "checker.y"
    {	CheckASM(0, yyvsp[-2].strval);									;}
    break;

  case 53:
#line 242 "checker.y"
    {	CheckASM(1, yyvsp[-4].strval, yyvsp[-2].strval);								;}
    break;

  case 54:
#line 244 "checker.y"
    {	CheckASM(2, yyvsp[-6].strval, yyvsp[-4].strval, yyvsp[-2].strval);							;}
    break;

  case 55:
#line 246 "checker.y"
    {	CheckASM(3, yyvsp[-8].strval, yyvsp[-6].strval, yyvsp[-4].strval, yyvsp[-2].strval);						;}
    break;

  case 56:
#line 248 "checker.y"
    {	CheckRegOperation(REG_OP_READ, yyvsp[-4].strval, yyvsp[-2].intval);				;}
    break;

  case 57:
#line 250 "checker.y"
    {	CheckRegOperation(REG_OP_WRITE, yyvsp[-4].strval, yyvsp[-2].intval);			;}
    break;

  case 58:
#line 253 "checker.y"
    {	;}
    break;

  case 59:
#line 254 "checker.y"
    {	CheckMakeNewVarDecls(yyvsp[0].intval, yyvsp[0].int_list);		;}
    break;

  case 60:
#line 255 "checker.y"
    {	;}
    break;

  case 61:
#line 256 "checker.y"
    {	;}
    break;

  case 62:
#line 257 "checker.y"
    {	;}
    break;

  case 63:
#line 258 "checker.y"
    {	;}
    break;

  case 64:
#line 259 "checker.y"
    {	;}
    break;

  case 65:
#line 260 "checker.y"
    {	;}
    break;

  case 66:
#line 261 "checker.y"
    {	;}
    break;

  case 67:
#line 262 "checker.y"
    {	;}
    break;

  case 68:
#line 265 "checker.y"
    {	;}
    break;

  case 69:
#line 266 "checker.y"
    {	;}
    break;

  case 70:
#line 269 "checker.y"
    {	CheckCall(yyvsp[-3].Ventry, yyvsp[-1].Ventry_list, yyval.Ventry);								;}
    break;

  case 71:
#line 272 "checker.y"
    {	yyval.Ventry_list = yyvsp[0].Ventry_list;											;}
    break;

  case 72:
#line 273 "checker.y"
    {	yyval.Ventry_list.clear();											;}
    break;

  case 73:
#line 276 "checker.y"
    {	CheckCondExpr(yyvsp[0].Ventry);									;}
    break;

  case 74:
#line 277 "checker.y"
    {	InLoopCount ++;										;}
    break;

  case 75:
#line 278 "checker.y"
    {	InLoopCount --;										;}
    break;

  case 76:
#line 281 "checker.y"
    {	CheckCondExpr(yyvsp[-1].Ventry); InLoopCount ++;					;}
    break;

  case 77:
#line 282 "checker.y"
    {	InLoopCount --;										;}
    break;

  case 78:
#line 285 "checker.y"

⌨️ 快捷键说明

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