diff options
author | Bad Diode <bd@badd10de.dev> | 2024-06-21 11:40:31 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-06-21 11:40:31 +0200 |
commit | 4646adb64119d9bd761447024a2f35cc0c9c2115 (patch) | |
tree | 116dfd0f2ad27933639188e6d29eec42305124d7 /src/parser.c | |
parent | c10fe9d48d40e3fa2a20ee61b79518dfbaeb4db9 (diff) | |
download | bdl-4646adb64119d9bd761447024a2f35cc0c9c2115.tar.gz bdl-4646adb64119d9bd761447024a2f35cc0c9c2115.zip |
Add a basic symbol checker
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 7 |
1 files changed, 4 insertions, 3 deletions
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) { | |||
697 | node = node_alloc(parser, NODE_FUN, prev); | 697 | node = node_alloc(parser, NODE_FUN, prev); |
698 | if (!node) return; | 698 | if (!node) return; |
699 | parse_consume(parser, TOK_SYMBOL, cstr("expected function name")); | 699 | parse_consume(parser, TOK_SYMBOL, cstr("expected function name")); |
700 | Node *name = node_alloc(parser, NODE_SYMBOL, prev); | ||
701 | if (!name) return; | ||
702 | name->value.sym = parser->previous.val; | ||
703 | node->func_name = name; | ||
700 | parse_consume(parser, TOK_LPAREN, | 704 | parse_consume(parser, TOK_LPAREN, |
701 | cstr("expected '(' on function definition")); | 705 | cstr("expected '(' on function definition")); |
702 | // Parameters. | 706 | // Parameters. |
@@ -968,9 +972,6 @@ parse_symbol(Parser *parser) { | |||
968 | parse_symbol(parser); | 972 | parse_symbol(parser); |
969 | node->next = array_pop(parser->nodes); | 973 | node->next = array_pop(parser->nodes); |
970 | } | 974 | } |
971 | } else { | ||
972 | node = node_alloc(parser, NODE_SYMBOL, prev); | ||
973 | if (!node) return; | ||
974 | } | 975 | } |
975 | node->value.sym = prev.val; | 976 | node->value.sym = prev.val; |
976 | array_push(parser->nodes, node, parser->storage); | 977 | array_push(parser->nodes, node, parser->storage); |