- (match (Str.split (Str.regexp ",") min,
- Str.split (Str.regexp ",") pl) with
- ([_;m2],[n1;n2]) ->
- let n1 =
- int_of_string
- (String.sub n1 1 ((String.length n1)-1)) in
- let m2 = int_of_string m2 in
- let n2 = int_of_string n2 in
- (Printf.sprintf "%s %s +%d,%d %s" bef min (n1-n) n2
- (String.concat " " aft))
- :: loop2 (n+(m2-n2)) ss
- | _ -> failwith "bad -/+ line information")
+ let (m2,n1,n2) =
+ match (Str.split (Str.regexp ",") min,
+ Str.split (Str.regexp ",") pl) with
+ ([_;m2],[n1;n2]) -> (m2,n1,n2)
+ | ([_],[n1;n2]) -> ("1",n1,n2)
+ | ([_;m2],[n1]) -> (m2,n1,"1")
+ | ([_],[n1]) -> ("1",n1,"1")
+ | _ -> failwith "bad -/+ line information" in
+ let n1 =
+ int_of_string (String.sub n1 1 ((String.length n1)-1)) in
+ let m2 = int_of_string m2 in
+ let n2 = int_of_string n2 in
+ (Printf.sprintf "%s %s +%d,%d %s" bef min (n1-n) n2
+ (String.concat " " aft))
+ :: loop2 (n+(m2-n2)) ss