Change result to context for clarity. Fix a bunch of stuff in builtin functions and structs.
This commit is contained in:
52
Lexing.jai
52
Lexing.jai
@@ -5,7 +5,7 @@ Lexer :: struct {
|
||||
current_line : int;
|
||||
current_column : int;
|
||||
|
||||
result : *Compile_Result;
|
||||
ctx : *Compiler_Context;
|
||||
|
||||
path : string;
|
||||
}
|
||||
@@ -262,7 +262,7 @@ identifier_kind :: (using lexer : *Lexer) -> Token_Kind {
|
||||
error_token :: (lexer : *Lexer, message : string) -> *Token {
|
||||
token : *Token = new_token(lexer, .TOKEN_ERROR);
|
||||
|
||||
lexer.result.had_error = true;
|
||||
lexer.ctx.had_error = true;
|
||||
token.error = copy_string(message);
|
||||
|
||||
return token;
|
||||
@@ -309,8 +309,8 @@ record_error :: (lexer : *Lexer, message : string) {
|
||||
|
||||
array_add(*error.source_locations, source_location);
|
||||
|
||||
lexer.result.had_error = true;
|
||||
array_add(*lexer.result.messages, error);
|
||||
lexer.ctx.had_error = true;
|
||||
array_add(*lexer.ctx.messages, error);
|
||||
}
|
||||
|
||||
make_int :: (lexer : *Lexer) -> *Token {
|
||||
@@ -356,8 +356,8 @@ new_token :: (lexer : *Lexer, kind : Token_Kind) -> *Token {
|
||||
}
|
||||
lexer.current_column += length;
|
||||
|
||||
array_add(*lexer.result.tokens, token);
|
||||
return *lexer.result.tokens[lexer.result.tokens.count - 1];
|
||||
array_add(*lexer.ctx.tokens, token);
|
||||
return *lexer.ctx.tokens[lexer.ctx.tokens.count - 1];
|
||||
}
|
||||
|
||||
make_directive :: (lexer : *Lexer) -> *Token {
|
||||
@@ -366,26 +366,26 @@ make_directive :: (lexer : *Lexer) -> *Token {
|
||||
if ident.ident_value == "load" {
|
||||
path_tok := scan_next_token(lexer);
|
||||
path := path_tok.string_value;
|
||||
result : Compile_Result;
|
||||
result.allocator = lexer.result.allocator;
|
||||
result.environment = lexer.result.environment;
|
||||
ctx : Compiler_Context;
|
||||
ctx.allocator = lexer.ctx.allocator;
|
||||
ctx.environment = lexer.ctx.environment;
|
||||
|
||||
result.file = make_file(*result, path);
|
||||
ctx.file = make_file(*ctx, path);
|
||||
|
||||
if result.file.source.count == 0 {
|
||||
if ctx.file.source.count == 0 {
|
||||
// unable_to_open_file(lexer, path, path_tok);
|
||||
record_error(lexer, tprint("Unable to open file '%' for reading\n", path));
|
||||
return error_token(lexer, tprint("Unable to open file '%' for reading\n", path));
|
||||
}
|
||||
|
||||
lex(*result);
|
||||
lex(*ctx);
|
||||
|
||||
result.tokens.count -= 1; // @Note: remote TOKEN_EOF
|
||||
lexer.result.tokens.count -= 2;
|
||||
array_resize(*lexer.result.tokens, lexer.result.tokens.count + result.tokens.count);
|
||||
ctx.tokens.count -= 1; // @Note: remote TOKEN_EOF
|
||||
lexer.ctx.tokens.count -= 2;
|
||||
array_resize(*lexer.ctx.tokens, lexer.ctx.tokens.count + ctx.tokens.count);
|
||||
|
||||
for tok : result.tokens {
|
||||
lexer.result.tokens[it_index] = tok;
|
||||
for tok : ctx.tokens {
|
||||
lexer.ctx.tokens[it_index] = tok;
|
||||
}
|
||||
return scan_next_token(lexer);;
|
||||
}
|
||||
@@ -565,8 +565,8 @@ scan_next_token :: (lexer : *Lexer) -> *Token {
|
||||
// return error_token(lexer, tprint("Invalid token: %", s));
|
||||
}
|
||||
|
||||
lex :: (result : *Compile_Result, allocator := temp) {
|
||||
if result.had_error {
|
||||
lex :: (ctx : *Compiler_Context, allocator := temp) {
|
||||
if ctx.had_error {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -577,12 +577,12 @@ lex :: (result : *Compile_Result, allocator := temp) {
|
||||
defer clear_context_allocators();
|
||||
|
||||
lexer : Lexer;
|
||||
lexer.result = result;
|
||||
lexer.result.tokens.allocator = result.allocator;
|
||||
array_reserve(*lexer.result.tokens, 1024 * 1024);
|
||||
lexer.ctx = ctx;
|
||||
lexer.ctx.tokens.allocator = ctx.allocator;
|
||||
array_reserve(*lexer.ctx.tokens, 1024 * 1024);
|
||||
|
||||
init_lexer_from_string(*lexer, result.file.source);
|
||||
lexer.path = result.file.path;
|
||||
init_lexer_from_string(*lexer, ctx.file.source);
|
||||
lexer.path = ctx.file.path;
|
||||
token : *Token = scan_next_token(*lexer);
|
||||
while token && token.kind != .TOKEN_EOF {
|
||||
token = scan_next_token(*lexer);
|
||||
@@ -594,7 +594,7 @@ init_lexer_from_string :: (lexer : *Lexer, input : string) {
|
||||
ok := read_input_from_string(lexer, input);
|
||||
if !ok {
|
||||
record_error(lexer, "Unable to initialize from string\n");
|
||||
lexer.result.had_error = true;
|
||||
lexer.ctx.had_error = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -602,7 +602,7 @@ init_lexer_from_file :: (lexer : *Lexer, file_path : string) {
|
||||
ok := read_input_from_file(lexer, file_path);
|
||||
if !ok {
|
||||
record_error(lexer, tprint("Unable to read file: %\n", file_path));
|
||||
lexer.result.had_error = true;
|
||||
lexer.ctx.had_error = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user