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

📄 lp_rlpt.c

📁 lp_solve_5.5.0.13_xli_CPLEX_source.tar优化问题的求解
💻 C
📖 第 1 页 / 共 5 页
字号:
#define YYPOPSTACK(N)   (lpt_yyvsp -= (N), lpt_yyssp -= (N))  YYSIZE_T lpt_yystacksize = YYINITDEPTH;  /* The variables used to return semantic value and location from the     action routines.  */  YYSTYPE lpt_yyval;  /* The number of symbols on the RHS of the reduced rule.     Keep to zero when no symbol should be popped.  */  int lpt_yylen = 0;  YYDPRINTF ((stderr, "Starting parse\n"));  lpt_yystate = 0;  lpt_yyerrstatus = 0;  lpt_yynerrs = 0;  lpt_yychar = YYEMPTY;		/* Cause a token to be read.  */  /* Initialize stack pointers.     Waste one element of value and location stack     so that they stay on the same level as the state stack.     The wasted elements are never initialized.  */  lpt_yyssp = lpt_yyss;  lpt_yyvsp = lpt_yyvs;  goto lpt_yysetstate;/*------------------------------------------------------------.| lpt_yynewstate -- Push a new state, which is found in lpt_yystate.  |`------------------------------------------------------------*/ lpt_yynewstate:  /* In all cases, when you get here, the value and location stacks     have just been pushed.  So pushing a state here evens the stacks.  */  lpt_yyssp++; lpt_yysetstate:  *lpt_yyssp = lpt_yystate;  if (lpt_yyss + lpt_yystacksize - 1 <= lpt_yyssp)    {      /* Get the current used size of the three stacks, in elements.  */      YYSIZE_T lpt_yysize = lpt_yyssp - lpt_yyss + 1;#ifdef lpt_yyoverflow      {	/* Give user a chance to reallocate the stack.  Use copies of	   these so that the &'s don't force the real ones into	   memory.  */	YYSTYPE *lpt_yyvs1 = lpt_yyvs;	lpt_yytype_int16 *lpt_yyss1 = lpt_yyss;	/* Each stack pointer address is followed by the size of the	   data in use in that stack, in bytes.  This used to be a	   conditional around just the two extra args, but that might	   be undefined if lpt_yyoverflow is a macro.  */	lpt_yyoverflow (YY_("memory exhausted"),		    &lpt_yyss1, lpt_yysize * sizeof (*lpt_yyssp),		    &lpt_yyvs1, lpt_yysize * sizeof (*lpt_yyvsp),		    &lpt_yystacksize);	lpt_yyss = lpt_yyss1;	lpt_yyvs = lpt_yyvs1;      }#else /* no lpt_yyoverflow */# ifndef YYSTACK_RELOCATE      goto lpt_yyexhaustedlab;# else      /* Extend the stack our own way.  */      if (YYMAXDEPTH <= lpt_yystacksize)	goto lpt_yyexhaustedlab;      lpt_yystacksize *= 2;      if (YYMAXDEPTH < lpt_yystacksize)	lpt_yystacksize = YYMAXDEPTH;      {	lpt_yytype_int16 *lpt_yyss1 = lpt_yyss;	union lpt_yyalloc *lpt_yyptr =	  (union lpt_yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (lpt_yystacksize));	if (! lpt_yyptr)	  goto lpt_yyexhaustedlab;	YYSTACK_RELOCATE (lpt_yyss);	YYSTACK_RELOCATE (lpt_yyvs);#  undef YYSTACK_RELOCATE	if (lpt_yyss1 != lpt_yyssa)	  YYSTACK_FREE (lpt_yyss1);      }# endif#endif /* no lpt_yyoverflow */      lpt_yyssp = lpt_yyss + lpt_yysize - 1;      lpt_yyvsp = lpt_yyvs + lpt_yysize - 1;      YYDPRINTF ((stderr, "Stack size increased to %lu\n",		  (unsigned long int) lpt_yystacksize));      if (lpt_yyss + lpt_yystacksize - 1 <= lpt_yyssp)	YYABORT;    }  YYDPRINTF ((stderr, "Entering state %d\n", lpt_yystate));  goto lpt_yybackup;/*-----------.| lpt_yybackup.  |`-----------*/lpt_yybackup:  /* Do appropriate processing given the current state.  Read a     look-ahead token if we need one and don't already have one.  */  /* First try to decide what to do without reference to look-ahead token.  */  lpt_yyn = lpt_yypact[lpt_yystate];  if (lpt_yyn == YYPACT_NINF)    goto lpt_yydefault;  /* Not known => get a look-ahead token if don't already have one.  */  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */  if (lpt_yychar == YYEMPTY)    {      YYDPRINTF ((stderr, "Reading a token: "));      lpt_yychar = YYLEX;    }  if (lpt_yychar <= YYEOF)    {      lpt_yychar = lpt_yytoken = YYEOF;      YYDPRINTF ((stderr, "Now at end of input.\n"));    }  else    {      lpt_yytoken = YYTRANSLATE (lpt_yychar);      YY_SYMBOL_PRINT ("Next token is", lpt_yytoken, &lpt_yylval, &lpt_yylloc);    }  /* If the proper action on seeing token YYTOKEN is to reduce or to     detect an error, take that action.  */  lpt_yyn += lpt_yytoken;  if (lpt_yyn < 0 || YYLAST < lpt_yyn || lpt_yycheck[lpt_yyn] != lpt_yytoken)    goto lpt_yydefault;  lpt_yyn = lpt_yytable[lpt_yyn];  if (lpt_yyn <= 0)    {      if (lpt_yyn == 0 || lpt_yyn == YYTABLE_NINF)	goto lpt_yyerrlab;      lpt_yyn = -lpt_yyn;      goto lpt_yyreduce;    }  if (lpt_yyn == YYFINAL)    YYACCEPT;  /* Count tokens shifted since error; after three, turn off error     status.  */  if (lpt_yyerrstatus)    lpt_yyerrstatus--;  /* Shift the look-ahead token.  */  YY_SYMBOL_PRINT ("Shifting", lpt_yytoken, &lpt_yylval, &lpt_yylloc);  /* Discard the shifted token unless it is eof.  */  if (lpt_yychar != YYEOF)    lpt_yychar = YYEMPTY;  lpt_yystate = lpt_yyn;  *++lpt_yyvsp = lpt_yylval;  goto lpt_yynewstate;/*-----------------------------------------------------------.| lpt_yydefault -- do the default action for the current state.  |`-----------------------------------------------------------*/lpt_yydefault:  lpt_yyn = lpt_yydefact[lpt_yystate];  if (lpt_yyn == 0)    goto lpt_yyerrlab;  goto lpt_yyreduce;/*-----------------------------.| lpt_yyreduce -- Do a reduction.  |`-----------------------------*/lpt_yyreduce:  /* lpt_yyn is the number of a rule to reduce with.  */  lpt_yylen = lpt_yyr2[lpt_yyn];  /* If YYLEN is nonzero, implement the default value of the action:     `$$ = $1'.     Otherwise, the following line sets YYVAL to garbage.     This behavior is undocumented and Bison     users should not rely upon it.  Assigning to YYVAL     unconditionally makes the parser a bit smaller, and it avoids a     GCC warning that YYVAL may be used uninitialized.  */  lpt_yyval = lpt_yyvsp[1-lpt_yylen];  YY_REDUCE_PRINT (lpt_yyn);  switch (lpt_yyn)    {        case 3:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->isign = 0;  pv->make_neg = 0;  pv->Sign = 0;  pv->HadConstraint = FALSE;  pv->HadVar = FALSE;}    break;  case 5:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->f = 1;  pv->f1 = pv->f2 = 0;}    break;  case 7:    {  set_obj_dir(PARM, TRUE);}    break;  case 8:    {  set_obj_dir(PARM, FALSE);}    break;  case 10:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if(!add_constraint_name(pp, pv->Last_var))    YYABORT;  /* pv->HadConstraint = TRUE; */}    break;  case 12:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if((!pv->objconst) && (pv->f1 + pv->f2 != 0)) {    lpt_yyerror(pp, pp->scanner, "constant in objective not supported");    YYABORT;  }  if(!rhs_store(pp, -(pv->f1 + pv->f2), pv->HadConstraint, pv->HadVar, pv->Had_lineair_sum))    YYABORT;  add_row(pp);  /* pv->HadConstraint = FALSE; */  pv->HadVar = FALSE;  pv->isign = 0;  pv->make_neg = 0;}    break;  case 17:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->HadSign = FALSE;}    break;  case 18:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if(pv->HadSign) {    pv->f1 += pv->f2;    pv->f = 1;  }}    break;  case 20:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if (    (pv->isign || pv->make_neg)      && !(pv->isign && pv->make_neg)) /* but not both! */    pv->f = -pv->f;  pv->f2 = pv->f;  pv->isign = 0;}    break;  case 21:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->f2 = 0;  pv->f = 1;}    break;  case 24:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->HadConstraint = TRUE;}    break;  case 25:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->HadConstraint = FALSE;}    break;  case 31:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if(!add_constraint_name(pp, pv->Last_var))    YYABORT;  /* pv->HadConstraint = TRUE; */}    break;  case 33:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if(!store_re_op(pp, pv->OP, pv->HadConstraint, pv->HadVar, pv->Had_lineair_sum))    YYABORT;  pv->make_neg = 1;}    break;  case 34:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->Had_lineair_sum = TRUE;  add_row(pp);  /* pv->HadConstraint = FALSE; */  pv->HadVar = FALSE;  pv->isign = 0;  pv->make_neg = 0;  null_tmp_store(pp, TRUE);}    break;  case 35:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->HadConstraint = pv->HadVar = TRUE;}    break;  case 39:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->f = 1.0;}    break;  case 46:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->isign = pv->Sign;}    break;  case 53:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->f = 1.0;  pv->isign = 0;}    break;  case 55:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  pv->f0 = pv->f;  pv->isign0 = pv->isign;}    break;  case 56:    {  parse_parm *pp = PARM;  parse_vars *pv = (parse_vars *) pp->parse_vars;  if(!store_re_op(pp, pv->OP, pv->HadConstraint, pv->HadVar, pv->Had_lineair_sum))    YYABORT;  pv->make_neg = 0;}    break;

⌨️ 快捷键说明

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