add hashmap to scope and identifier loading at runtime

This commit is contained in:
2025-07-12 03:33:59 +01:00
parent fe7eaa8de3
commit c0eb9e3a04
18 changed files with 141 additions and 35 deletions

View File

@@ -4,9 +4,22 @@
#include <string.h>
#include "../../../memory.h"
ParsedValueReturn parse_identifier(Token *token) {
ParsedValue *parsedValue = checked_malloc(sizeof(ParsedValue));
ParsedIdentifier *parsedIdentifier = checked_malloc(sizeof(ParsedIdentifier));
parsedIdentifier->name = strcpy(checked_malloc(token->length + 1), token->value);
parsedIdentifier->line = token->line;
parsedIdentifier->column = token->column;
parsedValue->type = AST_IDENTIFIER;
parsedValue->data = strcpy(checked_malloc(strlen(token->value) + 1), token->value);
parsedValue->data = parsedIdentifier;
return (ParsedValueReturn){no_err, parsedValue};
}
void free_identifier(void *ptr) {
ParsedValue *parsedValue = ptr;
ParsedIdentifier *parsed = parsedValue->data;
free(parsed->name);
free(parsed);
}

View File

@@ -3,7 +3,15 @@
#include "../../parser.h"
#include "../../../lexer/token.h" // for Token
typedef struct {
char * name;
size_t line;
size_t column;
} ParsedIdentifier;
// Function declaration for parsing an identifier
ParsedValueReturn parse_identifier(Token *token);
void free_identifier(void *ptr);
#endif // IDENTIFIER_H