Lines Matching refs:pat
260 static Expr *eall(re_re *r, PATTERN *pat);
261 static Expr *d0(re_re *r, PATTERN *pat);
262 static Expr *d1(re_re *r, PATTERN *pat);
263 static Expr *d2(re_re *r, PATTERN *pat);
264 static Expr *d3(re_re *r, PATTERN *pat);
266 static void lex(re_re *r, PATTERN *pat);
267 static int re_lit(PATTERN *pat, uchar_t **b, uchar_t **e);
268 static void traverse(PATTERN *pat, Expr *e);
269 static int ccl(PATTERN *pat, uchar_t *tab);
271 static BOOL altlist(Expr *e, uchar_t *buf, re_cw *pat);
286 static re_re *egprep(PATTERN *pat);
290 static BOOL re_bmexec(PATTERN *pat, uchar_t *s, uchar_t *e, uchar_t **mb,
292 static BOOL re_cwexec(PATTERN *pat, uchar_t *rs, uchar_t *re, uchar_t **mb,
294 static BOOL re_reexec(PATTERN *pat, uchar_t *b, uchar_t *e, uchar_t **mb,
298 static void dogre(PATTERN *pat);
299 static BOOL pattern_match(PATTERN *pat, LINE *lptr);
301 static BOOL grepmatch(PATTERN *pat, uchar_t **mb, uchar_t **me);
356 dogre(PATTERN *pat) in dogre() argument
361 printf("PATTERN %s\n", pat->expression); in dogre()
363 pat->re_ptr = egprep(pat); in dogre()
364 bestlen = re_lit(pat, &lb, &le); in dogre()
366 if (bestlen && pat->fullmatch) { /* Full Boyer Moore */ in dogre()
375 pat->bm_ptr = re_bmcomp(lb, le, pat->cmap); in dogre()
376 pat->procfn = re_bmexec; in dogre()
381 pat->bm_ptr = re_bmcomp(lb, le, pat->cmap); in dogre()
382 pat->procfn = re_bmexec; in dogre()
383 pat->fullmatch = NO; in dogre()
385 pat->fullmatch = YES; in dogre()
386 if ((pat->cw_ptr = re_recw(pat->re_ptr, pat->cmap)) != NULL) { in dogre()
387 pat->procfn = re_cwexec; /* CW */ in dogre()
392 pat->succfn = re_reexec; in dogre()
394 if (pat->fullmatch) { in dogre()
395 pat->procfn = pat->succfn; in dogre()
396 pat->succfn = NULL; in dogre()
428 grepmatch(PATTERN *pat, uchar_t **mb, uchar_t **me) in grepmatch() argument
432 if (pat->fullmatch) in grepmatch()
441 if ((*pat->succfn)(pat, s, f, mb, me)) { in grepmatch()
487 re_reexec(PATTERN *pat, uchar_t *b, uchar_t *e, uchar_t **mb, uchar_t **me) in re_reexec() argument
489 re_re *r = pat->re_ptr; in re_reexec()
516 c = pat->cmap[*b]; in re_reexec()
902 egprep(PATTERN *pat) in egprep() argument
909 pat->loc1 = pat->expression; in egprep()
910 pat->loc2 = pat->expression + strlen((char *)pat->expression); in egprep()
914 r->cmap = pat->cmap; in egprep()
915 lex(r, pat); in egprep()
916 r->root = newexpr(EOP, '#', eall(r, pat), (Expr *)NULL); in egprep()
947 lex(re_re *r, PATTERN *pat) in lex() argument
949 if (pat->loc1 == pat->loc2) { in lex()
952 } else switch (toklit = *pat->loc1++) { in lex()
962 if (pat->loc1 == pat->loc2) { in lex()
966 toklit = r->cmap[*pat->loc1++]; in lex()
974 ccl(PATTERN *pat, uchar_t *tab) in ccl() argument
983 if (*pat->loc1 == '^') { in ccl()
984 pat->loc1++; in ccl()
987 if (*pat->loc1 == ']') { in ccl()
988 uchar_t c = pat->cmap[*pat->loc1]; in ccl()
990 lastc = *pat->loc1++; in ccl()
993 for (; (pat->loc1 < pat->loc2) && (*pat->loc1 != ']'); in ccl()
994 pat->loc1++) { in ccl()
995 if (*pat->loc1 == '-') { in ccl()
996 if (lastc < 0) CCL_SET(tab, pat->cmap['-']); in ccl()
1001 for (i = *pat->loc1; i >= lastc; i--) { in ccl()
1002 CCL_SET(tab, pat->cmap[i]); in ccl()
1005 uchar_t c = pat->cmap[*pat->loc1]; in ccl()
1011 lastc = *pat->loc1; in ccl()
1013 if (range) CCL_SET(tab, pat->cmap['-']); in ccl()
1015 if (pat->loc1 < pat->loc2) pat->loc1++; in ccl()
1019 CCL_SET(tab, pat->cmap[NL]); in ccl()
1023 if (pat->cmap[i] != i) CCL_CLR(tab, i); in ccl()
1044 d3(re_re *r, PATTERN *pat) in d3() argument
1054 lex(r, pat); in d3()
1058 lex(r, pat); in d3()
1062 count = ccl(pat, tab); in d3()
1072 lex(r, pat); in d3()
1075 lex(r, pat); in d3()
1077 e = d0(r, pat); in d3()
1079 lex(r, pat); in d3()
1091 d2(re_re *r, PATTERN *pat) in d2() argument
1096 e = d3(r, pat); in d2()
1099 lex(r, pat); in d2()
1106 d1(re_re *r, PATTERN *pat) in d1() argument
1110 e = d2(r, pat); in d1()
1113 f = d2(r, pat); in d1()
1120 d0(re_re *r, PATTERN *pat) in d0() argument
1124 e = d1(r, pat); in d0()
1126 lex(r, pat); in d0()
1129 f = d1(r, pat); in d0()
1136 eall(re_re *r, PATTERN *pat) in eall() argument
1141 lex(r, pat); in eall()
1142 e = d0(r, pat); in eall()
1144 lex(r, pat); in eall()
1158 re_lit(PATTERN *pat, uchar_t **b, uchar_t **e) in re_lit() argument
1161 pat->fullmatch = YES; in re_lit()
1163 traverse(pat, pat->re_ptr->root->l); in re_lit()
1174 traverse(PATTERN *pat, Expr *e) in traverse() argument
1181 traverse(pat, e->l); in traverse()
1182 traverse(pat, e->r); in traverse()
1185 traverse(pat, e->l); in traverse()
1187 pat->fullmatch = NO; in traverse()
1189 traverse(pat, e->l); in traverse()
1193 pat->fullmatch = NO; in traverse()
1251 re_bmexec(PATTERN *pat, uchar_t *s, uchar_t *e, uchar_t **mb, uchar_t **me) in re_bmexec() argument
1253 re_bm *b = pat->bm_ptr; in re_bmexec()
1270 if (grepmatch(pat, mb, me)) in re_bmexec()
1291 re_cw *pat; in re_recw() local
1297 pat = re_cwinit(map); in re_recw()
1299 if (!altlist(e, buf, pat)) { in re_recw()
1302 re_cwcomp(pat); in re_recw()
1303 return (pat); in re_recw()
1307 altlist(Expr *e, uchar_t *buf, re_cw *pat) in altlist() argument
1310 return ((BOOL)(altlist(e->l, buf, pat) && in altlist()
1311 altlist(e->r, buf, pat))); in altlist()
1312 return (word(e, buf, pat)); in altlist()
1316 word(Expr *e, uchar_t *buf, re_cw *pat) in word() argument
1323 if (!word(e->l, (uchar_t *)NULL, pat)) in word()
1325 if (!word(e->r, (uchar_t *)NULL, pat)) in word()
1333 re_cwadd(pat, buf, p); in word()
1545 re_cwexec(PATTERN *pat, uchar_t *rs, uchar_t *re, uchar_t **mb, uchar_t **me) in re_cwexec() argument
1554 re_cw *c = pat->cw_ptr; in re_cwexec()
1766 pattern_match(PATTERN *pat, LINE *lptr) in pattern_match() argument
1768 if ((*pat->procfn)(pat, lptr->prntbuf - 1, lptr->newline + 1, in pattern_match()
1769 &pat->loc1, &pat->loc2)) { in pattern_match()
1772 pat->loc1 = lptr->prntbuf; in pattern_match()
1773 pat->loc2 = lptr->newline - 1; in pattern_match()