diff options
| author | Carson Fleming <cflems@cflems.net> | 2026-07-29 23:58:55 -0400 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2026-07-29 23:58:55 -0400 |
| commit | 3445947c072a4cd533f5f3a53178f77361859123 (patch) | |
| tree | 9ba7d330b1091fdad76bbb190579491e022dc3d3 /parser.c | |
| parent | 29510d33cab6e86b28b12c6246bca58acdab26e2 (diff) | |
| download | ccc-3445947c072a4cd533f5f3a53178f77361859123.tar.gz | |
improve type system
Diffstat (limited to 'parser.c')
| -rw-r--r-- | parser.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -121,13 +121,32 @@ static void parse_literal(struct expr_node* p_node) { case TK_INT_LIT: expect(TK_INT_LIT); p_node->type = EXPR_INT_LIT; - p_node->inner.int_lit.val = tok.data.int_lit; + p_node->inner.int_lit = (struct int_lit_node) { + .val = tok.data.int_lit, + }; break; case TK_CHAR_LIT: expect(TK_CHAR_LIT); p_node->type = EXPR_CHAR_LIT; + p_node->inner.char_lit = (struct char_lit_node) { + .val = tok.data.char_lit, + }; p_node->inner.char_lit.val = tok.data.char_lit; break; + case TK_FLOAT_LIT: + expect(TK_FLOAT_LIT); + p_node->type = EXPR_FLOAT_LIT; + p_node->inner.float_lit = (struct float_lit_node) { + .val = tok.data.float_lit, + }; + break; + case TK_STR_LIT: + expect(TK_STR_LIT); + p_node->type = EXPR_STR_LIT; + p_node->inner.str_lit = (struct str_lit_node) { + .val = tok.data.str_lit, + }; + break; default: PARSER_PANIC("invalid literal type"); } |
