Attempt to improved error log.
This commit is contained in:
31
Parsing.jai
31
Parsing.jai
@@ -182,7 +182,33 @@ generate_source_location_from_token :: (state : *Parse_State, token : Token) ->
|
||||
}
|
||||
|
||||
unexpected_token :: (state : *Parse_State, token : Token, message : string) {
|
||||
record_error(state, token, message);
|
||||
/*
|
||||
|
||||
*/
|
||||
builder : String_Builder;
|
||||
init_string_builder(*builder,, temp);
|
||||
|
||||
print_to_builder(*builder, "%\n", message);
|
||||
|
||||
location : Source_Range;
|
||||
location.begin = token;
|
||||
location.begin.source = location.begin.source - location.begin.column;
|
||||
location.begin.column = 0;
|
||||
|
||||
location.main_token = token;
|
||||
|
||||
advance(state);
|
||||
location.end = state.current;
|
||||
|
||||
indent(*builder, 1);
|
||||
cyan(*builder);
|
||||
print_to_builder(*builder, "%\n", print_from_source_location(location));
|
||||
|
||||
indent(*builder, 1);
|
||||
print_token_pointer(*builder, token);
|
||||
|
||||
final_message := builder_to_string(*builder);
|
||||
record_error(state, token, final_message, false);
|
||||
}
|
||||
|
||||
expected_expression :: (state : *Parse_State, token : Token, message : string) {
|
||||
@@ -350,8 +376,9 @@ consume :: (parse_state : *Parse_State, kind : Token_Kind, message : string) {
|
||||
return;
|
||||
}
|
||||
|
||||
token := parse_state.previous;
|
||||
advance(parse_state);
|
||||
unexpected_token(parse_state, parse_state.current, message);
|
||||
unexpected_token(parse_state, token, message);
|
||||
consume(parse_state, kind, message);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user