feat: implement functions

This commit is contained in:
samsonium
2026-10-15 02:23:43 +03:00
parent cc3087296f
commit 2c206822ca
15 changed files with 391 additions and 36 deletions
+16
View File
@@ -96,6 +96,22 @@ void print_node(fzl_node_t *node, int level)
print_node(node->unary_op.operand, level + 1);
break;
case FZL_NODETYPE_FUNCTION:
printf("%s Function named '%s' with ret type '%s':\n", levelbuf,
(char *)node->fn.name->value, (char *)node->fn.type->value);
printf("-%s Args:\n", levelbuf);
for (size_t i = 0; i < node->fn.args_count; i++)
print_node(node->fn.args[i], level + 2);
printf("-%s Body:\n", levelbuf);
print_node(node->fn.body, level + 2);
break;
case FZL_NODETYPE_RETURN:
printf("%s Return:\n", levelbuf);
if (node->ret.value)
print_node(node->ret.value, level + 1);
break;
case FZL_NODETYPE_EQUAL:
case FZL_NODETYPE_NEQUAL:
case FZL_NODETYPE_LESS: