lang: ast: fix incorrect return types; add function to determine expression tokens

This commit is contained in:
2024-11-27 12:56:10 +00:00
parent cd89c20beb
commit ad25b89af0
6 changed files with 127 additions and 21 deletions

View File

@@ -1,7 +1,8 @@
#include <ivy/lang/ast.h>
#include "ctx.h"
#include "node.h"
#include "iterate.h"
#include "node.h"
#include <ivy/lang/ast.h>
static struct token_parse_result parse_package_keyword(
struct ivy_parser *ctx, struct ivy_token *tok)
@@ -24,20 +25,22 @@ static struct token_parse_result parse_class_keyword(
return PARSE_RESULT(IVY_OK, 0);
}
static struct token_parse_result add_child(
static enum ivy_status add_child(
struct ivy_ast_node *parent, struct ivy_ast_node *child)
{
struct ivy_ast_unit_node *unit = (struct ivy_ast_unit_node *)parent;
b_queue_push_back(&unit->n_children, &child->n_entry);
return PARSE_RESULT(IVY_OK, 0);
return IVY_OK;
}
static void collect_children(struct ivy_ast_node *node, struct ivy_ast_node_iterator *iterator)
static void collect_children(
struct ivy_ast_node *node, struct ivy_ast_node_iterator *iterator)
{
struct ivy_ast_unit_node *unit = (struct ivy_ast_unit_node *)node;
b_queue_iterator it = {0};
b_queue_foreach (&it, &unit->n_children) {
struct ivy_ast_node *child = b_unbox(struct ivy_ast_node, it.entry, n_entry);
struct ivy_ast_node *child
= b_unbox(struct ivy_ast_node, it.entry, n_entry);
ast_node_iterator_enqueue_node(iterator, node, child);
}
}