type pos = {file : string; line : int; column : int} type region = {left : pos; right : pos} type 'a phrase = {at : region; it : 'a} val no_pos : pos val no_region : region val string_of_pos : pos -> string val string_of_region : region -> string val (@@) : 'a -> region -> 'a phrase val at : region -> 'a -> 'a phrase