From 4c36615bc10fb192ade18233e6fece143c9d27f8 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Fri, 6 Dec 2024 21:34:26 +0000 Subject: [PATCH] lang: ast: implement s_terminator in block parser for all symbols --- lang/ast/block.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lang/ast/block.c b/lang/ast/block.c index b6cc522..3f06570 100644 --- a/lang/ast/block.c +++ b/lang/ast/block.c @@ -38,7 +38,7 @@ static struct token_parse_result parse_else( return PARSE_RESULT(IVY_OK, PARSE_REPEAT_TOKEN); } -static struct token_parse_result parse_bang( +static struct token_parse_result parse_symbol( struct ivy_parser *ctx, struct ivy_token *tok) { struct block_parser_state *state @@ -47,12 +47,12 @@ static struct token_parse_result parse_bang( struct ivy_ast_block_node *node = (struct ivy_ast_block_node *)(state->s_base.s_node); - if (state->s_terminator != IVY_SYM_BANG) { - return PARSE_RESULT(IVY_ERR_BAD_SYNTAX, 0); + if (state->s_terminator == tok->t_symbol) { + parser_pop_state(ctx, STATE_ADD_NODE_TO_PARENT); + return PARSE_RESULT(IVY_OK, PARSE_REPEAT_TOKEN); } - parser_pop_state(ctx, STATE_ADD_NODE_TO_PARENT); - return PARSE_RESULT(IVY_OK, PARSE_REPEAT_TOKEN); + return PARSE_RESULT(IVY_ERR_BAD_SYNTAX, 0); } static struct token_parse_result parse_expr_begin( @@ -107,7 +107,7 @@ struct ast_node_type block_node_ops = { KW_PARSER(ELSE, parse_else), }, .n_symbol_parsers = { - SYM_PARSER(BANG, parse_bang), + SYM_PARSER_FALLBACK(parse_symbol), }, .n_expr_parser = { .expr_begin = parse_expr_begin,