let split_extension path = 
    match basename path with
      (Component str) :: []->
      let lexbuf = Lexing.from_string str
      in
      let (base,ext) =  try 
        GenericPath_parser.main_extension
          GenericPath_lexer.token_extension
          lexbuf
        with Parsing.Parse_error ->
          raise FilePathNoExtension
      in
      ((dirname path) @ [Component base], ext)
    | _ ->
      raise FilePathNoExtension