Lines Matching refs:sp

35 detrie(Trie_node_t* x, Sfio_t* sp, char* b, char* p, char* e, int delimiter)
51 sfputc(sp, x->c);
54 sfputc(sp, '|');
55 sfputc(sp, '<');
56 sfwrite(sp, b, p - b);
57 sfputc(sp, '>');
58 detrie(y, sp, b, p, e, delimiter);
62 sfputc(sp, '|');
63 sfputc(sp, '{');
64 sfwrite(sp, b, p - b);
65 sfputc(sp, '}');
72 decomp(register Rex_t* e, Sfio_t* sp, int type, int delimiter, regflags_t flags)
94 if (decomp(e->re.group.expr.binary.left, sp, type, delimiter, flags))
96 sfputc(sp, '|');
97 if (e->re.group.expr.binary.right && decomp(e->re.group.expr.binary.right, sp, type, delimiter, flags))
101 sfprintf(sp, "\\%d", e->lo);
105 sfputc(sp, '^');
109 sfputc(sp, '$');
112 meta(sp, '<', type, 1, delimiter);
115 meta(sp, '<', type, 1, delimiter);
118 sfprintf(sp, "\\w");
131 sfputc(sp, '*');
133 sfputc(sp, '+');
135 sfprintf(sp, "{%d,}", e->lo);
138 sfprintf(sp, "{%d,%d}", e->lo, e->hi);
140 sfputc(sp, '?');
147 if (decomp(e->re.group.expr.rex, sp, type, delimiter, flags))
151 sfputc(sp, '[');
227 sfputc(sp, '^');
229 sfputc(sp, ']');
231 sfputc(sp, '-');
235 sfputc(sp, '\\');
236 sfputc(sp, delimiter);
238 sfwrite(sp, ic, t - ic);
243 sfputc(sp, ']');
245 sfputc(sp, '-');
249 sfputc(sp, '\\');
250 sfputc(sp, delimiter);
254 sfwrite(sp, nc + 1, s - nc - 1);
255 sfputc(sp, '^');
258 sfwrite(sp, nc, s - nc);
260 sfputc(sp, ']');
265 meta(sp, e->re.onechar, type, 0, delimiter);
268 sfputc(sp, '.');
276 sfputc(sp, '*');
278 meta(sp, '+', type, 1, delimiter);
281 meta(sp, '{', type, 1, delimiter);
282 sfprintf(sp, "%d,", e->lo);
283 meta(sp, '}', type, 1, delimiter);
288 meta(sp, '{', type, 1, delimiter);
289 sfprintf(sp, "%d,%d", e->lo, e->hi);
290 meta(sp, '}', type, 1, delimiter);
293 meta(sp, '?', type, 1, delimiter);
296 sfputc(sp, c);
304 meta(sp, c, type, 0, delimiter);
315 sfputc(sp, '|');
318 detrie(e->re.trie.root[c], sp, pfx, pfx, &pfx[sizeof(pfx)], delimiter);
323 sfprintf(sp, "!(");
324 if (decomp(e->re.group.expr.rex, sp, type, delimiter, flags))
327 sfputc(sp, ')');
329 sfputc(sp, '!');
332 if (decomp(e->re.group.expr.binary.left, sp, type, delimiter, flags))
334 sfputc(sp, '&');
335 if (decomp(e->re.group.expr.binary.right, sp, type, delimiter, flags))
340 sfputc(sp, '@');
341 meta(sp, '(', type, 1, delimiter);
342 if (decomp(e->re.group.expr.rex, sp, type, delimiter, flags))
344 meta(sp, ')', type, 1, delimiter);
350 meta(sp, '(', type, 1, delimiter);
351 sfputc(sp, '?');
352 if (decomp(e->re.group.expr.rex, sp, type, delimiter, flags))
354 meta(sp, ')', type, 1, delimiter);
357 meta(sp, '(', type, 1, delimiter);
358 sfputc(sp, '?');
359 if (e->re.group.expr.binary.left && decomp(e->re.group.expr.binary.left, sp, type, delimiter, flags))
363 sfputc(sp, ':');
364 if (q->re.group.expr.binary.left && decomp(q->re.group.expr.binary.left, sp, type, delimiter, flags))
366 sfputc(sp, ':');
367 if (q->re.group.expr.binary.right && decomp(q->re.group.expr.binary.right, sp, type, delimiter, flags))
370 meta(sp, ')', type, 1, delimiter);
373 meta(sp, '(', type, 1, delimiter);
374 sfputc(sp, '?');
375 if (decomp(e->re.group.expr.rex, sp, type, delimiter, flags))
377 meta(sp, ')', type, 1, delimiter);
382 sfprintf(sp, "<ERROR:REX_%d>", e->type);
390 * reconstruct pattern from compiled re p into sp
396 Sfio_t* sp;
402 if (!(sp = sfstropen()))
428 sfputc(sp, delimiter);
432 if (decomp(p->env->rex, sp, type, delimiter, flags))
437 sfputc(sp, delimiter);
438 if ((r = sfstrtell(sp) + 1) <= n)
440 if (!(s = sfstruse(sp)))
446 sfstrclose(sp);