Lines Matching refs:g

91 	struct re_guts *g;  member
143 static void stripsnug(struct parse *p, struct re_guts *g);
144 static void findmust(struct parse *p, struct re_guts *g);
146 static void computejumps(struct parse *p, struct re_guts *g);
147 static void computematchjumps(struct parse *p, struct re_guts *g);
148 static sopno pluscount(struct parse *p, struct re_guts *g);
204 struct re_guts *g; in regcomp() local
241 g = (struct re_guts *)malloc(sizeof (struct re_guts)); in regcomp()
242 if (g == NULL) in regcomp()
244 g->mb_cur_max = MB_CUR_MAX; in regcomp()
256 free((char *)g); in regcomp()
265 free((char *)g); in regcomp()
270 p->g = g; in regcomp()
292 g->sets = NULL; in regcomp()
293 g->ncsets = 0; in regcomp()
294 g->cflags = cflags; in regcomp()
295 g->iflags = 0; in regcomp()
296 g->nbol = 0; in regcomp()
297 g->neol = 0; in regcomp()
298 g->must = NULL; in regcomp()
299 g->moffset = -1; in regcomp()
300 g->charjump = NULL; in regcomp()
301 g->matchjump = NULL; in regcomp()
302 g->mlen = 0; in regcomp()
303 g->nsub = 0; in regcomp()
304 g->backrefs = 0; in regcomp()
308 g->firststate = THERE(); in regcomp()
314 g->laststate = THERE(); in regcomp()
317 stripsnug(p, g); in regcomp()
318 findmust(p, g); in regcomp()
323 if (g->mlen > 3) { in regcomp()
324 computejumps(p, g); in regcomp()
325 computematchjumps(p, g); in regcomp()
326 if (g->matchjump == NULL && g->charjump != NULL) { in regcomp()
327 free(g->charjump); in regcomp()
328 g->charjump = NULL; in regcomp()
331 g->nplus = pluscount(p, g); in regcomp()
332 g->magic = MAGIC2; in regcomp()
333 preg->re_nsub = g->nsub; in regcomp()
334 preg->re_g = g; in regcomp()
338 if (g->iflags&BAD) in regcomp()
371 p->g->nsub++; in p_ere_exp()
372 subno = p->g->nsub; in p_ere_exp()
399 p->g->iflags |= USEBOL; in p_ere_exp()
400 p->g->nbol++; in p_ere_exp()
405 p->g->iflags |= USEEOL; in p_ere_exp()
406 p->g->neol++; in p_ere_exp()
418 if (p->g->cflags&REG_NEWLINE) in p_ere_exp()
625 p->g->iflags |= USEBOL; in p_bre_pre_parse()
626 p->g->nbol++; in p_bre_pre_parse()
637 p->g->iflags |= USEEOL; in p_bre_post_parse()
638 p->g->neol++; in p_bre_post_parse()
720 if (p->g->cflags&REG_NEWLINE) in p_simp_re()
738 p->g->nsub++; in p_simp_re()
739 subno = p->g->nsub; in p_simp_re()
768 assert(i <= p->g->nsub); in p_simp_re()
777 p->g->backrefs = 1; in p_simp_re()
867 if (p->g->cflags&REG_ICASE) in p_bracket()
884 if (cs->invert && p->g->cflags&REG_NEWLINE) in p_bracket()
891 EMIT(OANYOF, (int)(cs - p->g->sets)); in p_bracket()
1114 if ((p->g->cflags&REG_ICASE) && iswalpha(ch) && othercase(ch) != ch) in ordinary()
1126 EMIT(OANYOF, (int)(cs - p->g->sets)); in ordinary()
1269 ncs = realloc(p->g->sets, (p->g->ncsets + 1) * sizeof (*ncs)); in allocset()
1274 p->g->sets = ncs; in allocset()
1275 cs = &p->g->sets[p->g->ncsets++]; in allocset()
1287 cset *top = &p->g->sets[p->g->ncsets]; in freeset()
1294 p->g->ncsets--; in freeset()
1532 stripsnug(struct parse *p, struct re_guts *g) in stripsnug() argument
1534 g->nstates = p->slen; in stripsnug()
1535 g->strip = (sop *)realloc((char *)p->strip, p->slen * sizeof (sop)); in stripsnug()
1536 if (g->strip == NULL) { in stripsnug()
1538 g->strip = p->strip; in stripsnug()
1552 findmust(struct parse *p, struct re_guts *g) in findmust() argument
1575 if (g->mb_cur_max > 1 && in findmust()
1582 g->moffset = 0; in findmust()
1583 scan = g->strip + 1; in findmust()
1611 g->iflags |= BAD; in findmust()
1623 if (newlen > (sopno)g->mlen) { /* ends one */ in findmust()
1625 g->mlen = newlen; in findmust()
1627 g->moffset += offset; in findmust()
1630 g->moffset = offset; in findmust()
1638 if (newlen > (sopno)g->mlen) { /* ends one */ in findmust()
1640 g->mlen = newlen; in findmust()
1642 g->moffset += offset; in findmust()
1645 g->moffset = offset; in findmust()
1656 if (newlen > (sopno)g->mlen) { /* ends one */ in findmust()
1658 g->mlen = newlen; in findmust()
1660 g->moffset += offset; in findmust()
1663 g->moffset = offset; in findmust()
1680 if (newlen > (sopno)g->mlen) { /* ends one */ in findmust()
1682 g->mlen = newlen; in findmust()
1684 g->moffset += offset; in findmust()
1686 g->moffset = offset; in findmust()
1694 if (g->mlen == 0) { /* there isn't one */ in findmust()
1695 g->moffset = -1; in findmust()
1700 g->must = malloc((size_t)g->mlen + 1); in findmust()
1701 if (g->must == NULL) { /* argh; just forget it */ in findmust()
1702 g->mlen = 0; in findmust()
1703 g->moffset = -1; in findmust()
1706 cp = g->must; in findmust()
1709 while (cp < g->must + g->mlen) { in findmust()
1716 assert(cp == g->must + g->mlen); in findmust()
1803 computejumps(struct parse *p, struct re_guts *g) in computejumps() argument
1812 g->charjump = (int *)malloc((NC_MAX + 1) * sizeof (int)); in computejumps()
1813 if (g->charjump == NULL) /* Not a fatal error */ in computejumps()
1816 g->charjump = &g->charjump[-(CHAR_MIN)]; in computejumps()
1823 g->charjump[ch] = g->mlen; in computejumps()
1831 for (mindex = 0; mindex < g->mlen; mindex++) in computejumps()
1832 g->charjump[(int)g->must[mindex]] = g->mlen - mindex - 1; in computejumps()
1848 computematchjumps(struct parse *p, struct re_guts *g) in computematchjumps() argument
1864 pmatches = (int *)malloc(g->mlen * sizeof (unsigned int)); in computematchjumps()
1866 g->matchjump = NULL; in computematchjumps()
1870 g->matchjump = (int *)malloc(g->mlen * sizeof (unsigned int)); in computematchjumps()
1871 if (g->matchjump == NULL) { /* Not a fatal error */ in computematchjumps()
1877 for (mindex = 0; mindex < g->mlen; mindex++) in computematchjumps()
1878 g->matchjump[mindex] = 2*g->mlen - mindex - 1; in computematchjumps()
1881 for (mindex = g->mlen - 1, suffix = g->mlen; mindex >= 0; in computematchjumps()
1892 while (suffix < g->mlen && g->must[mindex] != g->must[suffix]) { in computematchjumps()
1893 g->matchjump[suffix] = MIN(g->matchjump[suffix], in computematchjumps()
1894 g->mlen - mindex - 1); in computematchjumps()
1905 g->matchjump[mindex] = MIN(g->matchjump[mindex], in computematchjumps()
1906 g->mlen + suffix - mindex); in computematchjumps()
1909 while (suffix < g->mlen) { in computematchjumps()
1910 while (suffix <= ssuffix && suffix < g->mlen) { in computematchjumps()
1911 g->matchjump[suffix] = MIN(g->matchjump[suffix], in computematchjumps()
1912 g->mlen + ssuffix - suffix); in computematchjumps()
1915 if (suffix < g->mlen) in computematchjumps()
1926 pluscount(struct parse *p, struct re_guts *g) in pluscount() argument
1936 scan = g->strip + 1; in pluscount()
1951 g->iflags |= BAD; in pluscount()