let location_of_string s =
try
let f a b c = Linechars (a, (b, c)) in
Some (Scanf.sscanf s "%d,%d-%d" f)
with
_ ->
try let f a b = Linechar(a,b) in Some (Scanf.sscanf s "%d,%d" f)
with _ ->
try let f a b = Chars(a,b) in Some (Scanf.sscanf s "%d-%d" f)
with _ ->
try Some (Char(Cam_misc.my_int_of_string s))
with _ -> None