functor (Syntax : Sig.Syntax->
  sig
    module Loc :
      sig
        type t = Syntax.Loc.t
        val mk : string -> t
        val ghost : t
        val of_lexing_position : Lexing.position -> t
        val to_ocaml_location : t -> Camlp4_import.Location.t
        val of_ocaml_location : Camlp4_import.Location.t -> t
        val of_lexbuf : Lexing.lexbuf -> t
        val of_tuple : string * int * int * int * int * int * int * bool -> t
        val to_tuple : t -> string * int * int * int * int * int * int * bool
        val merge : t -> t -> t
        val join : t -> t
        val move : [ `both | `start | `stop ] -> int -> t -> t
        val shift : int -> t -> t
        val move_line : int -> t -> t
        val file_name : t -> string
        val start_line : t -> int
        val stop_line : t -> int
        val start_bol : t -> int
        val stop_bol : t -> int
        val start_off : t -> int
        val stop_off : t -> int
        val start_pos : t -> Lexing.position
        val stop_pos : t -> Lexing.position
        val is_ghost : t -> bool
        val ghostify : t -> t
        val set_file_name : string -> t -> t
        val strictly_before : t -> t -> bool
        val make_absolute : t -> t
        val print : Format.formatter -> t -> unit
        val dump : Format.formatter -> t -> unit
        val to_string : t -> string
        exception Exc_located of t * exn
        val raise : t -> exn -> 'a
        val name : string ref
      end
    module Ast :
      sig
        type loc = Loc.t
        type meta_bool = Syntax.Ast.meta_bool
        type 'a meta_option = 'Syntax.Ast.meta_option
        type 'a meta_list = 'Syntax.Ast.meta_list
        type ctyp = Syntax.Ast.ctyp
        type patt = Syntax.Ast.patt
        type expr = Syntax.Ast.expr
        type module_type = Syntax.Ast.module_type
        type sig_item = Syntax.Ast.sig_item
        type with_constr = Syntax.Ast.with_constr
        type module_expr = Syntax.Ast.module_expr
        type str_item = Syntax.Ast.str_item
        type class_type = Syntax.Ast.class_type
        type class_sig_item = Syntax.Ast.class_sig_item
        type class_expr = Syntax.Ast.class_expr
        type class_str_item = Syntax.Ast.class_str_item
        type match_case = Syntax.Ast.match_case
        type ident = Syntax.Ast.ident
        type binding = Syntax.Ast.binding
        type rec_binding = Syntax.Ast.rec_binding
        type module_binding = Syntax.Ast.module_binding
        type rec_flag = Syntax.Ast.rec_flag
        type direction_flag = Syntax.Ast.direction_flag
        type mutable_flag = Syntax.Ast.mutable_flag
        type private_flag = Syntax.Ast.private_flag
        type virtual_flag = Syntax.Ast.virtual_flag
        type row_var_flag = Syntax.Ast.row_var_flag
        type override_flag = Syntax.Ast.override_flag
        val loc_of_ctyp : ctyp -> loc
        val loc_of_patt : patt -> loc
        val loc_of_expr : expr -> loc
        val loc_of_module_type : module_type -> loc
        val loc_of_module_expr : module_expr -> loc
        val loc_of_sig_item : sig_item -> loc
        val loc_of_str_item : str_item -> loc
        val loc_of_class_type : class_type -> loc
        val loc_of_class_sig_item : class_sig_item -> loc
        val loc_of_class_expr : class_expr -> loc
        val loc_of_class_str_item : class_str_item -> loc
        val loc_of_with_constr : with_constr -> loc
        val loc_of_binding : binding -> loc
        val loc_of_rec_binding : rec_binding -> loc
        val loc_of_module_binding : module_binding -> loc
        val loc_of_match_case : match_case -> loc
        val loc_of_ident : ident -> loc
        class map :
          object ('a)
            method binding : binding -> binding
            method class_expr : class_expr -> class_expr
            method class_sig_item : class_sig_item -> class_sig_item
            method class_str_item : class_str_item -> class_str_item
            method class_type : class_type -> class_type
            method ctyp : ctyp -> ctyp
            method direction_flag : direction_flag -> direction_flag
            method expr : expr -> expr
            method ident : ident -> ident
            method list : ('-> '-> 'c) -> 'b list -> 'c list
            method loc : loc -> loc
            method match_case : match_case -> match_case
            method meta_bool : meta_bool -> meta_bool
            method meta_list :
              ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
            method meta_option :
              ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
            method module_binding : module_binding -> module_binding
            method module_expr : module_expr -> module_expr
            method module_type : module_type -> module_type
            method mutable_flag : mutable_flag -> mutable_flag
            method override_flag : override_flag -> override_flag
            method patt : patt -> patt
            method private_flag : private_flag -> private_flag
            method rec_binding : rec_binding -> rec_binding
            method rec_flag : rec_flag -> rec_flag
            method row_var_flag : row_var_flag -> row_var_flag
            method sig_item : sig_item -> sig_item
            method str_item : str_item -> str_item
            method string : string -> string
            method unknown : '-> 'h
            method virtual_flag : virtual_flag -> virtual_flag
            method with_constr : with_constr -> with_constr
          end
        class fold :
          object ('a)
            method binding : binding -> 'a
            method class_expr : class_expr -> 'a
            method class_sig_item : class_sig_item -> 'a
            method class_str_item : class_str_item -> 'a
            method class_type : class_type -> 'a
            method ctyp : ctyp -> 'a
            method direction_flag : direction_flag -> 'a
            method expr : expr -> 'a
            method ident : ident -> 'a
            method list : ('-> '-> 'a) -> 'b list -> 'a
            method loc : loc -> 'a
            method match_case : match_case -> 'a
            method meta_bool : meta_bool -> 'a
            method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
            method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
            method module_binding : module_binding -> 'a
            method module_expr : module_expr -> 'a
            method module_type : module_type -> 'a
            method mutable_flag : mutable_flag -> 'a
            method override_flag : override_flag -> 'a
            method patt : patt -> 'a
            method private_flag : private_flag -> 'a
            method rec_binding : rec_binding -> 'a
            method rec_flag : rec_flag -> 'a
            method row_var_flag : row_var_flag -> 'a
            method sig_item : sig_item -> 'a
            method str_item : str_item -> 'a
            method string : string -> 'a
            method unknown : '-> 'a
            method virtual_flag : virtual_flag -> 'a
            method with_constr : with_constr -> 'a
          end
      end
    module Token :
      sig
        module Loc :
          sig
            type t = Loc.t
            val mk : string -> t
            val ghost : t
            val of_lexing_position : Lexing.position -> t
            val to_ocaml_location : t -> Camlp4_import.Location.t
            val of_ocaml_location : Camlp4_import.Location.t -> t
            val of_lexbuf : Lexing.lexbuf -> t
            val of_tuple :
              string * int * int * int * int * int * int * bool -> t
            val to_tuple :
              t -> string * int * int * int * int * int * int * bool
            val merge : t -> t -> t
            val join : t -> t
            val move : [ `both | `start | `stop ] -> int -> t -> t
            val shift : int -> t -> t
            val move_line : int -> t -> t
            val file_name : t -> string
            val start_line : t -> int
            val stop_line : t -> int
            val start_bol : t -> int
            val stop_bol : t -> int
            val start_off : t -> int
            val stop_off : t -> int
            val start_pos : t -> Lexing.position
            val stop_pos : t -> Lexing.position
            val is_ghost : t -> bool
            val ghostify : t -> t
            val set_file_name : string -> t -> t
            val strictly_before : t -> t -> bool
            val make_absolute : t -> t
            val print : Format.formatter -> t -> unit
            val dump : Format.formatter -> t -> unit
            val to_string : t -> string
            exception Exc_located of t * exn
            val raise : t -> exn -> 'a
            val name : string ref
          end
        type t = Syntax.Token.t
        val to_string : t -> string
        val print : Format.formatter -> t -> unit
        val match_keyword : string -> t -> bool
        val extract_string : t -> string
        module Filter :
          sig
            type token_filter = (t, Loc.t) Sig.stream_filter
            type t = Syntax.Token.Filter.t
            val mk : (string -> bool) -> t
            val define_filter : t -> (token_filter -> token_filter) -> unit
            val filter : t -> token_filter
            val keyword_added : t -> string -> bool -> unit
            val keyword_removed : t -> string -> unit
          end
        module Error :
          sig
            type t = Syntax.Token.Error.t
            exception E of t
            val to_string : t -> string
            val print : Format.formatter -> t -> unit
          end
      end
    module Gram :
      sig
        module Loc :
          sig
            type t = Loc.t
            val mk : string -> t
            val ghost : t
            val of_lexing_position : Lexing.position -> t
            val to_ocaml_location : t -> Camlp4_import.Location.t
            val of_ocaml_location : Camlp4_import.Location.t -> t
            val of_lexbuf : Lexing.lexbuf -> t
            val of_tuple :
              string * int * int * int * int * int * int * bool -> t
            val to_tuple :
              t -> string * int * int * int * int * int * int * bool
            val merge : t -> t -> t
            val join : t -> t
            val move : [ `both | `start | `stop ] -> int -> t -> t
            val shift : int -> t -> t
            val move_line : int -> t -> t
            val file_name : t -> string
            val start_line : t -> int
            val stop_line : t -> int
            val start_bol : t -> int
            val stop_bol : t -> int
            val start_off : t -> int
            val stop_off : t -> int
            val start_pos : t -> Lexing.position
            val stop_pos : t -> Lexing.position
            val is_ghost : t -> bool
            val ghostify : t -> t
            val set_file_name : string -> t -> t
            val strictly_before : t -> t -> bool
            val make_absolute : t -> t
            val print : Format.formatter -> t -> unit
            val dump : Format.formatter -> t -> unit
            val to_string : t -> string
            exception Exc_located of t * exn
            val raise : t -> exn -> 'a
            val name : string ref
          end
        module Action :
          sig
            type t = Syntax.Gram.Action.t
            val mk : '-> t
            val get : t -> 'a
            val getf : t -> '-> 'b
            val getf2 : t -> '-> '-> 'c
          end
        module Token :
          sig
            module Loc :
              sig
                type t = Loc.t
                val mk : string -> t
                val ghost : t
                val of_lexing_position : Lexing.position -> t
                val to_ocaml_location : t -> Camlp4_import.Location.t
                val of_ocaml_location : Camlp4_import.Location.t -> t
                val of_lexbuf : Lexing.lexbuf -> t
                val of_tuple :
                  string * int * int * int * int * int * int * bool -> t
                val to_tuple :
                  t -> string * int * int * int * int * int * int * bool
                val merge : t -> t -> t
                val join : t -> t
                val move : [ `both | `start | `stop ] -> int -> t -> t
                val shift : int -> t -> t
                val move_line : int -> t -> t
                val file_name : t -> string
                val start_line : t -> int
                val stop_line : t -> int
                val start_bol : t -> int
                val stop_bol : t -> int
                val start_off : t -> int
                val stop_off : t -> int
                val start_pos : t -> Lexing.position
                val stop_pos : t -> Lexing.position
                val is_ghost : t -> bool
                val ghostify : t -> t
                val set_file_name : string -> t -> t
                val strictly_before : t -> t -> bool
                val make_absolute : t -> t
                val print : Format.formatter -> t -> unit
                val dump : Format.formatter -> t -> unit
                val to_string : t -> string
                exception Exc_located of t * exn
                val raise : t -> exn -> 'a
                val name : string ref
              end
            type t = Token.t
            val to_string : t -> string
            val print : Format.formatter -> t -> unit
            val match_keyword : string -> t -> bool
            val extract_string : t -> string
            module Filter :
              sig
                type token_filter = (t, Loc.t) Sig.stream_filter
                type t = Token.Filter.t
                val mk : (string -> bool) -> t
                val define_filter :
                  t -> (token_filter -> token_filter) -> unit
                val filter : t -> token_filter
                val keyword_added : t -> string -> bool -> unit
                val keyword_removed : t -> string -> unit
              end
            module Error :
              sig
                type t = Token.Error.t
                exception E of t
                val to_string : t -> string
                val print : Format.formatter -> t -> unit
              end
          end
        type gram = Syntax.Gram.gram
        type internal_entry = Syntax.Gram.internal_entry
        type tree = Syntax.Gram.tree
        type token_pattern = (Token.t -> bool) * string
        type token_info = Syntax.Gram.token_info
        type token_stream = (Token.t * token_info) Stream.t
        val token_location : token_info -> Loc.t
        type symbol =
          Syntax.Gram.symbol =
            Smeta of string * symbol list * Action.t
          | Snterm of internal_entry
          | Snterml of internal_entry * string
          | Slist0 of symbol
          | Slist0sep of symbol * symbol
          | Slist1 of symbol
          | Slist1sep of symbol * symbol
          | Sopt of symbol
          | Stry of symbol
          | Sself
          | Snext
          | Stoken of token_pattern
          | Skeyword of string
          | Stree of tree
        type production_rule = symbol list * Action.t
        type single_extend_statment =
            string option * Sig.Grammar.assoc option * production_rule list
        type extend_statment =
            Sig.Grammar.position option * single_extend_statment list
        type delete_statment = symbol list
        type ('a, 'b, 'c) fold =
            internal_entry ->
            symbol list -> ('Stream.t -> 'b) -> 'Stream.t -> 'c
        type ('a, 'b, 'c) foldsep =
            internal_entry ->
            symbol list ->
            ('Stream.t -> 'b) -> ('Stream.t -> unit) -> 'Stream.t -> 'c
        module Entry :
          sig
            type 'a t = 'Syntax.Gram.Entry.t
            val mk : string -> 'a t
            val of_parser : string -> (token_stream -> 'a) -> 'a t
            val setup_parser : 'a t -> (token_stream -> 'a) -> unit
            val name : 'a t -> string
            val print : Format.formatter -> 'a t -> unit
            val dump : Format.formatter -> 'a t -> unit
            val obj : 'a t -> internal_entry
            val clear : 'a t -> unit
          end
        val get_filter : unit -> Token.Filter.t
        type 'a not_filtered = 'Syntax.Gram.not_filtered
        val extend : 'Entry.t -> extend_statment -> unit
        val delete_rule : 'Entry.t -> delete_statment -> unit
        val srules : 'Entry.t -> (symbol list * Action.t) list -> symbol
        val sfold0 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
        val sfold1 : ('-> '-> 'b) -> '-> ('c, 'a, 'b) fold
        val sfold0sep : ('-> '-> 'b) -> '-> ('c, 'a, 'b) foldsep
        val lex :
          Loc.t -> char Stream.t -> (Token.t * Loc.t) Stream.t not_filtered
        val lex_string :
          Loc.t -> string -> (Token.t * Loc.t) Stream.t not_filtered
        val filter : (Token.t * Loc.t) Stream.t not_filtered -> token_stream
        val parse : 'Entry.t -> Loc.t -> char Stream.t -> 'a
        val parse_string : 'Entry.t -> Loc.t -> string -> 'a
        val parse_tokens_before_filter :
          'Entry.t -> (Token.t * Loc.t) Stream.t not_filtered -> 'a
        val parse_tokens_after_filter : 'Entry.t -> token_stream -> 'a
      end
    module Quotation :
      sig
        module Ast :
          sig
            type loc = Loc.t
            type meta_bool = Ast.meta_bool
            type 'a meta_option = 'Ast.meta_option
            type 'a meta_list = 'Ast.meta_list
            type ctyp = Ast.ctyp
            type patt = Ast.patt
            type expr = Ast.expr
            type module_type = Ast.module_type
            type sig_item = Ast.sig_item
            type with_constr = Ast.with_constr
            type module_expr = Ast.module_expr
            type str_item = Ast.str_item
            type class_type = Ast.class_type
            type class_sig_item = Ast.class_sig_item
            type class_expr = Ast.class_expr
            type class_str_item = Ast.class_str_item
            type match_case = Ast.match_case
            type ident = Ast.ident
            type binding = Ast.binding
            type rec_binding = Ast.rec_binding
            type module_binding = Ast.module_binding
            type rec_flag = Ast.rec_flag
            type direction_flag = Ast.direction_flag
            type mutable_flag = Ast.mutable_flag
            type private_flag = Ast.private_flag
            type virtual_flag = Ast.virtual_flag
            type row_var_flag = Ast.row_var_flag
            type override_flag = Ast.override_flag
            val loc_of_ctyp : ctyp -> loc
            val loc_of_patt : patt -> loc
            val loc_of_expr : expr -> loc
            val loc_of_module_type : module_type -> loc
            val loc_of_module_expr : module_expr -> loc
            val loc_of_sig_item : sig_item -> loc
            val loc_of_str_item : str_item -> loc
            val loc_of_class_type : class_type -> loc
            val loc_of_class_sig_item : class_sig_item -> loc
            val loc_of_class_expr : class_expr -> loc
            val loc_of_class_str_item : class_str_item -> loc
            val loc_of_with_constr : with_constr -> loc
            val loc_of_binding : binding -> loc
            val loc_of_rec_binding : rec_binding -> loc
            val loc_of_module_binding : module_binding -> loc
            val loc_of_match_case : match_case -> loc
            val loc_of_ident : ident -> loc
            class map :
              object ('a)
                method binding : binding -> binding
                method class_expr : class_expr -> class_expr
                method class_sig_item : class_sig_item -> class_sig_item
                method class_str_item : class_str_item -> class_str_item
                method class_type : class_type -> class_type
                method ctyp : ctyp -> ctyp
                method direction_flag : direction_flag -> direction_flag
                method expr : expr -> expr
                method ident : ident -> ident
                method list : ('-> '-> 'c) -> 'b list -> 'c list
                method loc : loc -> loc
                method match_case : match_case -> match_case
                method meta_bool : meta_bool -> meta_bool
                method meta_list :
                  ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                method meta_option :
                  ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                method module_binding : module_binding -> module_binding
                method module_expr : module_expr -> module_expr
                method module_type : module_type -> module_type
                method mutable_flag : mutable_flag -> mutable_flag
                method override_flag : override_flag -> override_flag
                method patt : patt -> patt
                method private_flag : private_flag -> private_flag
                method rec_binding : rec_binding -> rec_binding
                method rec_flag : rec_flag -> rec_flag
                method row_var_flag : row_var_flag -> row_var_flag
                method sig_item : sig_item -> sig_item
                method str_item : str_item -> str_item
                method string : string -> string
                method unknown : '-> 'h
                method virtual_flag : virtual_flag -> virtual_flag
                method with_constr : with_constr -> with_constr
              end
            class fold :
              object ('a)
                method binding : binding -> 'a
                method class_expr : class_expr -> 'a
                method class_sig_item : class_sig_item -> 'a
                method class_str_item : class_str_item -> 'a
                method class_type : class_type -> 'a
                method ctyp : ctyp -> 'a
                method direction_flag : direction_flag -> 'a
                method expr : expr -> 'a
                method ident : ident -> 'a
                method list : ('-> '-> 'a) -> 'b list -> 'a
                method loc : loc -> 'a
                method match_case : match_case -> 'a
                method meta_bool : meta_bool -> 'a
                method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                method meta_option : ('-> '-> 'a) -> 'd meta_option -> 'a
                method module_binding : module_binding -> 'a
                method module_expr : module_expr -> 'a
                method module_type : module_type -> 'a
                method mutable_flag : mutable_flag -> 'a
                method override_flag : override_flag -> 'a
                method patt : patt -> 'a
                method private_flag : private_flag -> 'a
                method rec_binding : rec_binding -> 'a
                method rec_flag : rec_flag -> 'a
                method row_var_flag : row_var_flag -> 'a
                method sig_item : sig_item -> 'a
                method str_item : str_item -> 'a
                method string : string -> 'a
                method unknown : '-> 'a
                method virtual_flag : virtual_flag -> 'a
                method with_constr : with_constr -> 'a
              end
          end
        module DynAst :
          sig
            module Ast :
              sig
                type loc = Ast.loc
                type meta_bool = Ast.meta_bool
                type 'a meta_option = 'Ast.meta_option
                type 'a meta_list = 'Ast.meta_list
                type ctyp = Ast.ctyp
                type patt = Ast.patt
                type expr = Ast.expr
                type module_type = Ast.module_type
                type sig_item = Ast.sig_item
                type with_constr = Ast.with_constr
                type module_expr = Ast.module_expr
                type str_item = Ast.str_item
                type class_type = Ast.class_type
                type class_sig_item = Ast.class_sig_item
                type class_expr = Ast.class_expr
                type class_str_item = Ast.class_str_item
                type match_case = Ast.match_case
                type ident = Ast.ident
                type binding = Ast.binding
                type rec_binding = Ast.rec_binding
                type module_binding = Ast.module_binding
                type rec_flag = Ast.rec_flag
                type direction_flag = Ast.direction_flag
                type mutable_flag = Ast.mutable_flag
                type private_flag = Ast.private_flag
                type virtual_flag = Ast.virtual_flag
                type row_var_flag = Ast.row_var_flag
                type override_flag = Ast.override_flag
                val loc_of_ctyp : ctyp -> loc
                val loc_of_patt : patt -> loc
                val loc_of_expr : expr -> loc
                val loc_of_module_type : module_type -> loc
                val loc_of_module_expr : module_expr -> loc
                val loc_of_sig_item : sig_item -> loc
                val loc_of_str_item : str_item -> loc
                val loc_of_class_type : class_type -> loc
                val loc_of_class_sig_item : class_sig_item -> loc
                val loc_of_class_expr : class_expr -> loc
                val loc_of_class_str_item : class_str_item -> loc
                val loc_of_with_constr : with_constr -> loc
                val loc_of_binding : binding -> loc
                val loc_of_rec_binding : rec_binding -> loc
                val loc_of_module_binding : module_binding -> loc
                val loc_of_match_case : match_case -> loc
                val loc_of_ident : ident -> loc
                class map :
                  object ('a)
                    method binding : binding -> binding
                    method class_expr : class_expr -> class_expr
                    method class_sig_item : class_sig_item -> class_sig_item
                    method class_str_item : class_str_item -> class_str_item
                    method class_type : class_type -> class_type
                    method ctyp : ctyp -> ctyp
                    method direction_flag : direction_flag -> direction_flag
                    method expr : expr -> expr
                    method ident : ident -> ident
                    method list : ('-> '-> 'c) -> 'b list -> 'c list
                    method loc : loc -> loc
                    method match_case : match_case -> match_case
                    method meta_bool : meta_bool -> meta_bool
                    method meta_list :
                      ('-> '-> 'e) -> 'd meta_list -> 'e meta_list
                    method meta_option :
                      ('-> '-> 'g) -> 'f meta_option -> 'g meta_option
                    method module_binding : module_binding -> module_binding
                    method module_expr : module_expr -> module_expr
                    method module_type : module_type -> module_type
                    method mutable_flag : mutable_flag -> mutable_flag
                    method override_flag : override_flag -> override_flag
                    method patt : patt -> patt
                    method private_flag : private_flag -> private_flag
                    method rec_binding : rec_binding -> rec_binding
                    method rec_flag : rec_flag -> rec_flag
                    method row_var_flag : row_var_flag -> row_var_flag
                    method sig_item : sig_item -> sig_item
                    method str_item : str_item -> str_item
                    method string : string -> string
                    method unknown : '-> 'h
                    method virtual_flag : virtual_flag -> virtual_flag
                    method with_constr : with_constr -> with_constr
                  end
                class fold :
                  object ('a)
                    method binding : binding -> 'a
                    method class_expr : class_expr -> 'a
                    method class_sig_item : class_sig_item -> 'a
                    method class_str_item : class_str_item -> 'a
                    method class_type : class_type -> 'a
                    method ctyp : ctyp -> 'a
                    method direction_flag : direction_flag -> 'a
                    method expr : expr -> 'a
                    method ident : ident -> 'a
                    method list : ('-> '-> 'a) -> 'b list -> 'a
                    method loc : loc -> 'a
                    method match_case : match_case -> 'a
                    method meta_bool : meta_bool -> 'a
                    method meta_list : ('-> '-> 'a) -> 'c meta_list -> 'a
                    method meta_option :
                      ('-> '-> 'a) -> 'd meta_option -> 'a
                    method module_binding : module_binding -> 'a
                    method module_expr : module_expr -> 'a
                    method module_type : module_type -> 'a
                    method mutable_flag : mutable_flag -> 'a
                    method override_flag : override_flag -> 'a
                    method patt : patt -> 'a
                    method private_flag : private_flag -> 'a
                    method rec_binding : rec_binding -> 'a
                    method rec_flag : rec_flag -> 'a
                    method row_var_flag : row_var_flag -> 'a
                    method sig_item : sig_item -> 'a
                    method str_item : str_item -> 'a
                    method string : string -> 'a
                    method unknown : '-> 'a
                    method virtual_flag : virtual_flag -> 'a
                    method with_constr : with_constr -> 'a
                  end
              end
            type 'a tag = 'Syntax.Quotation.DynAst.tag
            val ctyp_tag : Ast.ctyp tag
            val patt_tag : Ast.patt tag
            val expr_tag : Ast.expr tag
            val module_type_tag : Ast.module_type tag
            val sig_item_tag : Ast.sig_item tag
            val with_constr_tag : Ast.with_constr tag
            val module_expr_tag : Ast.module_expr tag
            val str_item_tag : Ast.str_item tag
            val class_type_tag : Ast.class_type tag
            val class_sig_item_tag : Ast.class_sig_item tag
            val class_expr_tag : Ast.class_expr tag
            val class_str_item_tag : Ast.class_str_item tag
            val match_case_tag : Ast.match_case tag
            val ident_tag : Ast.ident tag
            val binding_tag : Ast.binding tag
            val rec_binding_tag : Ast.rec_binding tag
            val module_binding_tag : Ast.module_binding tag
            val string_of_tag : 'a tag -> string
            module Pack :
              functor (X : sig type 'a t end->
                sig
                  type pack = Syntax.Quotation.DynAst.Pack(X).pack
                  val pack : 'a tag -> 'X.t -> pack
                  val unpack : 'a tag -> pack -> 'X.t
                  val print_tag : Format.formatter -> pack -> unit
                end
          end
        type 'a expand_fun = Ast.loc -> string option -> string -> 'a
        val add : string -> 'DynAst.tag -> 'a expand_fun -> unit
        val find : string -> 'DynAst.tag -> 'a expand_fun
        val default : string ref
        val parse_quotation_result :
          (Ast.loc -> string -> 'a) ->
          Ast.loc -> Sig.quotation -> string -> string -> 'a
        val translate : (string -> string) ref
        val expand : Ast.loc -> Sig.quotation -> 'DynAst.tag -> 'a
        val dump_file : string option ref
        module Error :
          sig
            type t = Syntax.Quotation.Error.t
            exception E of t
            val to_string : t -> string
            val print : Format.formatter -> t -> unit
          end
      end
    module AntiquotSyntax :
      sig
        val parse_expr : Ast.loc -> string -> Ast.expr
        val parse_patt : Ast.loc -> string -> Ast.patt
      end
    type warning = Loc.t -> string -> unit
    val default_warning : warning
    val current_warning : warning ref
    val print_warning : warning
    val parse_implem :
      ?directive_handler:(Ast.str_item -> Ast.str_item option) ->
      Ast.loc -> char Stream.t -> Ast.str_item
    val parse_interf :
      ?directive_handler:(Ast.sig_item -> Ast.sig_item option) ->
      Ast.loc -> char Stream.t -> Ast.sig_item
    val print_interf :
      ?input_file:string -> ?output_file:string -> Ast.sig_item -> unit
    val print_implem :
      ?input_file:string -> ?output_file:string -> Ast.str_item -> unit
    val print_interf : ?input_file:'-> ?output_file:'-> '-> unit
    val print_implem : ?input_file:'-> ?output_file:'-> '-> unit
  end