Lines Matching refs:stats
127 Stats_t stats; /* RE statistics */
355 stats(register Cenv_t* env, register Rex_t* e)
377 x = env->stats.x;
378 l = env->stats.l;
379 y = env->stats.y;
380 k = env->stats.k;
381 t = env->stats.t;
382 if (++env->stats.a <= 0)
384 cm = env->stats.m;
385 env->stats.m = 0;
386 cn = env->stats.n;
387 env->stats.n = 0;
388 if (stats(env, e->re.group.expr.binary.left))
390 m = env->stats.m;
391 env->stats.m = 0;
392 n = env->stats.n;
393 env->stats.n = 0;
394 if (e->re.group.expr.binary.right && stats(env, e->re.group.expr.binary.right))
396 if (env->stats.m > m)
397 env->stats.m = m;
399 m = env->stats.m;
400 if ((env->stats.m += cm) < m)
402 if (env->stats.n < n)
403 env->stats.n = n;
405 n = env->stats.n;
406 if ((env->stats.n += cn) < n)
408 env->stats.x = x;
409 env->stats.l = l;
410 env->stats.y = y;
411 env->stats.k = k;
412 env->stats.t = t;
415 if (++env->stats.b <= 0)
422 n = env->stats.m;
423 if ((env->stats.m += e->lo) < n)
427 n = env->stats.n;
428 if ((env->stats.n += e->hi) < n)
433 if (++env->stats.c <= 0)
435 if (++env->stats.s <= 0)
440 cm = env->stats.m;
441 env->stats.m = 0;
442 cn = env->stats.n;
443 env->stats.n = 0;
444 if (stats(env, e->re.group.expr.binary.left))
446 nm = env->stats.m;
447 env->stats.m = 0;
448 nn = env->stats.n;
449 env->stats.n = 0;
450 if (stats(env, e->re.group.expr.binary.right))
452 if (env->stats.m < nm)
453 env->stats.m = nm;
455 nm = env->stats.m;
456 if ((env->stats.m += cm) < nm)
458 if (env->stats.n < nn)
459 env->stats.n = nn;
461 nn = env->stats.n;
462 if ((env->stats.n += cn) < nn)
466 env->stats.e = 1;
469 if (e->re.group.number && ++env->stats.p <= 0 || !e->re.group.number && ++env->stats.u <= 0)
471 if (stats(env, e->re.group.expr.rex))
478 m = env->stats.m;
479 n = env->stats.n;
480 x = env->stats.x;
481 y = env->stats.y;
482 if (stats(env, e->re.group.expr.rex))
484 env->stats.m = m;
485 env->stats.n = n;
486 env->stats.x = x;
487 env->stats.y = y;
492 if (++env->stats.u <= 0)
498 if (++env->stats.u <= 0)
500 m = env->stats.m;
501 n = env->stats.n;
502 x = env->stats.x;
503 y = env->stats.y;
504 if (e->re.group.size > 0 && ++env->stats.b <= 0)
506 if (e->re.group.expr.binary.left && stats(env, e->re.group.expr.binary.left))
510 if (q->re.group.expr.binary.left && stats(env, q->re.group.expr.binary.left))
512 if (q->re.group.expr.binary.right && stats(env, q->re.group.expr.binary.right))
515 env->stats.m = m;
516 env->stats.n = n;
517 env->stats.x = x;
518 env->stats.y = y;
521 if (++env->stats.u <= 0)
523 m = env->stats.m;
524 n = env->stats.n;
525 x = env->stats.x;
526 y = env->stats.y;
527 if (stats(env, e->re.group.expr.rex))
529 env->stats.m = m;
530 env->stats.n = n;
531 env->stats.x = x;
532 env->stats.y = y;
535 env->stats.i++;
536 x = env->stats.x;
537 l = env->stats.l;
538 y = env->stats.y;
539 k = env->stats.k;
540 t = env->stats.t;
541 cm = env->stats.m;
542 env->stats.m = 0;
543 if (stats(env, e->re.group.expr.rex))
545 env->stats.m = !env->stats.m;
546 if ((env->stats.m += cm) < cm)
548 env->stats.x = x;
549 env->stats.l = l;
550 env->stats.y = y;
551 env->stats.k = k;
552 env->stats.t = t;
555 x = env->stats.x;
556 l = env->stats.l;
557 y = env->stats.y;
558 k = env->stats.k;
559 t = env->stats.t;
560 if (++env->stats.c <= 0)
562 b = env->stats.b;
563 c = env->stats.c;
564 cm = env->stats.m;
565 env->stats.m = 0;
566 if (stats(env, e->re.group.expr.rex))
568 if (env->stats.m == 1 && b == env->stats.b && c == env->stats.c && ++env->stats.s <= 0)
572 env->stats.x = x;
573 env->stats.l = l;
574 env->stats.y = y;
575 env->stats.k = k;
576 env->stats.t = t;
577 env->stats.m = cm;
581 m = env->stats.m;
582 if ((env->stats.m *= e->lo) > 0 && env->stats.m < m)
584 m = env->stats.m;
585 if ((env->stats.m += cm) < m)
587 if (env->stats.x != x)
588 env->stats.l = cm;
589 if (env->stats.y != y)
590 env->stats.k = cm;
596 cm = env->stats.m;
597 if ((env->stats.m += e->re.string.size) < cm)
599 cn = env->stats.n;
600 if ((env->stats.n += e->re.string.size) < cn)
602 if (!env->stats.x || env->stats.x->re.string.size < e->re.string.size)
604 env->stats.x = e;
605 env->stats.l = cm;
610 if (++env->stats.s <= 0)
612 cm = env->stats.m;
613 if ((env->stats.m += e->re.trie.min) < cm)
615 cn = env->stats.n;
616 if ((env->stats.n += e->re.trie.max) < cn)
618 env->stats.t++;
619 if (!env->stats.y || env->stats.y->re.trie.min < e->re.trie.min)
621 env->stats.y = e;
622 env->stats.k = cm;
2510 if (stats(env, e))
2517 f->re.group.size = env->stats.m;
2518 memset(&env->stats, 0, sizeof(env->stats));
2976 if ((x = env->stats.x) && x->re.string.size < 3)
2978 if ((t = env->stats.y) && t->re.trie.min < 3)
3001 l = env->stats.l;
3008 l = env->stats.k;
3022 a->re.bm.right = env->stats.m - l - n;
3023 a->re.bm.complete = (env->stats.e || y != e && (e->type != REX_GROUP || y != e->re.group.expr.rex) || e->next || ((a->re.bm.left + a->re.bm.right) >= 0)) ? 0 : n;
3129 if (env->stats.b)
3284 p->env->stats.re_flags = env.flags & (REG_EXTENDED|REG_AUGMENTED|REG_SHELL);
3300 p->env->stats.re_flags |= REG_LEFT;
3320 p->env->stats.re_flags |= REG_RIGHT;
3322 if (stats(&env, p->env->rex))
3328 if (env.stats.b)
3330 else if (!(env.flags & REG_FIRST) && (env.stats.a || env.stats.c > 1 && env.stats.c != env.stats.s || env.stats.t && (env.stats.t > 1 || env.stats.a || env.stats.c)))
3332 if (p->env->hard || env.stats.c || env.stats.i)
3333 p->env->stats.re_min = p->env->stats.re_max = -1;
3336 if (!(p->env->stats.re_min = env.stats.m))
3337 p->env->stats.re_min = -1;
3338 if (!(p->env->stats.re_max = env.stats.n))
3339 p->env->stats.re_max = -1;
3344 p->re_nsub = env.stats.p;
3362 p->env->min = env.stats.m;
3363 p->env->nsub = env.stats.p + env.stats.u;
3491 if (stats(&env, p->env->rex))