feat: implement objects and classes
This commit is contained in:
@@ -32,6 +32,27 @@ void print_node(fzl_node_t *node, int level)
|
||||
|
||||
switch (node->type)
|
||||
{
|
||||
case FZL_NODETYPE_CONSTRUCT:
|
||||
printf("%s Construct class '%s':\n", levelbuf,
|
||||
(char *)node->construct.name->token->value);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_CLASS:
|
||||
printf("%s Class '%s':\n", levelbuf, (char *)node->token->value);
|
||||
printf("-%s Fields:\n", levelbuf);
|
||||
for (size_t i = 0; i < node->class.fields_count; i++)
|
||||
print_node(node->class.fields[i], level + 2);
|
||||
printf("-%s Methods:\n", levelbuf);
|
||||
for (size_t i = 0; i < node->class.methods_count; i++)
|
||||
print_node(node->class.methods[i], level + 2);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_FIELD:
|
||||
printf("%s Field '%s' access:\n", levelbuf,
|
||||
(char *)node->memb.field->token->value);
|
||||
print_node(node->memb.parent, level + 1);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_DECLARATION:
|
||||
printf("%s Declare variable with type %d:\n", levelbuf,
|
||||
node->var.type->type);
|
||||
@@ -112,6 +133,8 @@ void print_node(fzl_node_t *node, int level)
|
||||
print_node(node->ret.value, level + 1);
|
||||
break;
|
||||
|
||||
case FZL_NODETYPE_AND:
|
||||
case FZL_NODETYPE_OR:
|
||||
case FZL_NODETYPE_EQUAL:
|
||||
case FZL_NODETYPE_NEQUAL:
|
||||
case FZL_NODETYPE_LESS:
|
||||
|
||||
Reference in New Issue
Block a user