summaryrefslogtreecommitdiff
path: root/src/print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/print.c')
-rw-r--r--src/print.c48
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;
}
}