diff options
Diffstat (limited to 'src/print.c')
-rw-r--r-- | src/print.c | 48 |
1 files changed, 12 insertions, 36 deletions
diff --git a/src/print.c b/src/print.c index b2d4f32..65cfb66 100644 --- a/src/print.c +++ b/src/print.c @@ -2,56 +2,32 @@ #include "./include/ast.h" #include <stdio.h> -void print_string(ast_t *str) { printf("%s\n", str->string_value); } +void print_string(ast_t *str) { printf("%s", str->string_value); } -void print_int(ast_t *i) { printf("%d\n", i->int_value); } +void print_int(ast_t *i) { printf("%d", i->int_value); } void print_bool(ast_t *b) { if (b->bool_value) - printf("T\n"); + printf("T"); else - printf("F\n"); + printf("F"); } -void print_float(ast_t *f) { printf("%f\n", f->float_value); } +void print_float(ast_t *f) { printf("%f", f->float_value); } -void print_symbol(ast_t *s) { printf("S: %s\n", s->string_value); } +void print_symbol(ast_t *s) { printf(":%s", s->string_value); } void print_func(ast_t *f) { print_pair(f->cdr); } void print_pair(ast_t *p) { printf("("); ast_t *cur = p; - bool is_last = false; - - while (cur != NULL && (cur->cdr != NULL && cur->cdr->car != NULL)) { - if (cur->cdr == NULL) { - is_last = true; - } - switch (cur->car->type) { - case AST_STRING: - printf("%s", cur->car->string_value); - break; - case AST_INT: - printf("%d", cur->car->int_value); - break; - case AST_FLOAT: - printf("%d", cur->car->int_value); - break; - case AST_BOOL: - printf("%d", cur->car->int_value); - break; - case AST_FUNCTION: - break; - case AST_SYMBOL: - printf("%d", cur->car->int_value); - break; - case AST_PAIR: - printf("%d", cur->car->int_value); - break; - case AST_ROOT: - break; - } + while (cur != NULL && (cur->cdr != NULL && cur->car != NULL)) { + print(cur->car); + if (cur->cdr->cdr != NULL) { + printf(" "); + } else + printf(")"); cur = cur->cdr; } } |