fix/refactor: Modified evaluate and changed it to evaluate_tree
So i did what the last commit said, also fixed parse_expr because it was still using malloc for allocating new nodes so i made it use arena_alloc like it should, did the very first tests so it's all good, i think is readdy to merge.
This commit is contained in:
@@ -19,58 +19,57 @@ static void test_parsing_basic_expression(void **state) {
|
||||
assert_int_equal(tokens.len, 7);
|
||||
|
||||
ParseResult result = parse(&tokens);
|
||||
AST tree = result.tree;
|
||||
// Assert head is +
|
||||
assert_int_equal(tree.head->type, NODE_BINARY_OP);
|
||||
assert_int_equal(tree.head->data.binary.op, OP_ADD);
|
||||
assert_int_equal(result.tree->type, NODE_BINARY_OP);
|
||||
assert_int_equal(result.tree->data.binary.op, OP_ADD);
|
||||
|
||||
assert_int_equal(tree.head->data.binary.left->type, NODE_INTEGER);
|
||||
assert_int_equal(tree.head->data.binary.left->data.integer, 2);
|
||||
assert_int_equal(result.tree->data.binary.left->type, NODE_INTEGER);
|
||||
assert_int_equal(result.tree->data.binary.left->data.integer, 2);
|
||||
|
||||
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->type,
|
||||
result.tree->data.binary.right->type,
|
||||
NODE_BINARY_OP
|
||||
);
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.op,
|
||||
result.tree->data.binary.right->data.binary.op,
|
||||
OP_MUL
|
||||
);
|
||||
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.right->type,
|
||||
result.tree->data.binary.right->data.binary.right->type,
|
||||
NODE_INTEGER);
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.right->data.integer,
|
||||
result.tree->data.binary.right->data.binary.right->data.integer,
|
||||
789);
|
||||
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->type,
|
||||
result.tree->data.binary.right->data.binary.left->type,
|
||||
NODE_BINARY_OP
|
||||
);
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->data.binary.op,
|
||||
result.tree->data.binary.right->data.binary.left->data.binary.op,
|
||||
OP_DIV
|
||||
);
|
||||
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->data.binary.right->type,
|
||||
result.tree->data.binary.right->data.binary.left->data.binary.right->type,
|
||||
NODE_INTEGER
|
||||
);
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->data.binary.right->data.integer,
|
||||
result.tree->data.binary.right->data.binary.left->data.binary.right->data.integer,
|
||||
66
|
||||
);
|
||||
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->data.binary.left->type,
|
||||
result.tree->data.binary.right->data.binary.left->data.binary.left->type,
|
||||
NODE_INTEGER
|
||||
);
|
||||
assert_int_equal(
|
||||
tree.head->data.binary.right->data.binary.left->data.binary.left->data.integer,
|
||||
result.tree->data.binary.right->data.binary.left->data.binary.left->data.integer,
|
||||
3
|
||||
);
|
||||
arena_destroy(result.arena);
|
||||
arena_destroy(&result.arena);
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
|
||||
Reference in New Issue
Block a user