fix: updating arena and arraylist use

This commit is contained in:
2026-05-14 08:36:21 -06:00
parent 9ea1da549f
commit 964034b203
4 changed files with 9 additions and 5 deletions

View File

@@ -7,6 +7,7 @@
typedef enum { typedef enum {
EVALUATOR_OK, EVALUATOR_OK,
EVALUATOR_MATH_ERR, EVALUATOR_MATH_ERR,
EVALUATOR_DIVISION_BY_ZERO,
EVALUATOR_INVALID_PARSING, EVALUATOR_INVALID_PARSING,
EVALUATOR_INVALID_TREE, // just to shut up the compiler with the swithces EVALUATOR_INVALID_TREE, // just to shut up the compiler with the swithces
} EvaluatorErr; } EvaluatorErr;

View File

@@ -45,7 +45,7 @@ typedef struct {
union { union {
ParserErr err; ParserErr err;
struct { struct {
Arena arena; Arena *arena;
Node *tree; Node *tree;
}; };
}; };

View File

@@ -15,7 +15,8 @@ typedef enum {
TokenizeResult tokenize(const char *input) { TokenizeResult tokenize(const char *input) {
ArrayList *arr = arraylist_init(64, sizeof(Token)); ArrayList *arr;
arraylist_init(&arr, 64, sizeof(Token));
size_t offset = 0; size_t offset = 0;
while (input[offset] != '\0') { while (input[offset] != '\0') {

View File

@@ -296,10 +296,12 @@ ParserResult parse(TokenizeResult tokens) {
}; };
} }
ArraySlice *context = arraylist_slice(tokens.arr, 0, arraylist_size(tokens.arr)); ArraySlice *context;
Arena arena = arena_init(sizeof(Node) * arraylist_size(tokens.arr)).arena; arraylist_slice(&context, tokens.arr, 0, arraylist_size(tokens.arr));
Arena *arena;
arena_init(&arena, sizeof(Node) * arraylist_size(tokens.arr));
TreeResult result = parse_expr(context, &arena, 0); TreeResult result = parse_expr(context, arena, 0);
if (!result.is_valid) { if (!result.is_valid) {
arena_destroy(&arena); arena_destroy(&arena);
arraylist_destroy(&tokens.arr); arraylist_destroy(&tokens.arr);