Lines Matching refs:bc
112 static bool p_ere_exp(struct parse *p, struct branchc *bc);
114 static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
115 static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
116 static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
117 static bool p_branch_empty(struct parse *p, struct branchc *bc);
118 static bool p_branch_do(struct parse *p, struct branchc *bc);
119 static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
120 static void p_bre_post_parse(struct parse *p, struct branchc *bc);
122 static bool p_simp_re(struct parse *p, struct branchc *bc);
388 p_ere_exp(struct parse *p, struct branchc *bc) in p_ere_exp() argument
402 (void)bc; in p_ere_exp()
643 p_branch_eat_delim(struct parse *p, struct branchc *bc) in p_branch_eat_delim() argument
647 (void)bc; in p_branch_eat_delim()
659 p_branch_ins_offset(struct parse *p, struct branchc *bc) in p_branch_ins_offset() argument
662 if (bc->nbranch == 0) { in p_branch_ins_offset()
663 INSERT(OCH_, bc->start); /* offset is wrong */ in p_branch_ins_offset()
664 bc->fwd = bc->start; in p_branch_ins_offset()
665 bc->back = bc->start; in p_branch_ins_offset()
668 ASTERN(OOR1, bc->back); in p_branch_ins_offset()
669 bc->back = THERE(); in p_branch_ins_offset()
670 AHEAD(bc->fwd); /* fix previous offset */ in p_branch_ins_offset()
671 bc->fwd = HERE(); in p_branch_ins_offset()
673 ++bc->nbranch; in p_branch_ins_offset()
681 p_branch_fix_tail(struct parse *p, struct branchc *bc) in p_branch_fix_tail() argument
685 if (bc->nbranch > 0) { in p_branch_fix_tail()
686 AHEAD(bc->fwd); in p_branch_fix_tail()
687 ASTERN(O_CH, bc->back); in p_branch_fix_tail()
698 p_branch_empty(struct parse *p, struct branchc *bc) in p_branch_empty() argument
701 (void)bc; in p_branch_empty()
712 p_branch_do(struct parse *p, struct branchc *bc) in p_branch_do() argument
716 ate = p_branch_eat_delim(p, bc); in p_branch_do()
719 else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc)) in p_branch_do()
726 p_branch_ins_offset(p, bc); in p_branch_do()
732 p_bre_pre_parse(struct parse *p, struct branchc *bc) in p_bre_pre_parse() argument
735 (void) bc; in p_bre_pre_parse()
749 p_bre_post_parse(struct parse *p, struct branchc *bc) in p_bre_post_parse() argument
753 if (bc->terminate) { in p_bre_post_parse()
775 struct branchc bc; in p_re() local
777 bc.nbranch = 0; in p_re()
779 bc.outer = true; in p_re()
781 bc.outer = false; in p_re()
784 bc.start = HERE(); in p_re()
785 bc.nchain = 0; in p_re()
786 bc.terminate = false; in p_re()
788 p->pre_parse(p, &bc); in p_re()
790 bc.terminate = p->parse_expr(p, &bc); in p_re()
791 ++bc.nchain; in p_re()
794 p->post_parse(p, &bc); in p_re()
795 (void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY); in p_re()
797 if (HERE() == bc.start && !p_branch_empty(p, &bc)) in p_re()
809 if (!p_branch_do(p, &bc)) in p_re()
814 p_branch_fix_tail(p, &bc); in p_re()
823 p_simp_re(struct parse *p, struct branchc *bc) in p_simp_re() argument
944 (void)REQUIRE(bc->nchain == 0, REG_BADRPT); in p_simp_re()