{ type result = Int of int | Float of float | String of string } let digit = ['0'-'9'] let digits = digit + let lower_case = ['a'-'z'] let upper_case = ['A'-'Z'] let letter = upper_case | lower_case let letters = letter + rule main = parse | digits '.' digits as f { Float (float_of_string f) :: main lexbuf} | digits as n { Int (int_of_string n) :: main lexbuf } | letters as s { String s :: main lexbuf} | eof { [] } | _ { main lexbuf } { let newlexbuf = (Lexing.from_channel stdin) in print_string "Ready to lex.\n"; main newlexbuf }