QCaml/Basis/Gamess_reader.ml

22 lines
530 B
OCaml

(** Read a basis set file in GAMESS format and return an association list where the key is an
Element.t and the value is the parsed basis set. *)
let read ~filename =
let lexbuf =
let ic = open_in filename in
Lexing.from_channel ic
in
let rec aux accu =
try
let element, basis =
Gamess_parser.input Basis_lexer.read_all lexbuf
in
let key =
Element.of_string element
in
aux ((key, basis)::accu)
with
| Parsing.Parse_error -> List.rev accu
in
aux []