Lines Matching refs:fpos
255 static BOOL first_lit(Positionset *fpos, Expr *e);
257 static void efollow(re_re *r, Positionset *fpos, Expr *e);
258 static void follow(Positionset *fpos, Expr *e);
259 static void followstate(re_re *r, State *s, int a, Positionset *fpos);
548 * generates the followset for a node in fpos
551 follow(Positionset *fpos, Expr *e)
561 SET(fpos, p->id, 0)
565 (void) first_lit(fpos, e);
566 follow(fpos, p);
570 follow(fpos, p);
573 if (e == p->r || !first_lit(fpos, p->r))
574 follow(fpos, p);
583 * ets up fpos.
586 first_lit(Positionset *fpos, Expr *e)
594 SET(fpos, e->id, 0)
599 (void) first_lit(fpos, e->l);
602 return (first_lit(fpos, e->l));
604 return ((BOOL)(first_lit(fpos, e->l) || first_lit(fpos, e->r)));
606 k = first_lit(fpos, e->r);
607 return ((BOOL)(first_lit(fpos, e->l) && k));
615 efollow(re_re *r, Positionset *fpos, Expr *e)
619 CLEAR(r, fpos);
620 follow(fpos, e);
621 e->flen = fpos->count;
627 for (i = fpos->last; i > 0; i = fpos->base[i].id) {
707 followstate(re_re *r, State *s, int a, Positionset *fpos)
719 SET(fpos, *q, r->posbase[j].fcount + 1)