# Module Pparse

    module Pparse: sig .. end

Driver for the parser, external preprocessors and ast plugin hooks

    type error =

`|` | `CannotRun of `string``
`|` | `WrongMagic of `string``

    exception Error of error

    val preprocess : string -> string

    val remove_preprocessed : string -> unit

    type 'a ast_kind =

`|` | `Structure : `Parsetree.structure ast_kind``
`|` | `Signature : `Parsetree.signature ast_kind``

    val read_ast : 'a ast_kind -> string -> 'a

    val write_ast : 'a ast_kind -> string -> 'a -> unit

    val file : Format.formatter ->
           tool_name:string ->
           string -> (Lexing.lexbuf -> 'a) -> 'a ast_kind -> 'a

    val apply_rewriters : ?restore:bool -> tool_name:string -> 'a ast_kind -> 'a -> 'a

If `restore = true` (the default), cookies set by external rewriters will be kept for later calls.

    val apply_rewriters_str : ?restore:bool ->
           tool_name:string -> Parsetree.structure -> Parsetree.structure

    val apply_rewriters_sig : ?restore:bool ->
           tool_name:string -> Parsetree.signature -> Parsetree.signature

    val report_error : Format.formatter -> error -> unit

    val parse_implementation : Format.formatter -> tool_name:string -> string -> Parsetree.structure

    val parse_interface : Format.formatter -> tool_name:string -> string -> Parsetree.signature

    val call_external_preprocessor : string -> string -> string

    val open_and_check_magic : string -> string -> in_channel * bool

    module ImplementationHooks: Misc.HookSig  with type t = Parsetree.structure

    module InterfaceHooks: Misc.HookSig  with type t = Parsetree.signature