A bunch of allocator stuff
This commit is contained in:
14
Parsing.jai
14
Parsing.jai
@@ -14,8 +14,12 @@ Parse_State :: struct {
|
||||
tokens : [..]Token;
|
||||
|
||||
current_token_index : int;
|
||||
allocator : Allocator;
|
||||
arena : Arena;
|
||||
|
||||
node_allocator : Allocator;
|
||||
node_arena : Arena;
|
||||
|
||||
child_allocator : Allocator;
|
||||
child_arena : Arena;
|
||||
|
||||
had_error : bool;
|
||||
|
||||
@@ -123,8 +127,9 @@ parse_rules :: #run -> [(cast(int)Token_Kind.TOKEN_ERROR) + 1]Parse_Rule {
|
||||
init_parse_state :: (parse_state : *Parse_State, tokens : [..]Token, path : string) {
|
||||
parse_state.tokens = tokens;
|
||||
parse_state.path = path;
|
||||
parse_state.allocator = make_arena(*parse_state.arena);
|
||||
parse_state.result.nodes.allocator = parse_state.allocator;
|
||||
parse_state.node_allocator = make_arena(*parse_state.node_arena);
|
||||
parse_state.child_allocator = make_arena(*parse_state.child_arena);
|
||||
parse_state.result.nodes.allocator = parse_state.node_allocator;
|
||||
array_reserve(*parse_state.result.nodes, 4096);
|
||||
parse_state.current_token_index = 0;
|
||||
}
|
||||
@@ -275,6 +280,7 @@ make_node :: (parse_state : *Parse_State, kind : AST_Kind) -> *AST_Node {
|
||||
node : AST_Node;
|
||||
|
||||
node.kind = kind;
|
||||
node.children.allocator = parse_state.child_allocator;
|
||||
array_add(*parse_state.result.nodes, node);
|
||||
|
||||
return *parse_state.result.nodes[parse_state.result.nodes.count - 1];
|
||||
|
||||
Reference in New Issue
Block a user