let error input text =
let buffer = Buffer.create 80 in
let fmt = Format.formatter_of_buffer buffer in
let line = (Lexing.lexeme_start_p input.lexbuf).Lexing.pos_lnum in
Format.fprintf fmt "%s:%d: " input.src line ;
Format.kfprintf
(fun fmt ->
Format.fprintf fmt "(at %a)" (pp_token input.lexbuf) input.token ;
Format.pp_print_flush fmt () ;
failwith (Buffer.contents buffer)
) fmt text