let ws = [' ''\r''\n''\t']+ let sep = ['('')'','';'] let token = [^ ' ''\r''\n''\t''('')'','';']+ rule lex = parse | ws { lex lexbuf } | sep { Lexing.lexeme lexbuf } | token { Lexing.lexeme lexbuf } | eof { raise End_of_file } { let massage_sql_tokens s = let l = ref [] in begin try let lb = Lexing.from_string s in while true do l := (lex lb) :: !l done with End_of_file -> () end ; String.concat " " (List.rev !l) }