From 4646adb64119d9bd761447024a2f35cc0c9c2115 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 21 Jun 2024 11:40:31 +0200 Subject: Add a basic symbol checker --- src/parser.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/parser.c') diff --git a/src/parser.c b/src/parser.c index 8732a25..5928f7b 100644 --- a/src/parser.c +++ b/src/parser.c @@ -697,6 +697,10 @@ parse_keyword(Parser *parser) { node = node_alloc(parser, NODE_FUN, prev); if (!node) return; parse_consume(parser, TOK_SYMBOL, cstr("expected function name")); + Node *name = node_alloc(parser, NODE_SYMBOL, prev); + if (!name) return; + name->value.sym = parser->previous.val; + node->func_name = name; parse_consume(parser, TOK_LPAREN, cstr("expected '(' on function definition")); // Parameters. @@ -968,9 +972,6 @@ parse_symbol(Parser *parser) { parse_symbol(parser); node->next = array_pop(parser->nodes); } - } else { - node = node_alloc(parser, NODE_SYMBOL, prev); - if (!node) return; } node->value.sym = prev.val; array_push(parser->nodes, node, parser->storage); -- cgit v1.2.1