Compare commits
1 Commits
9ea1da549f
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 964034b203 |
@@ -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;
|
||||
|
||||
@@ -45,7 +45,7 @@ typedef struct {
|
||||
union {
|
||||
ParserErr err;
|
||||
struct {
|
||||
Arena arena;
|
||||
Arena *arena;
|
||||
Node *tree;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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') {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user