summaryrefslogtreecommitdiff
path: root/src/print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/print.c')
-rw-r--r--src/print.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/print.c b/src/print.c
new file mode 100644
index 0000000..e653571
--- /dev/null
+++ b/src/print.c
@@ -0,0 +1,50 @@
+#include "./include/print.h"
+#include "./include/ast.h"
+#include <stdio.h>
+
+void print_string(ast_t *str) { printf("=> %s\n", str->string_value); }
+
+void print_int(ast_t *i) { printf("=> %d\n", i->int_value); }
+
+void print_bool(ast_t *b) {
+ if (b->bool_value)
+ printf("=> T\n");
+ else
+ printf("=> F\n");
+}
+
+void print_float(ast_t *f) { printf("=> %f\n", f->float_value); }
+
+void print_symbol(ast_t *s) { printf("=> %s\n", s->string_value); }
+
+void print_func(ast_t *f) {}
+
+void print_pair(ast_t *p) {}
+void print(ast_t *res) {
+ switch (res->type) {
+ case AST_STRING:
+ print_string(res);
+ break;
+ case AST_INT:
+ print_int(res);
+ break;
+ case AST_BOOL:
+ print_bool(res);
+ break;
+ case AST_FLOAT:
+ print_float(res);
+ break;
+ case AST_FUNCTION:
+ print_func(res);
+ break;
+ case AST_SYMBOL:
+ print_symbol(res);
+ break;
+ case AST_PAIR:
+ print_pair(res);
+ break;
+ case AST_ROOT:
+ printf("Yeah, let's not do that\n");
+ break;
+ }
+}