| 675 | } |
| 676 | |
| 677 | static struct grep_expr *compile_pattern_or(struct grep_pat **list) |
| 678 | { |
| 679 | struct grep_pat *p; |
| 680 | struct grep_expr *x, *y; |
| 681 | |
| 682 | x = compile_pattern_and(list); |
| 683 | p = *list; |
| 684 | if (x && p && p->token != GREP_CLOSE_PAREN) { |
| 685 | y = compile_pattern_or(list); |
| 686 | if (!y) |
| 687 | die("not a pattern expression %s", p->pattern); |
| 688 | return grep_or_expr(x, y); |
| 689 | } |
| 690 | return x; |
| 691 | } |
| 692 | |
| 693 | static struct grep_expr *compile_pattern_expr(struct grep_pat **list) |
| 694 | { |
no test coverage detected