lang: ast: convert RPN expression queue to ast and replace generic EXPR node with it

This commit is contained in:
2024-11-28 22:06:25 +00:00
parent 05ced5d5fc
commit ec24e2c327
8 changed files with 212 additions and 58 deletions

View File

@@ -101,7 +101,7 @@ struct parser_state *parser_push_state(
state->s_parent = current_state->s_node;
}
state->s_node = ast_node_create_with_size(type, node_type->n_node_size);
state->s_node = ast_node_create(type);
b_queue_push_back(&parser->p_state, &state->s_entry);
if (node_type->n_init_state) {
@@ -128,6 +128,17 @@ void parser_pop_state(struct ivy_parser *parser, enum pop_state_flags flags)
free(state);
}
void parser_replace_current_node(struct ivy_parser *parser, struct ivy_ast_node *new_node)
{
struct parser_state *state = parser_get_state_generic(parser);
if (!state) {
return;
}
ivy_ast_node_destroy(state->s_node);
state->s_node = new_node;
}
bool ivy_parser_is_node_complete(struct ivy_parser *parser)
{
return (parser->p_state.q_first == parser->p_state.q_last);