diff options
Diffstat (limited to 'src/nodes.c')
-rw-r--r-- | src/nodes.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/nodes.c b/src/nodes.c index 855d186..fc39d8e 100644 --- a/src/nodes.c +++ b/src/nodes.c | |||
@@ -23,6 +23,7 @@ print_node(Node *node) { | |||
23 | } | 23 | } |
24 | } break; | 24 | } break; |
25 | case NODE_SYMBOL: | 25 | case NODE_SYMBOL: |
26 | case NODE_TYPE: | ||
26 | case NODE_STRING: { | 27 | case NODE_STRING: { |
27 | sv_write(&node->string); | 28 | sv_write(&node->string); |
28 | } break; | 29 | } break; |
@@ -51,7 +52,7 @@ print_node(Node *node) { | |||
51 | printf("(def "); | 52 | printf("(def "); |
52 | print_node(node->def.symbol); | 53 | print_node(node->def.symbol); |
53 | printf(":"); | 54 | printf(":"); |
54 | sv_write(&node->def.type); | 55 | print_node(node->def.type); |
55 | printf(" "); | 56 | printf(" "); |
56 | print_node(node->def.value); | 57 | print_node(node->def.value); |
57 | printf(")"); | 58 | printf(")"); |
@@ -63,6 +64,31 @@ print_node(Node *node) { | |||
63 | print_node(node->def.value); | 64 | print_node(node->def.value); |
64 | printf(")"); | 65 | printf(")"); |
65 | } break; | 66 | } break; |
67 | case NODE_FUN: { | ||
68 | printf("(fun "); | ||
69 | print_node(node->fun.name); | ||
70 | printf(" ("); | ||
71 | size_t n_params = array_size(node->fun.param_names); | ||
72 | for (size_t i = 0; i < n_params; ++i) { | ||
73 | print_node(node->fun.param_names[i]); | ||
74 | printf(":"); | ||
75 | print_node(node->fun.param_types[i]); | ||
76 | if (i < n_params - 1) { | ||
77 | printf(" "); | ||
78 | } | ||
79 | } | ||
80 | printf(")"); | ||
81 | printf(": "); | ||
82 | print_node(node->fun.return_type); | ||
83 | |||
84 | size_t n_expr = array_size(node->fun.body); | ||
85 | for (size_t i = 0; i < n_expr; ++i) { | ||
86 | printf(" "); | ||
87 | print_node(node->fun.body[i]); | ||
88 | } | ||
89 | |||
90 | printf(")"); | ||
91 | } break; | ||
66 | default: { printf("{#unknown#}"); } break; | 92 | default: { printf("{#unknown#}"); } break; |
67 | } | 93 | } |
68 | } | 94 | } |