Lines Matching defs:es
137 static void evalerr ARGS((Expr_state *es, enum error_type type,
139 static struct tbl *evalexpr ARGS((Expr_state *es, enum prec prec));
140 static void token ARGS((Expr_state *es));
142 static void assign_check ARGS((Expr_state *es, enum token op,
145 static struct tbl *intvar ARGS((Expr_state *es, struct tbl *vp));
177 Expr_state * const es = &curstate;
201 token(es);
203 if (es->tok == END) {
204 es->tok = LIT;
205 es->val = tempvar();
208 v = intvar(es, evalexpr(es, MAX_PREC));
210 if (es->tok != END)
211 evalerr(es, ET_UNEXPECTED, (char *) 0);
225 evalerr(es, type, str)
226 Expr_state *es;
235 switch (es->tok) {
237 s = es->val->name;
240 s = str_val(es->val);
246 tbuf[0] = *es->tokp;
251 s = opinfo[(int)es->tok].name;
253 warningf(true, "%s: unexpected `%s'", es->expression, s);
257 warningf(true, "%s: bad number `%s'", es->expression, str);
262 es->expression, str);
267 es->expression, str);
272 es->expression, str);
277 warningf(true, "%s: %s", es->expression, str);
284 evalexpr(es, prec)
285 Expr_state *es;
293 op = es->tok;
297 token(es);
298 vl = intvar(es, evalexpr(es, P_PRIMARY));
307 token(es);
308 vl = evalexpr(es, MAX_PREC);
309 if (es->tok != CLOSE_PAREN)
310 evalerr(es, ET_STR, "missing )");
311 token(es);
313 token(es);
314 if (es->tok != VAR)
315 evalerr(es, ET_LVALUE, opinfo[(int) op].name);
316 vl = do_ppmm(es, op, es->val, true);
317 token(es);
319 vl = es->val;
320 token(es);
322 evalerr(es, ET_UNEXPECTED, (char *) 0);
325 if (es->tok == O_PLUSPLUS || es->tok == O_MINUSMINUS) {
326 vl = do_ppmm(es, es->tok, vl, false);
327 token(es);
331 vl = evalexpr(es, ((int) prec) - 1);
332 for (op = es->tok; IS_BINOP(op) && opinfo[(int) op].prec == prec;
333 op = es->tok)
335 token(es);
338 vl = intvar(es, vl);
340 assign_check(es, op, vasn);
341 vr = intvar(es, evalexpr(es, P_ASSIGN));
343 vr = intvar(es, evalexpr(es, ((int) prec) - 1));
347 if (es->noassign)
350 evalerr(es, ET_STR, "zero divisor");
413 es->noassign++;
414 vr = intvar(es, evalexpr(es, ((int) prec) - 1));
417 es->noassign--;
421 es->noassign++;
422 vr = intvar(es, evalexpr(es, ((int) prec) - 1));
425 es->noassign--;
431 es->noassign++;
432 vl = evalexpr(es, MAX_PREC);
434 es->noassign--;
435 if (es->tok != CTERN)
436 evalerr(es, ET_STR, "missing :");
437 token(es);
439 es->noassign++;
440 vr = evalexpr(es, P_TERN);
442 es->noassign--;
467 token(es)
468 Expr_state *es;
475 for (cp = es->tokp; (c = *cp), isspace((unsigned char)c); cp++)
477 es->tokp = cp;
480 es->tok = END;
489 evalerr(es, ET_STR, "missing ]");
501 if (es->noassign) {
502 es->val = tempvar();
503 es->val->flag |= EXPRLVALUE;
505 tvar = str_nsave(es->tokp, cp - es->tokp, ATEMP);
506 es->val = global(tvar);
509 es->tok = VAR;
513 tvar = str_nsave(es->tokp, --cp - es->tokp, ATEMP);
514 es->val = tempvar();
515 es->val->flag &= ~INTEGER;
516 es->val->type = 0;
517 es->val->val.s = tvar;
518 if (setint_v(es->val, es->val) == NULL)
519 evalerr(es, ET_BADLIT, tvar);
521 es->tok = LIT;
529 es->tok = (enum token) i;
534 es->tok = BAD;
536 es->tokp = cp;
541 do_ppmm(Expr_state *es, enum token op, struct tbl *vasn, bool is_prefix)
546 assign_check(es, op, vasn);
548 vl = intvar(es, vasn);
561 assign_check(es, op, vasn)
562 Expr_state *es;
567 evalerr(es, ET_LVALUE, opinfo[(int) op].name);
569 evalerr(es, ET_RDONLY, opinfo[(int) op].name);
588 intvar(es, vp)
589 Expr_state *es;
602 evalerr(es, ET_RECURSIVE, vp->name);
603 es->evaling = vp;
607 es->evaling = (struct tbl *) 0;