lang: ast: convert RPN expression queue to ast and replace generic EXPR node with it
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user