diff options
author | Bad Diode <bd@badd10de.dev> | 2024-06-23 10:54:21 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-06-23 10:54:21 +0200 |
commit | ec7936226a2e82b10bc1fdac132a1d26d178dbcd (patch) | |
tree | 7b0ed4cf889992bcb5def1df18b062159a9ee69b /src | |
parent | 8931a6f22b9586c62082c525ec8b6de62c7de5d5 (diff) | |
download | bdl-ec7936226a2e82b10bc1fdac132a1d26d178dbcd.tar.gz bdl-ec7936226a2e82b10bc1fdac132a1d26d178dbcd.zip |
Add constrain to let parsing either type or value must be present
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/parser.c | 6 |
2 files changed, 7 insertions, 1 deletions
@@ -442,7 +442,7 @@ analyzer_typecheck(Analyzer *a, Node *node, Scope *scope) { | |||
442 | case NODE_NUM_INT: | 442 | case NODE_NUM_INT: |
443 | case NODE_NUM_UINT: { | 443 | case NODE_NUM_UINT: { |
444 | // TODO: Check if the terminal correspond to an integer numeric type. | 444 | // TODO: Check if the terminal correspond to an integer numeric type. |
445 | printf("DING\n"); | 445 | // printf("DING\n"); |
446 | } break; | 446 | } break; |
447 | case NODE_LET: { | 447 | case NODE_LET: { |
448 | // Check the value first to avoid recursive symbol usage. | 448 | // Check the value first to avoid recursive symbol usage. |
diff --git a/src/parser.c b/src/parser.c index 7864264..9079df9 100644 --- a/src/parser.c +++ b/src/parser.c | |||
@@ -521,6 +521,12 @@ parse_keyword(Parser *parser) { | |||
521 | parse_expr(parser, PREC_LOW); | 521 | parse_expr(parser, PREC_LOW); |
522 | node->var_val = array_pop(parser->nodes); | 522 | node->var_val = array_pop(parser->nodes); |
523 | } | 523 | } |
524 | |||
525 | if (node->var_type == NULL && node->var_val == NULL) { | ||
526 | parse_emit_err(parser, prev, | ||
527 | cstr("variable declaration must include type or " | ||
528 | "value information")); | ||
529 | } | ||
524 | } break; | 530 | } break; |
525 | case TOK_SET: { | 531 | case TOK_SET: { |
526 | node = node_alloc(parser, NODE_SET, prev); | 532 | node = node_alloc(parser, NODE_SET, prev); |