(* ['a t] is the type of values tagged with a location, that is,
   records that contain a start position, an end position, and a value
   of type ['a]. *)

type 'a t

(* [make startpos endpos v] is the result of tagging value [v] with
   positions [startpos] and [endpos]. *)

val make: Lexing.position -> Lexing.position -> 'a -> 'a t

(* [content tv] is the actual content (that is, the raw value) of the
   tagged value [tv]. *)

val content: 'a t -> 'a

(* [startpos tv] and [endpos tv] are the start and positions recorded
   for value [tv]. *)

val startpos: 'a t -> Lexing.position
val endpos: 'a t -> Lexing.position