8
- regprint - print a regexp for debugging
9
== void regprint(regex_t *r, FILE *d);
16
register struct re_guts *g = r->re_g;
22
fprintf(d, "%ld states, %d categories", (long)g->nstates,
24
fprintf(d, ", first %ld last %ld", (long)g->firststate,
27
fprintf(d, ", USEBOL");
29
fprintf(d, ", USEEOL");
33
fprintf(d, ", nsub=%ld", (long)g->nsub);
35
fprintf(d, ", must(%ld) `%*s'", (long)g->mlen, (int)g->mlen,
38
fprintf(d, ", backrefs");
40
fprintf(d, ", nplus %ld", (long)g->nplus);
43
for (i = 0; i < g->ncategories; i++) {
45
for (c = CHAR_MIN; c <= CHAR_MAX; c++)
46
if (g->categories[c] == i)
49
fprintf(d, "cc0#%d", nincat[0]);
50
for (i = 1; i < g->ncategories; i++)
52
for (c = CHAR_MIN; c <= CHAR_MAX; c++)
53
if (g->categories[c] == i)
55
fprintf(d, ", %d=%s", i, regchar(c));
58
for (i = 1; i < g->ncategories; i++)
60
fprintf(d, "cc%d\t", i);
62
for (c = CHAR_MIN; c <= CHAR_MAX+1; c++) /* +1 does flush */
63
if (c <= CHAR_MAX && g->categories[c] == i) {
65
fprintf(d, "%s", regchar(c));
81
- s_print - print the strip for debugging
82
== static void s_print(register struct re_guts *g, FILE *d);
86
register struct re_guts *g;
92
register int done = 0;
96
register sopno offset = 2;
97
# define GAP() { if (offset % 5 == 0) { \
110
if (OP(g->strip[0]) != OEND)
111
fprintf(d, "missing initial OEND!\n");
112
for (s = &g->strip[1]; !done; s++) {
120
if (strchr("\\|()^$.[+*?{}!<> ", (char)opnd) != NULL)
121
fprintf(d, "\\%c", (char)opnd);
123
fprintf(d, "%s", regchar((char)opnd));
141
fprintf(d, "[(%ld)", (long)opnd);
144
for (i = 0; i < g->csetsize+1; i++) /* +1 flushes */
145
if (CHIN(cs, i) && i < g->csetsize) {
147
fprintf(d, "%s", regchar(i));
161
fprintf(d, "(\\<%ld>", (long)opnd);
164
fprintf(d, "<%ld>\\)", (long)opnd);
168
if (OP(*(s+opnd)) != O_PLUS)
169
fprintf(d, "<%ld>", (long)opnd);
172
if (OP(*(s-opnd)) != OPLUS_)
173
fprintf(d, "<%ld>", (long)opnd);
178
if (OP(*(s+opnd)) != O_QUEST)
179
fprintf(d, "<%ld>", (long)opnd);
182
if (OP(*(s-opnd)) != OQUEST_)
183
fprintf(d, "<%ld>", (long)opnd);
187
fprintf(d, "((<%ld>", (long)opnd);
190
fprintf(d, "<%ld>))", (long)opnd);
194
if (OP(*(s+opnd)) != OOR2)
195
fprintf(d, "<%ld>", (long)opnd);
198
if (OP(*(s-opnd)) != OOR1 && OP(*(s-opnd)) != OCH_)
199
fprintf(d, "<%ld>", (long)opnd);
204
if (OP(*(s+opnd)) != OOR2 && OP(*(s+opnd)) != O_CH)
205
fprintf(d, "<%ld>", (long)opnd);
208
if (OP(*(s-opnd)) != OOR1)
209
fprintf(d, "<%ld>", (long)opnd);
213
fprintf(d, "!%ld(%ld)!", OP(*s), opnd);
222
- regchar - make a character printable
223
== static char *regchar(int ch);
225
static char * /* -> representation */
231
if (isprint(ch) || ch == ' ')
232
sprintf(buf, "%c", ch);
234
sprintf(buf, "\\%o", ch);