diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-01-07 12:19:17 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-01-07 12:19:17 -0500 |
commit | 4a36bb92a5bbdc41965a6d2c6eae6cdca5983474 (patch) | |
tree | 1f2767e349ece3229a8da22ba58d905309e99dfa /src/diag.c | |
parent | 70acbc194fa1cc4972293d4e3affee5ba6fe5539 (diff) | |
download | bfs-4a36bb92a5bbdc41965a6d2c6eae6cdca5983474.tar.xz |
expr: Make expressions variadic
Rather than only unary/binary expressions, we now support an arbitrary
number of children. The optimizer has been re-written almost completely
and now supports optimal reordering of longer expression chains, rather
than just arm-swapping.
Fixes #85.
Diffstat (limited to 'src/diag.c')
-rw-r--r-- | src/diag.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -158,9 +158,8 @@ static bool highlight_expr_recursive(const struct bfs_ctx *ctx, const struct bfs } } - if (bfs_expr_is_parent(expr)) { - ret |= highlight_expr_recursive(ctx, expr->lhs, args); - ret |= highlight_expr_recursive(ctx, expr->rhs, args); + for (struct bfs_expr *child = bfs_expr_children(expr); child; child = child->next) { + ret |= highlight_expr_recursive(ctx, child, args); } return ret; |