Source

xml_of_ocaml / main.ml

(* Executable frontend to the OCaml->XML pretty-printer
 * Author: David Lazar
 *)
open Camlp4.PreCast

module Caml = Camlp4OCamlParser.Make(Camlp4OCamlRevisedParser.Make(Syntax))

let parse f =
    let ic = open_in f in
    let strm = Stream.of_channel ic in
    let res = Caml.parse_implem (Loc.mk f) strm in
    close_in ic; res

let xml_of_file f =
    ASTToXML.print_str_item Format.str_formatter (parse f);
    Format.flush_str_formatter ()

let main () =
    let argc = Array.length Sys.argv in
    if argc < 2 then
        (Format.printf "Usage: %s <FILE>\n" Sys.executable_name; exit 1)
    else
        let xml = xml_of_file Sys.argv.(1) in
        print_endline xml
;;

try main ()
with e ->
    Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e;
    exit 1
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.