diff --git a/examples/id_sexp.ml b/examples/id_sexp.ml index 90e63c27..cac7b040 100644 --- a/examples/id_sexp.ml +++ b/examples/id_sexp.ml @@ -1,13 +1,18 @@ - -let () = - if Array.length Sys.argv <> 2 then failwith "usage: id_sexp file"; - let f = Sys.argv.(1) in - let s = CCSexpM.parse_file_list f in - match s with +let pp_sexp s = match s with | `Ok l -> List.iter (fun s -> Format.printf "@[%a@]@." CCSexpM.print s) l | `Error msg -> Format.printf "error: %s@." msg + +let () = + match Sys.argv with + | [| _ |] -> + let s = CCSexpM.parse_chan_list stdin in + pp_sexp s + | [| _; file |] -> + let s = CCSexpM.parse_file_list file in + pp_sexp s + | _ -> failwith "usage: id_sexp [file]"