gcompile.cc
来自「Gambit 是一个游戏库理论软件」· CC 代码 · 共 2,005 行 · 第 1/5 页
CC
2,005 行
case 25:#line 223 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Equal", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 26:#line 226 "gcompile.yy"{ yyval.eval = new gclFunctionCall("NotEqual", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 27:#line 229 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Less", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 28:#line 232 "gcompile.yy"{ yyval.eval = new gclFunctionCall("LessEqual", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 29:#line 235 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Greater", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 30:#line 238 "gcompile.yy"{ yyval.eval = new gclFunctionCall("GreaterEqual", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 31:#line 241 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Not", yyvsp[0].eval, current_line, current_file); ; break;}case 32:#line 244 "gcompile.yy"{ yyval.eval = new gclFunctionCall("And", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 33:#line 247 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Or", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 34:#line 250 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Write", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 35:#line 253 "gcompile.yy"{ yyval.eval = new gclFunctionCall("Read", yyvsp[-2].eval, yyvsp[0].eval, current_line, current_file); ; break;}case 36:#line 259 "gcompile.yy"{ yyval.eval = new gclConditional(yyvsp[-5].eval, yyvsp[-3].eval, yyvsp[-1].eval); ; break;}case 37:#line 261 "gcompile.yy"{ yyval.eval = new gclConditional(yyvsp[-3].eval, yyvsp[-1].eval, new gclConstExpr(new BoolPortion(false))); ; break;}case 38:#line 264 "gcompile.yy"{ yyval.eval = new gclWhileExpr(yyvsp[-3].eval, yyvsp[-1].eval); ; break;}case 39:#line 267 "gcompile.yy"{ yyval.eval = new gclForExpr(yyvsp[-7].eval, yyvsp[-5].eval, yyvsp[-3].eval, yyvsp[-1].eval); ; break;}case 40:#line 268 "gcompile.yy"{ if (in_funcdecl) YYERROR; in_funcdecl = true; ; break;}case 41:#line 270 "gcompile.yy"{ funcbody = ""; record_funcbody = true; ; break;}case 42:#line 272 "gcompile.yy"{ record_funcbody = false; in_funcdecl = false; yyval.eval = NewFunction(yyvsp[-1].eval); ; break;}case 43:#line 274 "gcompile.yy"{ if (in_funcdecl) YYERROR; ; break;}case 44:#line 276 "gcompile.yy"{ yyval.eval = DeleteFunction(); ; break;}case 45:#line 277 "gcompile.yy"{ funcnames.Push(tval); ; break;}case 46:#line 278 "gcompile.yy"{ yyval.eval = new gclFunctionCall(funcnames.Pop(), yyvsp[-1].pval, current_line, current_file); ; break;}case 48:#line 282 "gcompile.yy"{ tval = "Float"; ; break;}case 49:#line 283 "gcompile.yy"{ tval = "Rational"; ; break;}case 50:#line 286 "gcompile.yy"{ yyval.pval = new gclParameterList; ; break;}case 51:#line 287 "gcompile.yy"{ yyval.pval = new gclParameterList(yyvsp[0].rpval); ; break;}case 52:#line 288 "gcompile.yy"{ yyval.pval = new gclParameterList(yyvsp[0].opval); ; break;}case 53:#line 290 "gcompile.yy"{ yyval.pval = new gclParameterList(yyvsp[-2].rpval, yyvsp[0].opval); ; break;}case 54:#line 292 "gcompile.yy"{ yyval.rpval = new gclReqParameterList(yyvsp[0].eval); ; break;}case 55:#line 293 "gcompile.yy"{ yyvsp[-2].rpval->Append(yyvsp[0].eval); ; break;}case 57:#line 297 "gcompile.yy"{ funcnames.Push(tval); ; break;}case 58:#line 298 "gcompile.yy"{ yyval.opval = new gclOptParameterList(funcnames.Pop(), yyvsp[0].eval); ; break;}case 59:#line 299 "gcompile.yy"{ funcnames.Push(tval); ; break;}case 60:#line 301 "gcompile.yy"{ yyvsp[-5].opval->Append(funcnames.Pop(), yyvsp[0].eval); ; break;}case 63:#line 306 "gcompile.yy"{ yyval.eval = new gclConstExpr(new BoolPortion(bval)); ; break;}case 64:#line 308 "gcompile.yy"{ yyval.eval = new gclConstExpr(new NumberPortion(ival)); ; break;}case 65:#line 310 "gcompile.yy"{ yyval.eval = new gclConstExpr(new NumberPortion(dval)); ; break;}case 66:#line 312 "gcompile.yy"{ yyval.eval = new gclConstExpr(new TextPortion(tval)); ; break;}case 67:#line 314 "gcompile.yy"{ yyval.eval = new gclConstExpr(new OutputPortion(gsm->OutputStream())); ; break;}case 68:#line 316 "gcompile.yy"{ yyval.eval = new gclConstExpr(new OutputPortion(*new gNullOutput)); ; break;}case 69:#line 318 "gcompile.yy"{ yyval.eval = new gclConstExpr(new PrecisionPortion(precDOUBLE)); ; break;}case 70:#line 320 "gcompile.yy"{ yyval.eval = new gclConstExpr(new PrecisionPortion(precRATIONAL)); ; break;}case 71:#line 322 "gcompile.yy"{ yyval.eval = new gclVarName(tval); ; break;}case 72:#line 324 "gcompile.yy"{ yyval.eval = new gclVarName(gText("$") + tval); ; break;}case 73:#line 326 "gcompile.yy"{ yyval.eval = new gclVarName(gText("$$") + tval); ; break;}case 74:#line 327 "gcompile.yy"{ yyval.eval = yyvsp[0].lcval; ; break;}case 75:#line 330 "gcompile.yy"{ yyval.lcval = new gclListConstant; ; break;}case 76:#line 331 "gcompile.yy"{ yyval.lcval = yyvsp[-1].lcval; ; break;}case 77:#line 334 "gcompile.yy"{ yyval.lcval = new gclListConstant(yyvsp[0].eval); ; break;}case 78:#line 335 "gcompile.yy"{ yyvsp[-2].lcval->Append(yyvsp[0].eval); ; break;}case 79:#line 339 "gcompile.yy"{ funcname = tval; ; break;}case 81:#line 342 "gcompile.yy"{ functype = "ANYTYPE"; ; break;}case 82:#line 343 "gcompile.yy"{ paramtype = ""; ; break;}case 83:#line 344 "gcompile.yy"{ functype = paramtype; ; break;}case 85:#line 347 "gcompile.yy"{ paramtype += tval; ; break;}case 88:#line 350 "gcompile.yy"{ paramtype += '('; ; break;}case 89:#line 351 "gcompile.yy"{ paramtype += ')'; ; break;}case 90:#line 353 "gcompile.yy"{ paramtype += tval; ; break;}case 91:#line 353 "gcompile.yy"{ paramtype += '*'; ; break;}case 96:#line 361 "gcompile.yy"{ formals.Append(tval); ; break;}case 97:#line 362 "gcompile.yy"{ paramtype = ""; ; break;}case 98:#line 363 "gcompile.yy"{ types.Append(paramtype); portions.Append(REQUIRED); ; break;}case 99:#line 364 "gcompile.yy"{ formals.Append(tval); ; break;}case 100:#line 365 "gcompile.yy"{ paramtype = ""; types.Append(paramtype); ; break;}case 101:#line 367 "gcompile.yy"{ { Portion *_p_ = yyvsp[-1].eval->Evaluate(*gsm); if (_p_->Spec().Type != porREFERENCE) portions.Append(_p_); else { delete _p_; portions.Append(REQUIRED); } delete yyvsp[-1].eval; } ; break;}case 102:#line 378 "gcompile.yy"{ refs.Append(false); ; break;}case 103:#line 379 "gcompile.yy"{ refs.Append(true); ; break;}} /* the action file gets copied in in place of this dollarsign */#line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen;#ifdef YYLSP_NEEDED yylsp -= yylen;#endif#if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "state stack now"); while (ssp1 != yyssp) fprintf (stderr, " %d", *++ssp1); fprintf (stderr, "\n"); }#endif *++yyvsp = yyval;#ifdef YYLSP_NEEDED yylsp++; if (yylen == 0) { yylsp->first_line = yylloc.first_line; yylsp->first_column = yylloc.first_column; yylsp->last_line = (yylsp-1)->last_line; yylsp->last_column = (yylsp-1)->last_column; yylsp->text = 0; } else { yylsp->last_line = (yylsp+yylen-1)->last_line; yylsp->last_column = (yylsp+yylen-1)->last_column; }#endif /* Now "shift" the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTBASE] + *yyssp; if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTBASE]; goto yynewstate;yyerrlab: /* here on detecting error */ if (! yyerrstatus) /* If not already recovering from an error, report this error. */ { ++yynerrs;#ifdef YYERROR_VERBOSE yyn = yypact[yystate]; if (yyn > YYFLAG && yyn < YYLAST) { int size = 0; char *msg; int x, count; count = 0; /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) size += strlen(yytname[x]) + 15, count++; msg = (char *) malloc(size + 15); if (msg != 0) { strcpy(msg, "parse error"); if (count < 5) { count = 0; for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) { strcat(msg, count == 0 ? ", expecting `" : " or `"); strcat(msg, yytname[x]); strcat(msg, "'"); count++; } } yyerror(msg); free(msg); } else yyerror ("parse error; also virtual memory exceeded"); } else#endif /* YYERROR_VERBOSE */ yyerror("parse error"); } goto yyerrlab1;yyerrlab1: /* here on error raised explicitly by an action */ if (yyerrstatus == 3)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?