feat: implement conditions

This commit is contained in:
samsonium
2026-10-14 19:56:27 +03:00
parent 4a908f9fd8
commit 83ff0b5774
11 changed files with 731 additions and 25 deletions
+25
View File
@@ -63,6 +63,19 @@ void print_node(fzl_node_t *node, int level)
printf("%s Literal '%s'\n", levelbuf, (char *)node->token->value);
break;
case FZL_NODETYPE_CONDITIONAL:
printf("%s Conditional block:\n", levelbuf);
printf("-%s Condition:\n", levelbuf);
print_node(node->cond.condition, level + 2);
printf("-%s True block:\n", levelbuf);
print_node(node->cond.true_block, level + 2);
if (node->cond.else_block)
{
printf("-%s Else block:\n", levelbuf);
print_node(node->cond.else_block, level + 2);
}
break;
case FZL_NODETYPE_BLOCK:
printf("%s Block: ", levelbuf);
@@ -77,6 +90,18 @@ void print_node(fzl_node_t *node, int level)
print_node(node->list.entries[i], level + 1);
break;
case FZL_NODETYPE_NOT:
printf("%s Inverse:\n", levelbuf);
print_node(node->unary_op.operand, level + 1);
break;
case FZL_NODETYPE_EQUAL:
case FZL_NODETYPE_NEQUAL:
case FZL_NODETYPE_LESS:
case FZL_NODETYPE_LESS_EQUAL:
case FZL_NODETYPE_GREATER:
case FZL_NODETYPE_GREATER_EQUAL:
case FZL_NODETYPE_ADD:
case FZL_NODETYPE_SUB:
case FZL_NODETYPE_MUL: