Compare commits
2 Commits
aaeda22fa3
...
41d1dd406d
| Author | SHA1 | Date | |
|---|---|---|---|
| 41d1dd406d | |||
| bc69a39570 |
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) {
|
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) {
|
expected_expression :: (state : *Parse_State, token : Token, message : string) {
|
||||||
@@ -350,8 +376,9 @@ consume :: (parse_state : *Parse_State, kind : Token_Kind, message : string) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
token := parse_state.previous;
|
||||||
advance(parse_state);
|
advance(parse_state);
|
||||||
unexpected_token(parse_state, parse_state.current, message);
|
unexpected_token(parse_state, token, message);
|
||||||
consume(parse_state, kind, message);
|
consume(parse_state, kind, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user