📄 lp_rlpt.c
字号:
#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 + -