Lines Matching defs:bc
134 static bool p_ere_exp(struct parse *p, struct branchc *bc);
136 static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
137 static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
138 static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
139 static bool p_branch_empty(struct parse *p, struct branchc *bc);
140 static bool p_branch_do(struct parse *p, struct branchc *bc);
141 static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
142 static void p_bre_post_parse(struct parse *p, struct branchc *bc);
144 static bool p_simp_re(struct parse *p, struct branchc *bc);
441 p_ere_exp(struct parse *p, struct branchc *bc)
457 (void)bc;
704 p_branch_eat_delim(struct parse *p, struct branchc *bc)
708 (void)bc;
720 p_branch_ins_offset(struct parse *p, struct branchc *bc)
723 if (bc->nbranch == 0) {
724 INSERT(OCH_, bc->start); /* offset is wrong */
725 bc->fwd = bc->start;
726 bc->back = bc->start;
729 ASTERN(OOR1, bc->back);
730 bc->back = THERE();
731 AHEAD(bc->fwd); /* fix previous offset */
732 bc->fwd = HERE();
734 ++bc->nbranch;
742 p_branch_fix_tail(struct parse *p, struct branchc *bc)
746 if (bc->nbranch > 0) {
747 AHEAD(bc->fwd);
748 ASTERN(O_CH, bc->back);
759 p_branch_empty(struct parse *p, struct branchc *bc)
762 (void)bc;
773 p_branch_do(struct parse *p, struct branchc *bc)
777 ate = p_branch_eat_delim(p, bc);
780 else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc))
787 p_branch_ins_offset(p, bc);
793 p_bre_pre_parse(struct parse *p, struct branchc *bc)
796 (void)bc;
810 p_bre_post_parse(struct parse *p, struct branchc *bc)
814 if (bc->terminate) {
836 struct branchc bc;
838 bc.nbranch = 0;
840 bc.outer = true;
842 bc.outer = false;
845 bc.start = HERE();
846 bc.nchain = 0;
847 bc.terminate = false;
849 p->pre_parse(p, &bc);
851 bc.terminate = p->parse_expr(p, &bc);
852 ++bc.nchain;
855 p->post_parse(p, &bc);
856 (void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY);
858 if (p->gnuext && HERE() == bc.start && !p_branch_empty(p, &bc))
870 if (!p_branch_do(p, &bc))
875 p_branch_fix_tail(p, &bc);
881 == static bool p_simp_re(struct parse *p, struct branchc *bc);
884 p_simp_re(struct parse *p, struct branchc *bc)
1023 (void)REQUIRE(bc->nchain == 0, REG_BADRPT);