grep: extract grep_binexp() from grep_or_expr()

When constructing an OR node, the grep.c code uses `grep_or_expr()` to make a node, assign its kind, and set its left and right children. The same is not done for AND nodes. Prepare to introduce a new `grep_and_expr()` function which will share code with the existing implementation of `grep_or_expr()` by introducing a new function which compiles either kind of binary expression, and reimplement `grep_or_expr()` in terms of it. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Jan 6, 2022 at 14:50 UTC f2d275984d2b931b51f39d4019e78031a36cb2f0
1 file changed +9 -2
grep.c
+9 -2
@@ -603,15 +603,22 @@ static struct grep_expr *grep_not_expr(struct grep_expr *expr)
603 return z;
604 }
605
606 -static struct grep_expr *grep_or_expr(struct grep_expr *left, struct grep_expr *right)
606 +static struct grep_expr *grep_binexp(enum grep_expr_node kind,
607 + struct grep_expr *left,
608 + struct grep_expr *right)
609 {
610 struct grep_expr *z = xcalloc(1, sizeof(*z));
609 - z->node = GREP_NODE_OR;
611 + z->node = kind;
612 z->u.binary.left = left;
613 z->u.binary.right = right;
614 return z;
615 }
616
617 +static struct grep_expr *grep_or_expr(struct grep_expr *left, struct grep_expr *right)
618 +{
619 + return grep_binexp(GREP_NODE_OR, left, right);
620 +}
621 +
622 static struct grep_expr *compile_pattern_or(struct grep_pat **);
623 static struct grep_expr *compile_pattern_atom(struct grep_pat **list)
624 {