Lines Matching refs:re

119 	unsigned char*	cursor;		/* curent point in re		*/
161 e->re.data = (char*)e + sizeof(Rex_t);
203 drop(disc, e->re.group.expr.binary.left);
204 drop(disc, e->re.group.expr.binary.right);
214 drop(disc, e->re.group.expr.rex);
218 triedrop(disc, e->re.trie.root[i]);
246 if (e->re.group.expr.binary.left)
247 mark(e->re.group.expr.binary.left, set);
248 if (e->re.group.expr.binary.right)
249 mark(e->re.group.expr.binary.right, set);
260 mark(e->re.group.expr.rex, set);
280 if (e->re.group.expr.binary.left)
281 n = serialize(env, e->re.group.expr.binary.left, n);
282 e->re.group.expr.binary.serial = n++;
283 if (e->re.group.expr.binary.right)
284 n = serialize(env, e->re.group.expr.binary.right, n);
287 n = serialize(env, e->re.group.expr.binary.left, n);
288 n = serialize(env, e->re.group.expr.binary.right, n);
298 n = serialize(env, e->re.group.expr.rex, n);
360 * collect re statistics
397 if (stats(env, e->re.group.expr.binary.left))
403 if (e->re.group.expr.binary.right && stats(env, e->re.group.expr.binary.right))
453 if (stats(env, e->re.group.expr.binary.left))
459 if (stats(env, e->re.group.expr.binary.right))
478 if (e->re.group.number && ++env->stats.p <= 0 || !e->re.group.number && ++env->stats.u <= 0)
480 if (stats(env, e->re.group.expr.rex))
491 if (stats(env, e->re.group.expr.rex))
513 if (e->re.group.size > 0 && ++env->stats.b <= 0)
515 if (e->re.group.expr.binary.left && stats(env, e->re.group.expr.binary.left))
517 if (q = e->re.group.expr.binary.right)
519 if (q->re.group.expr.binary.left && stats(env, q->re.group.expr.binary.left))
521 if (q->re.group.expr.binary.right && stats(env, q->re.group.expr.binary.right))
536 if (stats(env, e->re.group.expr.rex))
552 if (stats(env, e->re.group.expr.rex))
575 if (stats(env, e->re.group.expr.rex))
606 if ((env->stats.m += e->re.string.size) < cm)
609 if ((env->stats.n += e->re.string.size) < cn)
611 if (!env->stats.x || env->stats.x->re.string.size < e->re.string.size)
622 if ((env->stats.m += e->re.trie.min) < cm)
625 if ((env->stats.n += e->re.trie.max) < cn)
628 if (!env->stats.y || env->stats.y->re.trie.min < e->re.trie.min)
1244 setadd(e->re.charclass, c);
1274 setadd(e->re.charclass, last);
1278 setadd(e->re.charclass, '-');
1310 setadd(e->re.charclass, last);
1349 setadd(e->re.charclass, c);
1361 setadd(e->re.charclass, last);
1369 setadd(e->re.charclass, buf[0]);
1399 setadd(e->re.charclass, i);
1405 setadd(e->re.charclass, last);
1406 setadd(e->re.charclass, c);
1417 setadd(e->re.charclass, last);
1475 ce = (Celt_t*)e->re.data;
1476 e->re.collate.invert = neg;
1477 e->re.collate.elements = ce;
1722 if (settst(e->re.charclass, i))
1730 setadd(e->re.charclass, c);
1734 for (i = 0; i < elementsof(e->re.charclass->bits); i++)
1735 e->re.charclass->bits[i] ^= ~0;
1737 setclr(e->re.charclass, env->explicit);
1771 setadd(e->re.charclass, i);
1773 setclr(e->re.charclass, env->explicit);
1779 ce = (Celt_t*)e->re.data;
1780 e->re.collate.invert = 0;
1781 e->re.collate.elements = ce;
1809 f->re.group.expr.rex = e;
1880 f->re.group.expr.rex = e;
1881 f->re.group.number = number;
1882 f->re.group.last = last;
1887 for (; e && e->type >= REX_GROUP && e->type <= REX_GROUP_CUT; e = e->re.group.expr.rex);
1932 *(s = tmp) = f->re.onechar;
1936 s = f->re.string.base;
1937 e = s + f->re.string.size;
1942 if (!(t = g->re.trie.root[*s]) && !(t = g->re.trie.root[*s] = trienode(env, *s)))
1962 if (g->re.trie.min > len)
1963 g->re.trie.min = len;
1964 if (g->re.trie.max < len)
1965 g->re.trie.max = len;
1987 g->re.trie.min = INT_MAX;
2280 e->re.nest.primary = isalnum(*env->cursor) ? -1 : *env->cursor;
2298 if (e->re.nest.type[i] & ~x)
2300 e->re.nest.type[i] = x;
2312 e->re.nest.type[UCHAR_MAX+1] |= REX_NEST_terminator;
2324 if (e->re.nest.type[i] & ~x)
2326 e->re.nest.type[i] = x|REX_NEST_open|REX_NEST_close|(i<<REX_NEST_SHIFT);
2349 if (isalnum(i) || (e->re.nest.type[i] & (REX_NEST_close|REX_NEST_escape|REX_NEST_literal|REX_NEST_quote|REX_NEST_delimiter|REX_NEST_separator|REX_NEST_terminator)))
2351 e->re.nest.type[i] = REX_NEST_open;
2352 if ((x = chr(env, &esc)) < 0 || (e->re.nest.type[x] & (REX_NEST_close|REX_NEST_escape|REX_NEST_delimiter|REX_NEST_separator|REX_NEST_terminator)))
2361 e->re.nest.type[x] |= REX_NEST_close;
2362 e->re.nest.type[i] |= x << REX_NEST_SHIFT;
2379 f->re.group.back = 0;
2380 f->re.group.number = parno;
2381 f->re.group.expr.rex = e;
2432 e->re.group.size = c;
2433 e->re.group.expr.binary.left = f;
2434 if (!(e->re.group.expr.binary.right = alt(env, parno, 1)))
2483 e->re.exec.text = (const char*)p;
2484 e->re.exec.size = env->cursor - p - 2;
2486 e->re.exec.data = 0;
2488 e->re.exec.data = (*env->disc->re_compf)(env->regex, e->re.exec.text, e->re.exec.size, env->disc);
2512 env->paren[c]->re.group.back = 1;
2552 f->re.group.expr.rex = e;
2562 f->re.group.size = env->stats.m;
2653 memcpy((char*)(e->re.string.base = (unsigned char*)e->re.data), (char*)buf, i);
2654 e->re.string.size = i;
2663 f->re.onechar = (env->flags & REG_ICASE) ? toupper(x) : x;
2669 memcpy((char*)(f->re.string.base = (unsigned char*)f->re.data), (char*)p, n);
2670 f->re.string.size = n;
2684 memcpy((char*)(e->re.string.base = (unsigned char*)e->re.data), (char*)buf, c);
2685 e->re.string.size = c;
2697 env->paren[c]->re.group.back = 1;
2751 f->re.group.back = 0;
2752 f->re.group.number = parno;
2753 f->re.group.expr.rex = e;
2770 f->re.group.back = 0;
2771 f->re.group.number = parno;
2772 f->re.group.expr.rex = e;
2833 e->re.onechar = '/';
2888 g->re.group.expr.binary.left = e;
2889 g->re.group.expr.binary.right = f;
2928 g->re.group.number = number;
2929 g->re.group.last = env->parno;
2930 g->re.group.expr.binary.left = e;
2931 g->re.group.expr.binary.right = f;
2957 a->re.bm.mask[m][c] |= b;
2958 if (z == HIT || !a->re.bm.skip[c] || a->re.bm.skip[c] > z && a->re.bm.skip[c] < HIT)
2959 a->re.bm.skip[c] = z;
2968 a->re.bm.mask[m][c] |= b;
2969 if (z == HIT || !a->re.bm.skip[c] || a->re.bm.skip[c] > z && a->re.bm.skip[c] < HIT)
2970 a->re.bm.skip[c] = z;
2991 a->re.bm.complete = 0;
2994 a->re.bm.complete = 0;
3027 if ((x = env->stats.x) && x->re.string.size < 3)
3029 if ((t = env->stats.y) && t->re.trie.min < 3)
3033 if (x->re.string.size >= t->re.trie.min)
3051 n = m = x->re.string.size;
3057 n = t->re.trie.min;
3058 m = t->re.trie.max;
3070 a->re.bm.size = n;
3071 a->re.bm.back = (y == e || y == e->re.group.expr.rex) ? (m - n) : -1;
3072 a->re.bm.left = l - 1;
3073 a->re.bm.right = env->stats.m - l - n;
3074 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;
3075 h = (Bm_mask_t*)&a->re.bm.mask[n];
3076 a->re.bm.skip = (size_t*)(h + n * (UCHAR_MAX + 1));
3077 a->re.bm.fail = &a->re.bm.skip[UCHAR_MAX + 1];
3079 a->re.bm.skip[m] = n;
3080 a->re.bm.skip[0] = a->re.bm.skip[env->mappednewline] = (y->next && y->next->type == REX_END) ? HIT : (n + a->re.bm.left);
3082 a->re.bm.fail[i] = 2 * n - i;
3083 mask = a->re.bm.mask;
3090 bmstr(env, a, x->re.string.base, n, 1);
3097 if (t->re.trie.root[i])
3098 m = bmtrie(env, a, v, t->re.trie.root[i], n, 0, m);
3113 DEBUG_TEST(0x0010,sfprintf(sfstderr, "BM#2: fail[%d]=%d => %d\n", k, a->re.bm.fail[k], (a->re.bm.fail[k] > n - j) ? (n - j) : a->re.bm.fail[k]), (0));
3114 if (a->re.bm.fail[k] > n - j)
3115 a->re.bm.fail[k] = n - j;
3120 if (a->re.bm.fail[i] > n + k - i)
3122 DEBUG_TEST(0x0010,sfprintf(sfstderr, "BM#4: fail[%d]=%d => %d\n", i, a->re.bm.fail[i], n + k - i), (0));
3123 a->re.bm.fail[i] = n + k - i;
3128 sfprintf(sfstderr, "STAT: complete=%d n=%d k=%d l=%d r=%d y=%d:%d e=%d:%d\n", a->re.bm.complete, n, k, a->re.bm.left, a->re.bm.right, y->type, y->next ? y->next->type : 0, e->type, e->next ? e->next->type : 0);
3131 if (a->re.bm.mask[m][i])
3132 sfprintf(sfstderr, "MASK: [%d]['%c'] = %032..2u\n", m, i, a->re.bm.mask[m][i]);
3134 if (a->re.bm.skip[i] >= HIT)
3136 else if (a->re.bm.skip[i] > 0 && a->re.bm.skip[i] < n)
3137 sfprintf(sfstderr, "SKIP: ['%c'] = %3d\n", i, a->re.bm.skip[i]);
3145 if (a->re.bm.mask[m][i] & (1 << j))
3164 sfprintf(sfstderr, "%3d", a->re.bm.fail[m]);
3182 e = e->re.group.expr.rex;
3198 s = e->re.string.base;
3199 n = e->re.string.size;
3204 f = a->re.string.fail;
3205 memcpy((char*)(a->re.string.base = (unsigned char*)&f[n]), (char*)s, n);
3206 s = a->re.string.base;
3207 a->re.string.size = n;
3546 p->env->min = g->re.trie.min;