functor   (L : ParseLocation.S) (T : sig type t val atom : ?loc:L.t -> int -> t end) (S :    sig     type t     val clause : ?loc:L.t -> T.t list -> t   end->   sig     type token     type statement = S.t     module Lexer : sig exception Error val token : Lexing.lexbuf -> token end     module Parser :       sig         exception Error         val file :           (Lexing.lexbuf -> token) -> Lexing.lexbuf -> statement list         val input :           (Lexing.lexbuf -> token) -> Lexing.lexbuf -> statement option         module MenhirInterpreter :           sig             type token = token             type env             type production             type 'a checkpoint = private                 InputNeeded of env               | Shifting of env * env * bool               | AboutToReduce of env * production               | HandlingError of env               | Accepted of 'a               | Rejected             val offer :               'a checkpoint ->               token * Lexing.position * Lexing.position -> 'a checkpoint             val resume : 'a checkpoint -> 'a checkpoint             type supplier = unit -> token * Lexing.position * Lexing.position             val lexer_lexbuf_to_supplier :               (Lexing.lexbuf -> token) -> Lexing.lexbuf -> supplier             val loop : supplier -> 'a checkpoint -> 'a             val loop_handle :               ('-> 'answer) ->               ('a checkpoint -> 'answer) ->               supplier -> 'a checkpoint -> 'answer             val loop_handle_undo :               ('-> 'answer) ->               ('a checkpoint -> 'a checkpoint -> 'answer) ->               supplier -> 'a checkpoint -> 'answer             val loop_test :               (env -> 'accu -> 'accu) -> 'a checkpoint -> 'accu -> 'accu             val acceptable :               'a checkpoint -> token -> Lexing.position -> bool             type 'a lr1state             val number : 'a lr1state -> int             type element =                 Element : 'a lr1state * 'a * Lexing.position *                   Lexing.position -> element             type stack = element MenhirLib.General.stream             val stack : env -> stack             val positions : env -> Lexing.position * Lexing.position             val has_default_reduction : env -> bool           end         module Incremental :           sig             val input :               Lexing.position ->               statement option MenhirInterpreter.checkpoint           end       end     val find : ?dir:string -> string -> string option     val parse_file : string -> statement list     val parse_input :       [ `File of string | `Stdin ] -> unit -> statement option   end