2016-11-13 17:05:55 +00:00
|
|
|
open Import
|
|
|
|
|
2016-11-03 16:44:09 +00:00
|
|
|
type t =
|
|
|
|
{ start : Lexing.position
|
|
|
|
; stop : Lexing.position
|
|
|
|
}
|
2016-11-13 11:13:47 +00:00
|
|
|
|
|
|
|
let of_lexbuf lb =
|
2016-11-13 11:27:31 +00:00
|
|
|
{ start = Lexing.lexeme_start_p lb
|
|
|
|
; stop = Lexing.lexeme_end_p lb
|
2016-11-13 11:13:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
exception Error of t * string
|
|
|
|
|
|
|
|
let fail t fmt =
|
2016-11-13 17:05:55 +00:00
|
|
|
ksprintf (fun msg -> raise (Error (t, msg))) fmt
|
2016-11-13 11:13:47 +00:00
|
|
|
|
|
|
|
let fail_lex lb fmt =
|
|
|
|
fail (of_lexbuf lb) fmt
|
2016-12-02 13:54:32 +00:00
|
|
|
|
|
|
|
let in_file fn =
|
|
|
|
let pos : Lexing.position =
|
|
|
|
{ pos_fname = fn
|
|
|
|
; pos_lnum = 1
|
|
|
|
; pos_cnum = 0
|
|
|
|
; pos_bol = 0
|
|
|
|
}
|
|
|
|
in
|
|
|
|
{ start = pos
|
|
|
|
; stop = pos
|
|
|
|
}
|
|
|
|
|
2017-02-25 17:53:39 +00:00
|
|
|
let none = in_file "<none>"
|