diff --git a/src/main.c b/src/main.c index b664786..189f9db 100644 --- a/src/main.c +++ b/src/main.c @@ -60,6 +60,11 @@ int main(int argc, char **argv) // Call the parser to get the AST struct ast *command_ast = get_ast(); // We'll pass the options later + if (options.pretty_print) + { + ast_print_dot(command_ast); + } + // Call the executor with the AST r = execution(command_ast); diff --git a/src/parser/parser.c b/src/parser/parser.c index 30cecdd..8468b20 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -11,4 +11,4 @@ struct ast *get_ast_str(char *command) { (void)command; return NULL; -} +} \ No newline at end of file diff --git a/src/utils/ast/ast.c b/src/utils/ast/ast.c index 4019e44..cd875e7 100644 --- a/src/utils/ast/ast.c +++ b/src/utils/ast/ast.c @@ -1,10 +1,10 @@ +#include "ast.h" + #include #include #include #include -#include "ast.h" - static void ast_print_dot_recursive(struct ast *node, FILE *out) { if (!node) @@ -12,8 +12,7 @@ static void ast_print_dot_recursive(struct ast *node, FILE *out) switch (node->type) { - case AST_IF: - { + case AST_IF: { struct ast_if *if_data = ast_get_if(node); fprintf(out, " node%p [label=\"IF\"];\n", (void *)node); @@ -21,28 +20,30 @@ static void ast_print_dot_recursive(struct ast *node, FILE *out) { fprintf(out, " node%p -> node%p;\n", (void *)node, (void *)if_data->condition); - fprintf(out, " node%p [fillcolor=\"lightyellow\", style=\"filled\"];\n", + fprintf(out, + " node%p [fillcolor=\"lightyellow\", style=\"filled\"];\n", (void *)if_data->condition); ast_print_dot_recursive(if_data->condition, out); if (if_data->then_clause) { fprintf(out, " node%p -> node%p [label=\"true\"];\n", - (void *)if_data->condition, (void *)if_data->then_clause); + (void *)if_data->condition, + (void *)if_data->then_clause); ast_print_dot_recursive(if_data->then_clause, out); } if (if_data->else_clause) { fprintf(out, " node%p -> node%p [label=\"false\"];\n", - (void *)if_data->condition, (void *)if_data->else_clause); + (void *)if_data->condition, + (void *)if_data->else_clause); ast_print_dot_recursive(if_data->else_clause, out); } } break; } - case AST_CMD: - { + case AST_CMD: { struct ast_cmd *cmd_data = ast_get_cmd(node); fprintf(out, " node%p [label=\"", (void *)node); struct list *l = cmd_data->cmd; @@ -66,14 +67,6 @@ static void ast_print_dot_recursive(struct ast *node, FILE *out) void ast_print_dot(struct ast *ast) { - // Always print to stdout so the user can see it in the terminal - printf("digraph AST {\n"); - if (ast) - { - ast_print_dot_recursive(ast, stdout); - } - printf("}\n"); - if (!ast) return;