let tokenize_genlex ?(tokens=[]) str =
  let strm = Genlex.make_lexer tokens (Stream.of_string str) in
  let lst = ref [] in
    Stream.iter (fun tok -> lst := tok :: !lst) strm;
    List.rev !lst