From 3445947c072a4cd533f5f3a53178f77361859123 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Wed, 29 Jul 2026 23:58:55 -0400 Subject: improve type system --- parser.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 40d5bbd..b92ff8b 100644 --- a/parser.c +++ b/parser.c @@ -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"); } -- cgit v1.2.3