47 lines
1.5 KiB
OCaml
47 lines
1.5 KiB
OCaml
|
(* camlp4r *)
|
||
|
(***********************************************************************)
|
||
|
(* *)
|
||
|
(* Camlp4 *)
|
||
|
(* *)
|
||
|
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
|
||
|
(* *)
|
||
|
(* Copyright 1998 Institut National de Recherche en Informatique et *)
|
||
|
(* Automatique. Distributed only by permission. *)
|
||
|
(* *)
|
||
|
(***********************************************************************)
|
||
|
|
||
|
(* Id *)
|
||
|
|
||
|
let open_out_file () =
|
||
|
match !(Pcaml.output_file) with
|
||
|
Some f -> open_out_bin f
|
||
|
| None -> set_binary_mode_out stdout true; stdout
|
||
|
;;
|
||
|
|
||
|
let interf ast =
|
||
|
let pt = Ast2pt.interf (List.map fst ast) in
|
||
|
let oc = open_out_file () in
|
||
|
output_string oc Config.ast_intf_magic_number;
|
||
|
output_value oc !(Pcaml.input_file);
|
||
|
output_value oc pt;
|
||
|
flush oc;
|
||
|
match !(Pcaml.output_file) with
|
||
|
Some _ -> close_out oc
|
||
|
| None -> ()
|
||
|
;;
|
||
|
|
||
|
let implem ast =
|
||
|
let pt = Ast2pt.implem (List.map fst ast) in
|
||
|
let oc = open_out_file () in
|
||
|
output_string oc Config.ast_impl_magic_number;
|
||
|
output_value oc !(Pcaml.input_file);
|
||
|
output_value oc pt;
|
||
|
flush oc;
|
||
|
match !(Pcaml.output_file) with
|
||
|
Some _ -> close_out oc
|
||
|
| None -> ()
|
||
|
;;
|
||
|
|
||
|
Pcaml.print_interf := interf;;
|
||
|
Pcaml.print_implem := implem;;
|