let raise_unexpected_char state ~loc pos c =
  let err_msg = sprintf "unexpected character: '%c'" c in
  let parse_pos = state.parse_pos in
  parse_pos.buf_pos <- pos;
  parse_pos.text_char <- parse_pos.text_char + 1;
  raise_parse_error state loc err_msg