aboutsummaryrefslogtreecommitdiffstats
path: root/src/nodes.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2022-04-06 07:30:43 -0300
committerBad Diode <bd@badd10de.dev>2022-04-06 07:30:43 -0300
commit77b309ba82d090094f5f753342c3aa401cbf657d (patch)
tree2ead2ad4a87b6ba14c766a62b2a82e7005fb03c1 /src/nodes.c
parentc8b53cb4590d8d6cbfc5cbf891809ddd99e33fe5 (diff)
downloadbdl-77b309ba82d090094f5f753342c3aa401cbf657d.tar.gz
bdl-77b309ba82d090094f5f753342c3aa401cbf657d.zip
Add NODE_BLOCK for scoped expressions
Diffstat (limited to 'src/nodes.c')
-rw-r--r--src/nodes.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/nodes.c b/src/nodes.c
index fc39d8e..3a63246 100644
--- a/src/nodes.c
+++ b/src/nodes.c
@@ -64,6 +64,15 @@ print_node(Node *node) {
64 print_node(node->def.value); 64 print_node(node->def.value);
65 printf(")"); 65 printf(")");
66 } break; 66 } break;
67 case NODE_BLOCK: {
68 size_t n_expr = array_size(node->block.expr);
69 printf("{");
70 for (size_t i = 0; i < n_expr; ++i) {
71 printf(" ");
72 print_node(node->block.expr[i]);
73 }
74 printf(" }");
75 } break;
67 case NODE_FUN: { 76 case NODE_FUN: {
68 printf("(fun "); 77 printf("(fun ");
69 print_node(node->fun.name); 78 print_node(node->fun.name);
@@ -80,13 +89,8 @@ print_node(Node *node) {
80 printf(")"); 89 printf(")");
81 printf(": "); 90 printf(": ");
82 print_node(node->fun.return_type); 91 print_node(node->fun.return_type);
83 92 printf(" ");
84 size_t n_expr = array_size(node->fun.body); 93 print_node(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(")"); 94 printf(")");
91 } break; 95 } break;
92 default: { printf("{#unknown#}"); } break; 96 default: { printf("{#unknown#}"); } break;