lang: ast: implement support for multiple expression terminator tokens
This commit is contained in:
@@ -2,6 +2,33 @@
|
||||
|
||||
#include "../node.h"
|
||||
|
||||
void expr_add_terminator(struct expr_parser_state *state, unsigned short tok)
|
||||
{
|
||||
if (state->s_nr_terminators < EXPR_TERMINATOR_MAX) {
|
||||
state->s_terminators[state->s_nr_terminators++] = tok;
|
||||
}
|
||||
}
|
||||
|
||||
void expr_copy_terminators(const struct expr_parser_state *src, struct expr_parser_state *dest)
|
||||
{
|
||||
dest->s_nr_terminators = src->s_nr_terminators;
|
||||
|
||||
for (unsigned int i = 0; i < src->s_nr_terminators; i++) {
|
||||
dest->s_terminators[i] = src->s_terminators[i];
|
||||
}
|
||||
}
|
||||
|
||||
bool expr_terminates_at_token(struct expr_parser_state *state, unsigned short tok)
|
||||
{
|
||||
for (unsigned int i = 0; i < EXPR_TERMINATOR_MAX; i++) {
|
||||
if (state->s_terminators[i] == tok) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static enum ivy_status add_child(
|
||||
struct parser_state *parent, struct ivy_ast_node *child)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user