let raise_parse_error parse_state location buf_pos err_msg =
  begin
    match parse_state with
    | `Sexp { parse_pos } | `Annot { parse_pos } ->
        set_parse_pos parse_pos buf_pos;
        parse_pos.Parse_pos.text_char <- parse_pos.Parse_pos.text_char + 1;
  end;
  let parse_error = { location; err_msg; parse_state } in
  raise (Parse_error parse_error)