diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-03-29 05:44:05 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-03-29 05:44:05 +0330 |
commit | 1b47d4f35969326773ac7bc7654cac1f98d16a3c (patch) | |
tree | 9824408fab0a53f95739649425bc9db86a1b2e64 /src/compiler/parser.c | |
parent | 8a1016425aba995a391271666b3ae8a29c2dd3f3 (diff) |
convert int value metadata to pointer for unified style
Diffstat (limited to 'src/compiler/parser.c')
-rw-r--r-- | src/compiler/parser.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/compiler/parser.c b/src/compiler/parser.c index d508110..ec84c8c 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -208,8 +208,8 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_KEYWORD_NULL: goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_INT: { - ParserNodeIntMetadata metadata = (ParserNodeIntMetadata)node->metadata; - printf(",operand=%ld", metadata); + ParserNodeIntMetadata *metadata = node->metadata; + printf(",operand=%ld", *metadata); } goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_FLOAT: { @@ -455,10 +455,13 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_TYPE_F32: case PARSER_TOKEN_TYPE_F64: case PARSER_TOKEN_TYPE_F128: - case PARSER_TOKEN_VALUE_INT: case PARSER_TOKEN_VALUE_BOOL: case PARSER_TOKEN_KEYWORD_NULL: goto RETURN_SUCCESS; + case PARSER_TOKEN_VALUE_INT: { + ParserNodeIntMetadata *metadata = node->metadata; + free(metadata); + } case PARSER_TOKEN_VALUE_FLOAT: { ParserNodeFloatMetadata *metadata = node->metadata; free(metadata); @@ -953,9 +956,10 @@ ParserNode *parserNumber(LexerNode *node, ParserNode *parent) { bool success; u64 value = decimalToU64(node->str_begin, node->str_end, &success); if (success) { - parserNode = - newParserNode(PARSER_TOKEN_VALUE_INT, node->str_begin, node->str_end, - (void *)(ParserNodeIntMetadata)value, parent); + ParserNodeIntMetadata *metadata = a404m_malloc(sizeof(*metadata)); + *metadata = value; + parserNode = newParserNode(PARSER_TOKEN_VALUE_INT, node->str_begin, + node->str_end, metadata, parent); } else { ParserNodeFloatMetadata *metadata = a404m_malloc(sizeof(*metadata)); *metadata = numberToFloat(node->str_begin, node->str_end, &success); |