summaryrefslogtreecommitdiff
path: root/ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli')
-rw-r--r--ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli166
1 files changed, 166 insertions, 0 deletions
diff --git a/ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli b/ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli
new file mode 100644
index 0000000000..c09261b96f
--- /dev/null
+++ b/ocaml-binary-annot/camlp4/Camlp4/Printers/OCaml.mli
@@ -0,0 +1,166 @@
+(****************************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* INRIA Rocquencourt *)
+(* *)
+(* Copyright 2006 Institut National de Recherche en Informatique et *)
+(* en Automatique. All rights reserved. This file is distributed under *)
+(* the terms of the GNU Library General Public License, with the special *)
+(* exception on linking described in LICENSE at the top of the Objective *)
+(* Caml source tree. *)
+(* *)
+(****************************************************************************)
+
+(* Authors:
+ * - Nicolas Pouillard: initial version
+ *)
+
+module Id : Sig.Id;
+
+module Make (Syntax : Sig.Camlp4Syntax) : sig
+ open Format;
+ include Sig.Camlp4Syntax
+ with module Loc = Syntax.Loc
+ and module Token = Syntax.Token
+ and module Ast = Syntax.Ast
+ and module Gram = Syntax.Gram;
+
+ type sep = format unit formatter unit;
+ type fun_binding = [= `patt of Ast.patt | `newtype of string ];
+
+ value list' :
+ (formatter -> 'a -> unit) ->
+ format 'b formatter unit ->
+ format unit formatter unit ->
+ formatter -> list 'a -> unit;
+
+ value list :
+ (formatter -> 'a -> unit) ->
+ format 'b formatter unit ->
+ formatter -> list 'a -> unit;
+
+ value lex_string : string -> Token.t;
+ value is_infix : string -> bool;
+ value is_keyword : string -> bool;
+ value ocaml_char : string -> string;
+ value get_expr_args :
+ Ast.expr -> list Ast.expr -> (Ast.expr * list Ast.expr);
+ value get_patt_args :
+ Ast.patt -> list Ast.patt -> (Ast.patt * list Ast.patt);
+ value get_ctyp_args :
+ Ast.ctyp -> list Ast.ctyp -> (Ast.ctyp * list Ast.ctyp);
+ value expr_fun_args : Ast.expr -> (list fun_binding * Ast.expr);
+
+ (**
+ [new printer ~curry_constr:True ~comments:False]
+ Default values: curry_constr = False
+ comments = True
+ *)
+ class printer :
+ [?curry_constr: bool] -> [?comments: bool] -> [unit] ->
+ object ('a)
+ method interf : formatter -> Ast.sig_item -> unit;
+ method implem : formatter -> Ast.str_item -> unit;
+ method sig_item : formatter -> Ast.sig_item -> unit;
+ method str_item : formatter -> Ast.str_item -> unit;
+
+ value pipe : bool;
+ value semi : bool;
+ value semisep : sep;
+ method value_val : string;
+ method value_let : string;
+ method andsep : sep;
+ method anti : formatter -> string -> unit;
+ method class_declaration :
+ formatter -> Ast.class_expr -> unit;
+ method class_expr : formatter -> Ast.class_expr -> unit;
+ method class_sig_item :
+ formatter -> Ast.class_sig_item -> unit;
+ method class_str_item :
+ formatter -> Ast.class_str_item -> unit;
+ method class_type : formatter -> Ast.class_type -> unit;
+ method constrain :
+ formatter -> (Ast.ctyp * Ast.ctyp) -> unit;
+ method ctyp : formatter -> Ast.ctyp -> unit;
+ method ctyp1 : formatter -> Ast.ctyp -> unit;
+ method constructor_type : formatter -> Ast.ctyp -> unit;
+ method dot_expr : formatter -> Ast.expr -> unit;
+ method apply_expr : formatter -> Ast.expr -> unit;
+ method expr : formatter -> Ast.expr -> unit;
+ method expr_list : formatter -> list Ast.expr -> unit;
+ method expr_list_cons : bool -> formatter -> Ast.expr -> unit;
+ method fun_binding : formatter -> fun_binding -> unit;
+ method functor_arg :
+ formatter -> (string * Ast.module_type) -> unit;
+ method functor_args :
+ formatter ->
+ list (string * Ast.module_type) -> unit;
+ method ident : formatter -> Ast.ident -> unit;
+ method numeric : formatter -> string -> string -> unit;
+ method binding : formatter -> Ast.binding -> unit;
+ method record_binding : formatter -> Ast.rec_binding -> unit;
+ method match_case : formatter -> Ast.match_case -> unit;
+ method match_case_aux : formatter -> Ast.match_case -> unit;
+ method mk_expr_list : Ast.expr -> (list Ast.expr * option Ast.expr);
+ method mk_patt_list : Ast.patt -> (list Ast.patt * option Ast.patt);
+ method simple_module_expr : formatter -> Ast.module_expr -> unit;
+ method module_expr : formatter -> Ast.module_expr -> unit;
+ method module_expr_get_functor_args :
+ list (string * Ast.module_type) ->
+ Ast.module_expr ->
+ (list (string * Ast.module_type) *
+ Ast.module_expr *
+ option Ast.module_type);
+ method module_rec_binding : formatter -> Ast.module_binding -> unit;
+ method module_type : formatter -> Ast.module_type -> unit;
+ method override_flag : formatter -> Ast.override_flag -> unit;
+ method mutable_flag : formatter -> Ast.mutable_flag -> unit;
+ method direction_flag : formatter -> Ast.direction_flag -> unit;
+ method rec_flag : formatter -> Ast.rec_flag -> unit;
+ method node : formatter -> 'b -> ('b -> Loc.t) -> unit;
+ method patt : formatter -> Ast.patt -> unit;
+ method patt1 : formatter -> Ast.patt -> unit;
+ method patt2 : formatter -> Ast.patt -> unit;
+ method patt3 : formatter -> Ast.patt -> unit;
+ method patt4 : formatter -> Ast.patt -> unit;
+ method patt5 : formatter -> Ast.patt -> unit;
+ method patt_tycon : formatter -> Ast.patt -> unit;
+ method patt_expr_fun_args :
+ formatter -> (fun_binding * Ast.expr) -> unit;
+ method patt_class_expr_fun_args :
+ formatter -> (Ast.patt * Ast.class_expr) -> unit;
+ method print_comments_before : Loc.t -> formatter -> unit;
+ method private_flag : formatter -> Ast.private_flag -> unit;
+ method virtual_flag : formatter -> Ast.virtual_flag -> unit;
+ method quoted_string : formatter -> string -> unit;
+ method raise_match_failure : formatter -> Loc.t -> unit;
+ method reset : 'a;
+ method reset_semi : 'a;
+ method semisep : sep;
+ method set_comments : bool -> 'a;
+ method set_curry_constr : bool -> 'a;
+ method set_loc_and_comments : 'a;
+ method set_semisep : sep -> 'a;
+ method simple_ctyp : formatter -> Ast.ctyp -> unit;
+ method simple_expr : formatter -> Ast.expr -> unit;
+ method simple_patt : formatter -> Ast.patt -> unit;
+ method seq : formatter -> Ast.expr -> unit;
+ method string : formatter -> string -> unit;
+ method sum_type : formatter -> Ast.ctyp -> unit;
+ method type_params : formatter -> list Ast.ctyp -> unit;
+ method class_params : formatter -> Ast.ctyp -> unit;
+ method under_pipe : 'a;
+ method under_semi : 'a;
+ method var : formatter -> string -> unit;
+ method with_constraint : formatter -> Ast.with_constr -> unit;
+ end;
+
+ value with_outfile :
+ option string -> (formatter -> 'a -> unit) -> 'a -> unit;
+
+ value print :
+ option string -> (printer -> formatter -> 'a -> unit) -> 'a -> unit;
+end;
+
+module MakeMore (Syntax : Sig.Camlp4Syntax) : (Sig.Printer Syntax.Ast).S;