Compare commits

2 Commits

4 changed files with 9 additions and 5 deletions

View File

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

View File

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

View File

@@ -15,7 +15,8 @@ typedef enum {
TokenizeResult tokenize(const char *input) {
ArrayList *arr = arraylist_init(64, sizeof(Token));
ArrayList *arr;
arraylist_init(&arr, 64, sizeof(Token));
size_t 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));
Arena arena = arena_init(sizeof(Node) * arraylist_size(tokens.arr)).arena;
ArraySlice *context;
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) {
arena_destroy(&arena);
arraylist_destroy(&tokens.arr);