void ast_while_print(s_ast_node *node, FILE *fs, unsigned int *node_id) { unsigned int lhs_id, rhs_id, cur_id; if (node->type != T_WHILE) return; fprintf(fs, "%u [label = \"while\"];\n", cur_id = *node_id); lhs_id = ++*node_id; ast_print_node(node->body.child_while.cond, fs, node_id); fprintf(fs, "%u -> %u\n", cur_id, lhs_id); rhs_id = *node_id; ast_print_node(node->body.child_while.exec, fs, node_id); fprintf(fs, "%u -> %u\n", cur_id, rhs_id); }
void ast_pipe_print(s_ast_node *node, FILE *fs, unsigned int *node_id) { unsigned int lhs_id, rhs_id, cur_id; if (node->type != T_PIPE) return; fprintf(fs, "%u [label = \"|\"];\n", cur_id = *node_id); lhs_id = ++*node_id; ast_print_node(node->body.child_pipe.lhs, fs, node_id); fprintf(fs, "%u -> %u\n", cur_id, lhs_id); rhs_id = *node_id; ast_print_node(node->body.child_pipe.rhs, fs, node_id); fprintf(fs, "%u -> %u\n", cur_id, rhs_id); }
void ast_bang_print(s_ast_node *node, FILE *fs, unsigned int *node_id) { unsigned int lhs_id, cur_id; if (node->type != T_BANG) return; fprintf(fs, "%u [label = \"!\"];\n", cur_id = *node_id); lhs_id = ++*node_id; ast_print_node(node->body.child_bang.lhs, fs, node_id); fprintf(fs, "%u -> %u\n", cur_id, lhs_id); }
void ast_print_level(ast_node_t *ast_node, int level) { ast_node_t * aux_son; if (ast_node != NULL) { ast_print_node(ast_node, level); if (ast_node->son) { aux_son = ast_node->son; while (aux_son != NULL) { ast_print_level(aux_son, level + 1); aux_son = aux_son->next; } } } }