#include #include #include static enum bshell_status collect_children( struct bshell_ast_node *node, struct bshell_ast_iterator *it) { struct bshell_op_ast_node *op = (struct bshell_op_ast_node *)node; if (op->n_left) { bshell_ast_iterator_enqueue(it, op->n_left); } if (op->n_right) { bshell_ast_iterator_enqueue(it, op->n_right); } return BSHELL_SUCCESS; } static void to_string(const struct bshell_ast_node *node, fx_bstr *out) { const struct bshell_op_ast_node *op = (const struct bshell_op_ast_node *)node; fx_bstr_write_fmt( out, NULL, "%s", bshell_operator_id_to_string(op->n_op->op_id)); } struct bshell_ast_node_definition op_bshell_ast_node = { .def_id = BSHELL_AST_OP, .def_node_size = sizeof(struct bshell_op_ast_node), .def_collect_children = collect_children, .def_to_string = to_string, };