Lines Matching refs:pat

257 static Expr *eall(re_re *r, PATTERN *pat);
258 static Expr *d0(re_re *r, PATTERN *pat);
259 static Expr *d1(re_re *r, PATTERN *pat);
260 static Expr *d2(re_re *r, PATTERN *pat);
261 static Expr *d3(re_re *r, PATTERN *pat);
263 static void lex(re_re *r, PATTERN *pat);
264 static int re_lit(PATTERN *pat, uchar_t **b, uchar_t **e);
265 static void traverse(PATTERN *pat, Expr *e);
266 static int ccl(PATTERN *pat, uchar_t *tab);
268 static BOOL altlist(Expr *e, uchar_t *buf, re_cw *pat);
283 static re_re *egprep(PATTERN *pat);
287 static BOOL re_bmexec(PATTERN *pat, uchar_t *s, uchar_t *e, uchar_t **mb,
289 static BOOL re_cwexec(PATTERN *pat, uchar_t *rs, uchar_t *re, uchar_t **mb,
291 static BOOL re_reexec(PATTERN *pat, uchar_t *b, uchar_t *e, uchar_t **mb,
295 static void dogre(PATTERN *pat);
296 static BOOL pattern_match(PATTERN *pat, LINE *lptr);
298 static BOOL grepmatch(PATTERN *pat, uchar_t **mb, uchar_t **me);
353 dogre(PATTERN *pat) in dogre() argument
358 printf("PATTERN %s\n", pat->expression); in dogre()
360 pat->re_ptr = egprep(pat); in dogre()
361 bestlen = re_lit(pat, &lb, &le); in dogre()
363 if (bestlen && pat->fullmatch) { /* Full Boyer Moore */ in dogre()
372 pat->bm_ptr = re_bmcomp(lb, le, pat->cmap); in dogre()
373 pat->procfn = re_bmexec; in dogre()
378 pat->bm_ptr = re_bmcomp(lb, le, pat->cmap); in dogre()
379 pat->procfn = re_bmexec; in dogre()
380 pat->fullmatch = NO; in dogre()
382 pat->fullmatch = YES; in dogre()
383 if ((pat->cw_ptr = re_recw(pat->re_ptr, pat->cmap)) != NULL) { in dogre()
384 pat->procfn = re_cwexec; /* CW */ in dogre()
389 pat->succfn = re_reexec; in dogre()
391 if (pat->fullmatch) { in dogre()
392 pat->procfn = pat->succfn; in dogre()
393 pat->succfn = NULL; in dogre()
425 grepmatch(PATTERN *pat, uchar_t **mb, uchar_t **me) in grepmatch() argument
429 if (pat->fullmatch) in grepmatch()
438 if ((*pat->succfn)(pat, s, f, mb, me)) { in grepmatch()
484 re_reexec(PATTERN *pat, uchar_t *b, uchar_t *e, uchar_t **mb, uchar_t **me) in re_reexec() argument
486 re_re *r = pat->re_ptr; in re_reexec()
513 c = pat->cmap[*b]; in re_reexec()
897 egprep(PATTERN *pat) in egprep() argument
904 pat->loc1 = pat->expression; in egprep()
905 pat->loc2 = pat->expression + strlen((char *)pat->expression); in egprep()
909 r->cmap = pat->cmap; in egprep()
910 lex(r, pat); in egprep()
911 r->root = newexpr(EOP, '#', eall(r, pat), (Expr *)NULL); in egprep()
942 lex(re_re *r, PATTERN *pat) in lex() argument
944 if (pat->loc1 == pat->loc2) { in lex()
947 } else switch (toklit = *pat->loc1++) { in lex()
957 if (pat->loc1 == pat->loc2) { in lex()
961 toklit = r->cmap[*pat->loc1++]; in lex()
970 ccl(PATTERN *pat, uchar_t *tab) in ccl() argument
979 if (*pat->loc1 == '^') { in ccl()
980 pat->loc1++; in ccl()
983 if (*pat->loc1 == ']') { in ccl()
984 uchar_t c = pat->cmap[*pat->loc1]; in ccl()
986 lastc = *pat->loc1++; in ccl()
989 for (; (pat->loc1 < pat->loc2) && (*pat->loc1 != ']'); pat->loc1++) { in ccl()
990 if (*pat->loc1 == '-') { in ccl()
991 if (lastc < 0) CCL_SET(tab, pat->cmap['-']); in ccl()
996 for (i = *pat->loc1; i >= lastc; i--) { in ccl()
997 CCL_SET(tab, pat->cmap[i]); in ccl()
1000 uchar_t c = pat->cmap[*pat->loc1]; in ccl()
1006 lastc = *pat->loc1; in ccl()
1008 if (range) CCL_SET(tab, pat->cmap['-']); in ccl()
1010 if (pat->loc1 < pat->loc2) pat->loc1++; in ccl()
1014 CCL_SET(tab, pat->cmap[NL]); in ccl()
1018 if (pat->cmap[i] != i) CCL_CLR(tab, i); in ccl()
1039 d3(re_re *r, PATTERN *pat) in d3() argument
1049 lex(r, pat); in d3()
1053 lex(r, pat); in d3()
1057 count = ccl(pat, tab); in d3()
1067 lex(r, pat); in d3()
1070 lex(r, pat); in d3()
1072 e = d0(r, pat); in d3()
1074 lex(r, pat); in d3()
1086 d2(re_re *r, PATTERN *pat) in d2() argument
1091 e = d3(r, pat); in d2()
1094 lex(r, pat); in d2()
1101 d1(re_re *r, PATTERN *pat) in d1() argument
1105 e = d2(r, pat); in d1()
1108 f = d2(r, pat); in d1()
1115 d0(re_re *r, PATTERN *pat) in d0() argument
1119 e = d1(r, pat); in d0()
1121 lex(r, pat); in d0()
1124 f = d1(r, pat); in d0()
1131 eall(re_re *r, PATTERN *pat) in eall() argument
1136 lex(r, pat); in eall()
1137 e = d0(r, pat); in eall()
1139 lex(r, pat); in eall()
1153 re_lit(PATTERN *pat, uchar_t **b, uchar_t **e) in re_lit() argument
1156 pat->fullmatch = YES; in re_lit()
1158 traverse(pat, pat->re_ptr->root->l); in re_lit()
1169 traverse(PATTERN *pat, Expr *e) in traverse() argument
1176 traverse(pat, e->l); in traverse()
1177 traverse(pat, e->r); in traverse()
1180 traverse(pat, e->l); in traverse()
1182 pat->fullmatch = NO; in traverse()
1184 traverse(pat, e->l); in traverse()
1188 pat->fullmatch = NO; in traverse()
1246 re_bmexec(PATTERN *pat, uchar_t *s, uchar_t *e, uchar_t **mb, uchar_t **me) in re_bmexec() argument
1248 re_bm *b = pat->bm_ptr; in re_bmexec()
1265 if (grepmatch(pat, mb, me)) in re_bmexec()
1286 re_cw *pat; in re_recw() local
1292 pat = re_cwinit(map); in re_recw()
1294 if (!altlist(e, buf, pat)) { in re_recw()
1297 re_cwcomp(pat); in re_recw()
1298 return (pat); in re_recw()
1302 altlist(Expr *e, uchar_t *buf, re_cw *pat) in altlist() argument
1305 return ((BOOL)(altlist(e->l, buf, pat) && in altlist()
1306 altlist(e->r, buf, pat))); in altlist()
1307 return (word(e, buf, pat)); in altlist()
1311 word(Expr *e, uchar_t *buf, re_cw *pat) in word() argument
1318 if (!word(e->l, (uchar_t *)NULL, pat)) in word()
1320 if (!word(e->r, (uchar_t *)NULL, pat)) in word()
1328 re_cwadd(pat, buf, p); in word()
1540 re_cwexec(PATTERN *pat, uchar_t *rs, uchar_t *re, uchar_t **mb, uchar_t **me) in re_cwexec() argument
1549 re_cw *c = pat->cw_ptr; in re_cwexec()
1761 pattern_match(PATTERN *pat, LINE *lptr) in pattern_match() argument
1763 if ((*pat->procfn)(pat, lptr->prntbuf - 1, lptr->newline + 1, in pattern_match()
1764 &pat->loc1, &pat->loc2)) { in pattern_match()
1767 pat->loc1 = lptr->prntbuf; in pattern_match()
1768 pat->loc2 = lptr->newline - 1; in pattern_match()