sig
  type token
  type statement
  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 -> Language_intf.S.statement list
  val parse_input :
    [ `File of string | `Stdin ] -> unit -> Language_intf.S.statement option
end