Beginning of better API
This commit is contained in:
27
Parsing.jai
27
Parsing.jai
@@ -1051,6 +1051,33 @@ declaration :: (parse_state : *Parse_State) -> *AST_Node {
|
||||
return decl_node;
|
||||
}
|
||||
|
||||
parse :: (result : *Compile_Result) {
|
||||
for *file : result.files {
|
||||
parse_state : Parse_State;
|
||||
init_parse_state(*parse_state, file.tokens.tokens, file.file.path, result.allocator);
|
||||
advance(*parse_state);
|
||||
|
||||
if !match(*parse_state, .TOKEN_EOF) {
|
||||
parse_state.result.root = make_node(*parse_state, .Program);
|
||||
array_reserve(*parse_state.result.root.children, 1024);
|
||||
program := parse_state.result.root;
|
||||
|
||||
while !check(*parse_state, .TOKEN_EOF) {
|
||||
decl := declaration(*parse_state);
|
||||
if decl {
|
||||
add_child(program, decl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//@Incomplete(nb): will this straight copy just work?
|
||||
// Might need to rething how we do this.
|
||||
file.ast_root = parse_state.result.root;
|
||||
file.ast_nodes = parse_state.result.nodes;
|
||||
copy_messages(parse_state.result.messages, *result.messages);
|
||||
}
|
||||
}
|
||||
|
||||
parse :: (parse_state : *Parse_State) -> Parse_Result {
|
||||
advance(parse_state);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user