blob: f659f6f235d883c7bf3b78c2418cd772a17099d0 [file] [log] [blame] [edit]
type pos = {file : string; line : int; column : int}
type region = {left : pos; right : pos}
type 'a phrase = {at : region; it : 'a}
let (@@) x region = {it = x; at = region}
let at region x = x @@ region
(* Positions and regions *)
let no_pos = {file = ""; line = 0; column = 0}
let no_region = {left = no_pos; right = no_pos}
let string_of_pos pos =
if pos.line = -1 then
Printf.sprintf "0x%x" pos.column
else
string_of_int pos.line ^ "." ^ string_of_int (pos.column + 1)
let string_of_region r =
r.left.file ^ ":" ^ string_of_pos r.left ^
(if r.right = r.left then "" else "-" ^ string_of_pos r.right)