diff --git a/lang/ast/unit-package.c b/lang/ast/unit-package.c index 1b79dbe..95aad18 100644 --- a/lang/ast/unit-package.c +++ b/lang/ast/unit-package.c @@ -21,10 +21,14 @@ static enum ivy_status parse_ident(struct ivy_parser *ctx, struct ivy_token *tok struct unit_package_parser_state *state = parser_get_state(ctx, struct unit_package_parser_state); + struct ivy_ast_unit_package_node *node = (struct ivy_ast_unit_package_node *)(state->s_base.s_node); + if (state->s_prev_token == IVY_TOK_IDENT) { return IVY_ERR_BAD_SYNTAX; } + b_queue_push_back(&node->n_ident, &tok->t_entry); + state->s_prev_token = IVY_TOK_IDENT; return IVY_OK; } @@ -38,13 +42,14 @@ static enum ivy_status parse_linefeed(struct ivy_parser *ctx, struct ivy_token * return IVY_ERR_BAD_SYNTAX; } - return IVY_ERR_IO_FAILURE; + parser_pop_state(ctx, STATE_ADD_NODE_TO_PARENT); + return IVY_OK; } static enum ivy_status add_child( struct ivy_ast_node *parent, struct ivy_ast_node *child) { - return IVY_OK; + return IVY_ERR_NOT_SUPPORTED; } static void print(struct ivy_ast_node *node) diff --git a/lang/ast/unit.c b/lang/ast/unit.c index 684ac73..7df5dae 100644 --- a/lang/ast/unit.c +++ b/lang/ast/unit.c @@ -13,6 +13,8 @@ static enum ivy_status parse_package_keyword( 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 IVY_OK; }