summaryrefslogtreecommitdiff
path: root/src/compiler/parser.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-03-29 05:44:05 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-03-29 05:44:05 +0330
commit1b47d4f35969326773ac7bc7654cac1f98d16a3c (patch)
tree9824408fab0a53f95739649425bc9db86a1b2e64 /src/compiler/parser.c
parent8a1016425aba995a391271666b3ae8a29c2dd3f3 (diff)
convert int value metadata to pointer for unified style
Diffstat (limited to 'src/compiler/parser.c')
-rw-r--r--src/compiler/parser.c16
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);