culr/lib/parsers.ml
2024-12-05 23:40:30 +11:00

21 lines
530 B
OCaml

open Angstrom
let is_digit = function '0' .. '9' -> true | _ -> false
let is_semi c = c == ';'
let digit = take_while is_digit >>| int_of_string
let skip_semi = skip is_semi
let semi_digits = sep_by1 skip_semi digit
type parser = {
separator : char array;
delimiter : char array;
}
let create_parser ?(separator = [|'\x20'; '\x09'|]) ?(delimiter = [|'\x0a'; '\x0d'|]) () = { separator ; delimiter }
let is_sep = function '\x20' | '\x09' -> true | _ -> false
let is_delim = function '\x0a' | '\x0d' -> true | _ -> false