rem: l = eval4 ();
add: l = eval4 (evaluate);
context: eval3 (void){  VALUE *l;  VALUE *r;  enum { plus, minus } fxn;  intmax_t val;#ifdef EVAL_TRACE  trace ("eval3");#endif  l = eval4 ();  while (1)    {      if (nextarg ("+"))	fxn = plus;      else if (nextarg ("-"))	fxn = minus;      else	return l;      r = eval4 ();      if (!toarith (l) || !toarith (r))	error (2, 0, _("non-numeric argument"));      val = fxn == plus ? l->u.i + r->u.i : l->u.i - r->u.i;      freev (l);      freev (r);      l = int_value (val);    }}