NOT: NOT atom | atom */
| 1239 | |
| 1240 | /* NOT: NOT atom | atom */ |
| 1241 | static cbm_expr_t *parse_not_expr(parser_t *p) { // NOLINT(misc-no-recursion) |
| 1242 | if (match(p, TOK_NOT)) { |
| 1243 | if (!parse_depth_enter(p)) { |
| 1244 | return NULL; |
| 1245 | } |
| 1246 | cbm_expr_t *child = parse_not_expr(p); |
| 1247 | parse_depth_leave(p); |
| 1248 | return child ? expr_not(child) : NULL; |
| 1249 | } |
| 1250 | return parse_atom_expr(p); |
| 1251 | } |
| 1252 | |
| 1253 | /* AND: not (AND not)* */ |
| 1254 | static cbm_expr_t *parse_and_expr(parser_t *p) { // NOLINT(misc-no-recursion) |
no test coverage detected