Lines Matching refs:bc
108 static bool p_ere_exp(struct parse *p, struct branchc *bc);
110 static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
111 static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
112 static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
113 static bool p_branch_empty(struct parse *p, struct branchc *bc);
114 static bool p_branch_do(struct parse *p, struct branchc *bc);
115 static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
116 static void p_bre_post_parse(struct parse *p, struct branchc *bc);
118 static bool p_simp_re(struct parse *p, struct branchc *bc);
353 p_ere_exp(struct parse *p, struct branchc *bc) in p_ere_exp() argument
363 (void) bc; in p_ere_exp()
529 p_branch_eat_delim(struct parse *p, struct branchc *bc) in p_branch_eat_delim() argument
533 (void) bc; in p_branch_eat_delim()
545 p_branch_ins_offset(struct parse *p, struct branchc *bc) in p_branch_ins_offset() argument
547 if (bc->nbranch == 0) { in p_branch_ins_offset()
548 INSERT(OCH_, bc->start); /* offset is wrong */ in p_branch_ins_offset()
549 bc->fwd = bc->start; in p_branch_ins_offset()
550 bc->back = bc->start; in p_branch_ins_offset()
553 ASTERN(OOR1, bc->back); in p_branch_ins_offset()
554 bc->back = THERE(); in p_branch_ins_offset()
555 AHEAD(bc->fwd); /* fix previous offset */ in p_branch_ins_offset()
556 bc->fwd = HERE(); in p_branch_ins_offset()
558 ++bc->nbranch; in p_branch_ins_offset()
566 p_branch_fix_tail(struct parse *p, struct branchc *bc) in p_branch_fix_tail() argument
569 if (bc->nbranch > 0) { in p_branch_fix_tail()
570 AHEAD(bc->fwd); in p_branch_fix_tail()
571 ASTERN(O_CH, bc->back); in p_branch_fix_tail()
582 p_branch_empty(struct parse *p, struct branchc *bc) in p_branch_empty() argument
584 (void) bc; in p_branch_empty()
595 p_branch_do(struct parse *p, struct branchc *bc) in p_branch_do() argument
599 ate = p_branch_eat_delim(p, bc); in p_branch_do()
602 else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc)) in p_branch_do()
609 p_branch_ins_offset(p, bc); in p_branch_do()
615 p_bre_pre_parse(struct parse *p, struct branchc *bc) in p_bre_pre_parse() argument
617 (void) bc; in p_bre_pre_parse()
631 p_bre_post_parse(struct parse *p, struct branchc *bc) in p_bre_post_parse() argument
634 if (bc->terminate) { in p_bre_post_parse()
655 struct branchc bc; in p_re() local
657 bc.nbranch = 0; in p_re()
659 bc.outer = true; in p_re()
661 bc.outer = false; in p_re()
664 bc.start = HERE(); in p_re()
665 bc.nchain = 0; in p_re()
666 bc.terminate = false; in p_re()
668 p->pre_parse(p, &bc); in p_re()
671 bc.terminate = p->parse_expr(p, &bc); in p_re()
672 ++bc.nchain; in p_re()
675 p->post_parse(p, &bc); in p_re()
676 (void) REQUIRE(HERE() != bc.start, REG_BADPAT); in p_re()
686 if (!p_branch_do(p, &bc)) in p_re()
691 p_branch_fix_tail(p, &bc); in p_re()
699 p_simp_re(struct parse *p, struct branchc *bc) in p_simp_re() argument
785 (void) REQUIRE(bc->nchain == 0, REG_BADRPT); in p_simp_re()