let parse q = let p = Xpath.Parser.parse (Ulexing.from_utf8_string q) in match p with [ _ ] -> List.map (fun p -> let steps = match p with Xpath.Ast.Absolute l | Xpath.Ast.Relative l -> l in let nl = List.map (fun s -> let _ = Format.flush_str_formatter () in Xpath.Ast.print_step Format.str_formatter s; Format.flush_str_formatter()) steps in nl) p | _ -> let _ = Format.flush_str_formatter () in Xpath.Ast.print_path Format.str_formatter p; [[ Format.flush_str_formatter() ]] let main () = if Array.length Sys.argv <> 2 then exit 1 else let l = parse Sys.argv.(1) in List.iter (fun s -> Printf.printf "'%s' " s) (List.hd l); Printf.printf "\n%!" let () = main ()