diff --git a/Parsing.jai b/Parsing.jai index 2909f7e..296e63a 100644 --- a/Parsing.jai +++ b/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); }