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 + -
显示快捷键?