feat: add AST freeing function

This commit is contained in:
samsonium
2026-10-09 23:46:17 +03:00
parent 7744a28a12
commit 2fabd0ec2d
3 changed files with 29 additions and 2 deletions
+25 -2
View File
@@ -210,11 +210,34 @@ void fzl_freenode(fzl_node_t *node)
{
if (!node)
return;
if (node->token)
fzl_freetoken(node->token);
free(node);
}
void fzl_freeast(fzl_node_t *root)
{
if (!root)
return;
while (root)
{
if (root->type == FZL_NODETYPE_BLOCK)
{
for (size_t i = 0; i < root->list.entry_count; i++)
if (root->list.entries[i])
fzl_freeast(root->list.entries[i]);
}
else if (root->type == FZL_NODETYPE_CALL)
{
for (size_t i = 0; i < root->list.entry_count; i++)
if (root->list.entries[i])
fzl_freeast(root->list.entries[i]);
}
fzl_freenode(root);
root = root->next;
}
}
void fzl_freeparser(fzl_parser_t *parser)
{
if (!parser)