aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2024-06-21 11:40:31 +0200
committerBad Diode <bd@badd10de.dev>2024-06-21 11:40:31 +0200
commit4646adb64119d9bd761447024a2f35cc0c9c2115 (patch)
tree116dfd0f2ad27933639188e6d29eec42305124d7 /src/parser.c
parentc10fe9d48d40e3fa2a20ee61b79518dfbaeb4db9 (diff)
downloadbdl-4646adb64119d9bd761447024a2f35cc0c9c2115.tar.gz
bdl-4646adb64119d9bd761447024a2f35cc0c9c2115.zip
Add a basic symbol checker
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c7
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);