(** 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 []