
(* The type of tokens. *)

type token = 
  | WITH
  | WHILE
  | WHEN
  | VIRTUAL
  | VAL
  | UNDERSCORE
  | UIDENT of (string)
  | TYPE
  | TRY
  | TRUE
  | TO
  | TILDE
  | THEN
  | SWITCH
  | STRUCT
  | STRING of (string * string option * string option)
  | STAR
  | SLASHGREATER
  | SIG
  | SHARPOP of (string)
  | SHARPEQUAL
  | SHARP
  | SEMISEMI
  | SEMI
  | RPAREN
  | REC
  | RBRACKET
  | RBRACE
  | QUOTED_STRING_ITEM of (string * Location.t * string * string option)
  | QUOTED_STRING_EXPR of (string * Location.t * string * string option)
  | QUOTE
  | QUESTION
  | PUB
  | PRI
  | PREFIXOP of (string)
  | POSTFIXOP of (string)
  | PLUSEQ
  | PLUSDOT
  | PLUS
  | PERCENT
  | OR
  | OPEN
  | OF
  | OBJECT
  | NONREC
  | NEW
  | NATIVEINT of (nativeint)
  | MUTABLE
  | MODULE
  | MINUSGREATER
  | MINUSDOT
  | MINUS
  | LPAREN
  | LIDENT of (string)
  | LETOP of (string)
  | LET
  | LESSUIDENT of (string)
  | LESSSLASHIDENTGREATER of (string)
  | LESSSLASHGREATER
  | LESSIDENT of (string)
  | LESSGREATER
  | LESSDOTDOTGREATER
  | LESS
  | LBRACKETPERCENTPERCENT
  | LBRACKETPERCENT
  | LBRACKETLESS
  | LBRACKETGREATER
  | LBRACKETBAR
  | LBRACKETAT
  | LBRACKET
  | LBRACELESS
  | LBRACE
  | LAZY
  | INT of (string * char option)
  | INITIALIZER
  | INHERIT
  | INFIXOP4 of (string)
  | INFIXOP3 of (string)
  | INFIXOP2 of (string)
  | INFIXOP1 of (string)
  | INFIXOP0 of (string)
  | INCLUDE
  | IN
  | IF
  | GREATERRBRACE
  | GREATERDOTDOTDOT
  | GREATER
  | FUNCTOR
  | FUNCTION
  | FUN
  | FOR
  | FLOAT of (string * char option)
  | FALSE
  | EXTERNAL
  | EXCEPTION
  | ES6_FUN
  | EQUALGREATER
  | EQUAL
  | EOL
  | EOF
  | END
  | ELSE
  | DOWNTO
  | DOTDOTDOT
  | DOTDOT
  | DOT
  | DONE
  | DOCSTRING of (string)
  | DO
  | CONSTRAINT
  | COMMENT of (string * Location.t)
  | COMMA
  | COLONGREATER
  | COLONEQUAL
  | COLONCOLON
  | COLON
  | CLASS
  | CHAR of (char)
  | BEGIN
  | BARRBRACKET
  | BARBAR
  | BAR
  | BANG
  | BACKQUOTE
  | ASSERT
  | AS
  | ANDOP of (string)
  | AND
  | AMPERSAND
  | AMPERAMPER

(* This exception is raised by the monolithic API functions. *)

exception Error

(* The monolithic API. *)

val use_file: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.toplevel_phrase list)

val toplevel_phrase: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.toplevel_phrase)

val parse_pattern: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.pattern)

val parse_expression: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.expression)

val parse_core_type: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.core_type)

val interface: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.Parsetree.signature)

val implementation: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (Ppxlib.Parsetree.structure)

module MenhirInterpreter : sig
  
  (* The incremental API. *)
  
  include MenhirLib.IncrementalEngine.INCREMENTAL_ENGINE
    with type token = token
  
  (* The indexed type of terminal symbols. *)
  
  type _ terminal = 
    | T_error : unit terminal
    | T_WITH : unit terminal
    | T_WHILE : unit terminal
    | T_WHEN : unit terminal
    | T_VIRTUAL : unit terminal
    | T_VAL : unit terminal
    | T_UNDERSCORE : unit terminal
    | T_UIDENT : (string) terminal
    | T_TYPE : unit terminal
    | T_TRY : unit terminal
    | T_TRUE : unit terminal
    | T_TO : unit terminal
    | T_TILDE : unit terminal
    | T_THEN : unit terminal
    | T_SWITCH : unit terminal
    | T_STRUCT : unit terminal
    | T_STRING : (string * string option * string option) terminal
    | T_STAR : unit terminal
    | T_SLASHGREATER : unit terminal
    | T_SIG : unit terminal
    | T_SHARPOP : (string) terminal
    | T_SHARPEQUAL : unit terminal
    | T_SHARP : unit terminal
    | T_SEMISEMI : unit terminal
    | T_SEMI : unit terminal
    | T_RPAREN : unit terminal
    | T_REC : unit terminal
    | T_RBRACKET : unit terminal
    | T_RBRACE : unit terminal
    | T_QUOTED_STRING_ITEM : (string * Location.t * string * string option) terminal
    | T_QUOTED_STRING_EXPR : (string * Location.t * string * string option) terminal
    | T_QUOTE : unit terminal
    | T_QUESTION : unit terminal
    | T_PUB : unit terminal
    | T_PRI : unit terminal
    | T_PREFIXOP : (string) terminal
    | T_POSTFIXOP : (string) terminal
    | T_PLUSEQ : unit terminal
    | T_PLUSDOT : unit terminal
    | T_PLUS : unit terminal
    | T_PERCENT : unit terminal
    | T_OR : unit terminal
    | T_OPEN : unit terminal
    | T_OF : unit terminal
    | T_OBJECT : unit terminal
    | T_NONREC : unit terminal
    | T_NEW : unit terminal
    | T_NATIVEINT : (nativeint) terminal
    | T_MUTABLE : unit terminal
    | T_MODULE : unit terminal
    | T_MINUSGREATER : unit terminal
    | T_MINUSDOT : unit terminal
    | T_MINUS : unit terminal
    | T_LPAREN : unit terminal
    | T_LIDENT : (string) terminal
    | T_LETOP : (string) terminal
    | T_LET : unit terminal
    | T_LESSUIDENT : (string) terminal
    | T_LESSSLASHIDENTGREATER : (string) terminal
    | T_LESSSLASHGREATER : unit terminal
    | T_LESSIDENT : (string) terminal
    | T_LESSGREATER : unit terminal
    | T_LESSDOTDOTGREATER : unit terminal
    | T_LESS : unit terminal
    | T_LBRACKETPERCENTPERCENT : unit terminal
    | T_LBRACKETPERCENT : unit terminal
    | T_LBRACKETLESS : unit terminal
    | T_LBRACKETGREATER : unit terminal
    | T_LBRACKETBAR : unit terminal
    | T_LBRACKETAT : unit terminal
    | T_LBRACKET : unit terminal
    | T_LBRACELESS : unit terminal
    | T_LBRACE : unit terminal
    | T_LAZY : unit terminal
    | T_INT : (string * char option) terminal
    | T_INITIALIZER : unit terminal
    | T_INHERIT : unit terminal
    | T_INFIXOP4 : (string) terminal
    | T_INFIXOP3 : (string) terminal
    | T_INFIXOP2 : (string) terminal
    | T_INFIXOP1 : (string) terminal
    | T_INFIXOP0 : (string) terminal
    | T_INCLUDE : unit terminal
    | T_IN : unit terminal
    | T_IF : unit terminal
    | T_GREATERRBRACE : unit terminal
    | T_GREATERDOTDOTDOT : unit terminal
    | T_GREATER : unit terminal
    | T_FUNCTOR : unit terminal
    | T_FUNCTION : unit terminal
    | T_FUN : unit terminal
    | T_FOR : unit terminal
    | T_FLOAT : (string * char option) terminal
    | T_FALSE : unit terminal
    | T_EXTERNAL : unit terminal
    | T_EXCEPTION : unit terminal
    | T_ES6_FUN : unit terminal
    | T_EQUALGREATER : unit terminal
    | T_EQUAL : unit terminal
    | T_EOL : unit terminal
    | T_EOF : unit terminal
    | T_END : unit terminal
    | T_ELSE : unit terminal
    | T_DOWNTO : unit terminal
    | T_DOTDOTDOT : unit terminal
    | T_DOTDOT : unit terminal
    | T_DOT : unit terminal
    | T_DONE : unit terminal
    | T_DOCSTRING : (string) terminal
    | T_DO : unit terminal
    | T_CONSTRAINT : unit terminal
    | T_COMMENT : (string * Location.t) terminal
    | T_COMMA : unit terminal
    | T_COLONGREATER : unit terminal
    | T_COLONEQUAL : unit terminal
    | T_COLONCOLON : unit terminal
    | T_COLON : unit terminal
    | T_CLASS : unit terminal
    | T_CHAR : (char) terminal
    | T_BEGIN : unit terminal
    | T_BARRBRACKET : unit terminal
    | T_BARBAR : unit terminal
    | T_BAR : unit terminal
    | T_BANG : unit terminal
    | T_BACKQUOTE : unit terminal
    | T_ASSERT : unit terminal
    | T_AS : unit terminal
    | T_ANDOP : (string) terminal
    | T_AND : unit terminal
    | T_AMPERSAND : unit terminal
    | T_AMPERAMPER : unit terminal
  
  (* The indexed type of nonterminal symbols. *)
  
  type _ nonterminal = 
    | N_with_constraint : (Ppxlib.with_constraint) nonterminal
    | N_virtual_flag : (Ppxlib.virtual_flag) nonterminal
    | N_value_type : (string Location.loc * Ppxlib.mutable_flag * Ppxlib.virtual_flag *
  Ppxlib.core_type) nonterminal
    | N_value : (string Location.loc * Ppxlib.mutable_flag * Ppxlib.class_field_kind) nonterminal
    | N_val_longident : (Ppxlib.longident) nonterminal
    | N_val_ident : (string) nonterminal
    | N_use_file_no_mapper : (Ppxlib.toplevel_phrase list) nonterminal
    | N_use_file : (Ppxlib.toplevel_phrase list) nonterminal
    | N_unattributed_expr : (Ppxlib.expression) nonterminal
    | N_unattributed_core_type : (Ppxlib.core_type) nonterminal
    | N_type_variance : (Ppxlib.variance) nonterminal
    | N_type_variables_with_variance_comma_list : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_type_variables_with_variance : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_type_variable_with_variance : (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) nonterminal
    | N_type_variable : (Ppxlib.core_type) nonterminal
    | N_type_subst_other_kind : (Ppxlib.type_kind * Ppxlib.private_flag * Ppxlib.core_type option) nonterminal
    | N_type_subst_kind : ((Ppxlib.type_kind * Ppxlib.private_flag * Ppxlib.core_type option) *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_type_subst_declarations : (Ppxlib.type_declaration list) nonterminal
    | N_type_subst_constructor_declarations_aux : (Ppxlib.constructor_declaration list *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_type_subst_constructor_declarations : (Ppxlib.constructor_declaration list *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_type_parameters : (Ppxlib.core_type list) nonterminal
    | N_type_parameter : (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) nonterminal
    | N_type_other_kind : (Ppxlib.type_kind * Ppxlib.private_flag * Ppxlib.core_type option) nonterminal
    | N_type_longident : (Ppxlib_ast__Ast_helper_lite.lid) nonterminal
    | N_type_declarations : (Ppxlib.rec_flag * Ppxlib.type_declaration list * Location.t *
  (Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option) nonterminal
    | N_type_declaration_kind : ((Ppxlib.type_kind * Ppxlib.private_flag * Ppxlib.core_type option) *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_type_declaration_details : ((Ppxlib_ast__Ast_helper_lite.str *
   (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list *
   (Ppxlib.core_type * Ppxlib.core_type * Location.t) list *
   Ppxlib.type_kind * Ppxlib.private_flag * Ppxlib.core_type option) *
  Lexing.position * Ppxlib.type_declaration list) nonterminal
    | N_type_constraint : (Ppxlib.core_type option * Ppxlib.core_type option) nonterminal
    | N_toplevel_phrase : (Ppxlib.toplevel_phrase) nonterminal
    | N_toplevel_directive : (Ppxlib.toplevel_phrase) nonterminal
    | N_tag_field : (Ppxlib.row_field) nonterminal
    | N_structure_item : (Ppxlib.structure) nonterminal
    | N_structure : (Ppxlib.structure) nonterminal
    | N_string_literal_labels : (Ppxlib.object_field list) nonterminal
    | N_string_literal_label : (Ppxlib.object_field) nonterminal
    | N_string_literal_exprs_maybe_punned : ((Ppxlib.longident Location.loc * Ppxlib.expression) list) nonterminal
    | N_string_literal_expr_maybe_punned_with_comma : (Ppxlib.longident Location.loc * Ppxlib.expression) nonterminal
    | N_string_literal_expr_maybe_punned : (Ppxlib.longident Location.loc * Ppxlib.expression) nonterminal
    | N_str_type_extension : (Ppxlib.type_extension * Location.t *
  (Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option) nonterminal
    | N_str_exception_declaration : (Ppxlib.extension_constructor) nonterminal
    | N_single_attr_id : (string) nonterminal
    | N_simple_pattern_not_ident_ : (Ppxlib.pattern) nonterminal
    | N_simple_pattern_not_ident : (Ppxlib.pattern) nonterminal
    | N_simple_pattern_ident : (Ppxlib.pattern) nonterminal
    | N_simple_pattern_direct_argument : (Ppxlib.pattern) nonterminal
    | N_simple_pattern : (Ppxlib.pattern) nonterminal
    | N_simple_module_type : (Ppxlib.module_type) nonterminal
    | N_simple_expr_template_constructor : (Ppxlib.expression) nonterminal
    | N_simple_expr_no_constructor : (Ppxlib.expression) nonterminal
    | N_simple_expr_no_call : (Ppxlib.expression) nonterminal
    | N_simple_expr_direct_argument : (Ppxlib.expression) nonterminal
    | N_simple_expr_call : (Ppxlib.expression * (Ppxlib.arg_label * Ppxlib.expression) list) nonterminal
    | N_signed_constant : (Ppxlib_ast__Ast_helper_lite.attrs * Ppxlib.constant) nonterminal
    | N_signature_items : (Ppxlib.signature) nonterminal
    | N_signature_item : (Ppxlib.signature_item_desc) nonterminal
    | N_signature : (Ppxlib.signature) nonterminal
    | N_sig_type_extension : (Ppxlib.type_extension * Location.t *
  (Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option) nonterminal
    | N_sig_exception_declaration : (Ppxlib.type_exception) nonterminal
    | N_seq_expr_no_seq_option_SEMI__ : (Ppxlib.expression) nonterminal
    | N_seq_expr_no_seq_SEMI_ : (Ppxlib.expression) nonterminal
    | N_seq_expr_option_SEMI__ : (Ppxlib.expression) nonterminal
    | N_seq_expr_SEMI_ : (Ppxlib.expression) nonterminal
    | N_separated_nonempty_list_AMPERSAND_non_arrowed_simple_core_types_ : (Ppxlib.core_type list) nonterminal
    | N_row_field_list : (Ppxlib.row_field list) nonterminal
    | N_row_field : (Ppxlib.row_field) nonterminal
    | N_record_label_declaration : (Ppxlib.label_declaration) nonterminal
    | N_record_expr_with_string_keys : (Ppxlib.expression option *
  (Ppxlib.longident Location.loc * Ppxlib.expression) list) nonterminal
    | N_record_expr : (Ppxlib.expression option *
  (Ppxlib.longident Location.loc * Ppxlib.expression) list) nonterminal
    | N_record_declaration : (Ppxlib.label_declaration list) nonterminal
    | N_rec_flag : (Ppxlib.rec_flag) nonterminal
    | N_protected_type : (Ppxlib.core_type) nonterminal
    | N_primitive_declaration : (string list) nonterminal
    | N_poly_type : (Ppxlib.core_type) nonterminal
    | N_payload : (Ppxlib.payload) nonterminal
    | N_pattern_without_or : (Ppxlib.pattern) nonterminal
    | N_pattern_optional_constraint : (Ppxlib.pattern) nonterminal
    | N_pattern_constructor_argument : (Ppxlib.pattern list) nonterminal
    | N_pattern_comma_list_extension : (Ppxlib.pattern list * Ppxlib.pattern option) nonterminal
    | N_pattern : (Ppxlib.pattern) nonterminal
    | N_parse_pattern : (Ppxlib.pattern) nonterminal
    | N_parse_expression : (Ppxlib.expression) nonterminal
    | N_parse_core_type : (Ppxlib.core_type) nonterminal
    | N_parenthesized_expr : (Ppxlib.expression) nonterminal
    | N_package_type : (Ppxlib.core_type) nonterminal
    | N_override_flag : (Ppxlib.override_flag) nonterminal
    | N_optional_expr_extension : (loc:Location.t -> Ppxlib.expression -> Ppxlib.expression) nonterminal
    | N_optional : (string -> Ppxlib.arg_label) nonterminal
    | N_option_type_constraint_ : ((Ppxlib.core_type option * Ppxlib.core_type option) option) nonterminal
    | N_option_preceded_COLONGREATER_core_type__ : (Ppxlib.core_type option) nonterminal
    | N_option_preceded_COLON_simple_module_type__ : (Ppxlib.module_type option) nonterminal
    | N_option_preceded_COLON_poly_type__ : (Ppxlib.core_type option) nonterminal
    | N_option_preceded_COLON_non_arrowed_core_type__ : (Ppxlib.core_type option) nonterminal
    | N_option_preceded_COLON_expr__ : (Ppxlib.expression option) nonterminal
    | N_option_preceded_COLON_core_type__ : (Ppxlib.core_type option) nonterminal
    | N_option_preceded_COLON_class_constructor_type__ : (Ppxlib.class_type option) nonterminal
    | N_option_item_extension_sugar_ : ((Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option) nonterminal
    | N_option_constructor_arguments_ : (Ppxlib.constructor_arguments option) nonterminal
    | N_option_as_loc_preceded_AS_LIDENT___ : (string Location.loc option) nonterminal
    | N_option_SEMI_ : (unit option) nonterminal
    | N_option_OF_ : (unit option) nonterminal
    | N_option_MODULE_ : (unit option) nonterminal
    | N_option_LET_ : (unit option) nonterminal
    | N_option_DOTDOTDOT_ : (unit option) nonterminal
    | N_option_DOT_ : (unit option) nonterminal
    | N_option_COMMA_ : (unit option) nonterminal
    | N_opt_LET_MODULE_ident : ((Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option *
  Ppxlib_ast__Ast_helper_lite.str_opt) nonterminal
    | N_opt_LET_MODULE_REC_ident : ((Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) option *
  Ppxlib_ast__Ast_helper_lite.str_opt) nonterminal
    | N_opt_LET_MODULE : (unit) nonterminal
    | N_operator : (string) nonterminal
    | N_open_description : (Ppxlib.signature_item_desc) nonterminal
    | N_open_declaration : (Ppxlib.structure_item) nonterminal
    | N_object_record_type : (Ppxlib.core_type) nonterminal
    | N_object_label_declarations : (Ppxlib.object_field list) nonterminal
    | N_object_label_declaration : (Ppxlib.object_field) nonterminal
    | N_object_body_class_fields : (Ppxlib.class_field list) nonterminal
    | N_object_body : (Ppxlib.class_structure) nonterminal
    | N_nonrec_flag : (Ppxlib.rec_flag) nonterminal
    | N_nonempty_list_preceded_CONSTRAINT_constrain__ : ((Ppxlib.core_type * Ppxlib.core_type * Location.t) list) nonterminal
    | N_nonempty_list_name_tag_ : (string list) nonterminal
    | N_nonempty_list_attributed_ext_constructor_extension_constructor_declaration__ : (Ppxlib.extension_constructor list) nonterminal
    | N_nonempty_list_attributed_ext_constructor_either_extension_constructor_declaration_extension_constructor_rebind___ : (Ppxlib.extension_constructor list) nonterminal
    | N_nonempty_list_as_loc_preceded_QUOTE_ident___ : (string Location.loc list) nonterminal
    | N_nonempty_list_as_loc_attribute__ : (Ppxlib.attribute Location.loc list) nonterminal
    | N_nonempty_list_as_loc_LIDENT__ : (string Location.loc list) nonterminal
    | N_nonempty_list___anonymous_31_ : (string list) nonterminal
    | N_non_labeled_argument_list : (Ppxlib.expression list) nonterminal
    | N_non_arrowed_simple_core_types : (Ppxlib.core_type) nonterminal
    | N_non_arrowed_simple_core_type : (Ppxlib.core_type) nonterminal
    | N_non_arrowed_core_type : (Ppxlib.core_type) nonterminal
    | N_mutable_or_virtual_flags : (Ppxlib.mutable_flag * Ppxlib.virtual_flag) nonterminal
    | N_mutable_flag : (Ppxlib.mutable_flag) nonterminal
    | N_mty_longident : (Ppxlib.longident) nonterminal
    | N_module_type_signature : (Ppxlib.module_type) nonterminal
    | N_module_type_body_EQUAL_ : (Ppxlib.module_type) nonterminal
    | N_module_type_body_COLON_ : (Ppxlib.module_type) nonterminal
    | N_module_type : (Ppxlib.module_type) nonterminal
    | N_module_parameter : (Ppxlib.functor_parameter Location.loc) nonterminal
    | N_module_expr_structure : (Ppxlib.module_expr) nonterminal
    | N_module_expr_body : (Ppxlib.module_expr) nonterminal
    | N_module_expr : (Ppxlib.module_expr) nonterminal
    | N_module_declaration : (Ppxlib.module_type) nonterminal
    | N_module_complex_expr : (Ppxlib.module_expr) nonterminal
    | N_module_binding_body : (Ppxlib.module_expr) nonterminal
    | N_module_arguments_comma_list : (Ppxlib.module_expr list) nonterminal
    | N_module_arguments : (Ppxlib.module_expr list) nonterminal
    | N_mod_longident : (Ppxlib.longident) nonterminal
    | N_mod_ident : (string option) nonterminal
    | N_mod_ext_longident : (Ppxlib.longident) nonterminal
    | N_mod_ext_lesslongident : (Ppxlib.longident) nonterminal
    | N_mod_ext_less_apply : (Ppxlib.longident) nonterminal
    | N_mod_ext_apply : (Ppxlib.longident) nonterminal
    | N_method_ : (string Location.loc * Ppxlib.class_field_kind) nonterminal
    | N_match_case_seq_expr_option_SEMI___ : (Ppxlib.case) nonterminal
    | N_match_case_expr_ : (Ppxlib.case) nonterminal
    | N_lseparated_nonempty_list_aux_SEMI_class_sig_field_ : (Ppxlib.class_type_field list list) nonterminal
    | N_lseparated_nonempty_list_aux_SEMI_class_field_ : (Ppxlib.class_field list list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_uncurried_labeled_expr_ : ((Ppxlib.arg_label * Ppxlib.expression) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_uncurried_arrow_type_parameter_ : (((Ppxlib.arg_label * Ppxlib.core_type) Location.loc * bool) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_type_variable_with_variance_ : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_type_parameter_ : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_string_literal_label_ : (Ppxlib.object_field list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_string_literal_expr_maybe_punned_ : ((Ppxlib.longident Location.loc * Ppxlib.expression) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_record_label_declaration_ : (Ppxlib.label_declaration list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_protected_type_ : (Ppxlib.core_type list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_pattern_optional_constraint_ : (Ppxlib.pattern list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_opt_spread_pattern__ : ((Location.t option * Ppxlib.pattern) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_opt_spread_lbl_expr__ : ((Location.t option * (Ppxlib.longident Location.loc * Ppxlib.expression))
  list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_opt_spread_expr_optional_constraint__ : ((Location.t option * Ppxlib.expression) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_object_label_declaration_ : (Ppxlib.object_field list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_module_parameter_ : (Ppxlib.functor_parameter Location.loc list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_module_complex_expr_ : (Ppxlib.module_expr list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_mod_ext_longident_ : (Ppxlib.longident list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_labeled_pattern_ : (Reason_parser_def.labelled_parameter Location.loc list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_field_expr_ : ((string Location.loc * Ppxlib.expression) list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_expr_optional_constraint_ : (Ppxlib.expression list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_expr_ : (Ppxlib.expression list) nonterminal
    | N_lseparated_nonempty_list_aux_COMMA_core_type_ : (Ppxlib.core_type list) nonterminal
    | N_lseparated_nonempty_list_aux_AND_with_constraint_ : (Ppxlib.with_constraint list) nonterminal
    | N_loption_type_parameters_ : (Ppxlib.core_type list) nonterminal
    | N_loption_terminated_pattern_comma_list_option_COMMA___ : (Ppxlib.pattern list) nonterminal
    | N_loption_row_field_list_ : (Ppxlib.row_field list) nonterminal
    | N_loption_preceded_GREATER_nonempty_list_name_tag___ : (string list) nonterminal
    | N_loption_parenthesized_type_variables_with_variance_comma_list__ : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_loption_parenthesized_class_type_arguments_comma_list__ : (Ppxlib.core_type list) nonterminal
    | N_loption_object_label_declarations_ : (Ppxlib.object_field list) nonterminal
    | N_loption_located_attributes_ : (Ppxlib.attribute Location.loc list) nonterminal
    | N_loption_functor_parameters_ : (Ppxlib.functor_parameter Location.loc list) nonterminal
    | N_loption_class_type_parameters_ : ((Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_longident_type_constraint : (Ppxlib.longident Location.loc *
  (Ppxlib.core_type option * Ppxlib.core_type option) option) nonterminal
    | N_llist_aux_preceded_COMMA_opt_spread_lbl_expr___ : ((Location.t option * (Ppxlib.longident Location.loc * Ppxlib.expression))
  list) nonterminal
    | N_llist_aux_match_case_seq_expr_option_SEMI____ : (Ppxlib.case list) nonterminal
    | N_llist_aux_match_case_expr__ : (Ppxlib.case list) nonterminal
    | N_list_simple_expr_no_call_ : (Ppxlib.expression list) nonterminal
    | N_list_bar_row_field_ : (Ppxlib.row_field list) nonterminal
    | N_list_attributed_ext_constructor_extension_constructor_declaration__ : (Ppxlib.extension_constructor list) nonterminal
    | N_list_attributed_ext_constructor_either_extension_constructor_declaration_extension_constructor_rebind___ : (Ppxlib.extension_constructor list) nonterminal
    | N_list_and_module_rec_declaration_ : (Ppxlib.module_declaration list) nonterminal
    | N_list_and_module_bindings_ : (Ppxlib.module_binding list) nonterminal
    | N_list_and_let_binding_ : (Ppxlib.value_binding list) nonterminal
    | N_list_and_class_type_declaration_ : (Ppxlib.class_type_declaration list) nonterminal
    | N_list_and_class_description_ : (Ppxlib.class_description list) nonterminal
    | N_list_and_class_declaration_ : (Astlib.Ast_502.Parsetree.class_declaration list) nonterminal
    | N_letop_bindings : (Ppxlib.pattern * Ppxlib.expression * Ppxlib.binding_op list) nonterminal
    | N_letop_binding_body : (Ppxlib.pattern * Ppxlib.expression) nonterminal
    | N_let_bindings : (Reason_parser_def.let_bindings) nonterminal
    | N_let_binding_body : (Ppxlib.pattern * Ppxlib.expression * Ppxlib.value_constraint option) nonterminal
    | N_let_binding : (Reason_parser_def.let_bindings) nonterminal
    | N_lbl_pattern : (Ppxlib.longident Location.loc * Ppxlib.pattern) nonterminal
    | N_labelled_arrow_type_parameter_optional : (Ppxlib.arg_label * Ppxlib.core_type) nonterminal
    | N_labeled_pattern_constraint : (string Location.loc -> Ppxlib.pattern) nonterminal
    | N_labeled_pattern : (Reason_parser_def.labelled_parameter Location.loc) nonterminal
    | N_labeled_expr_constraint : (Ppxlib.longident Location.loc -> Ppxlib.expression) nonterminal
    | N_labeled_expr : (Ppxlib.arg_label * Ppxlib.expression) nonterminal
    | N_labeled_arguments : ((Ppxlib.arg_label * Ppxlib.expression) list) nonterminal
    | N_label_longident : (Ppxlib.longident) nonterminal
    | N_jsx_without_leading_less : (Ppxlib.expression) nonterminal
    | N_jsx_start_tag_and_args_without_leading_less : (((Ppxlib.arg_label * Ppxlib.expression) list ->
   Location.t -> Ppxlib.expression) *
  Ppxlib.longident) nonterminal
    | N_jsx_start_tag_and_args : (((Ppxlib.arg_label * Ppxlib.expression) list ->
   Location.t -> Ppxlib.expression) *
  Ppxlib.longident) nonterminal
    | N_jsx_arguments : ((Ppxlib.arg_label * Ppxlib.expression) list) nonterminal
    | N_jsx : (Ppxlib.expression) nonterminal
    | N_item_extension_sugar : (Ppxlib_ast__Ast_helper_lite.attrs * string Location.loc) nonterminal
    | N_item_extension : (Ppxlib.extension) nonterminal
    | N_interface : (Ppxlib.Parsetree.signature) nonterminal
    | N_implementation : (Ppxlib.Parsetree.structure) nonterminal
    | N_ident : (string) nonterminal
    | N_greater_spread : (string) nonterminal
    | N_generalized_constructor_arguments : (Ppxlib.constructor_arguments * Ppxlib.core_type option) nonterminal
    | N_functor_parameters : (Ppxlib.functor_parameter Location.loc list) nonterminal
    | N_fun_def_EQUALGREATER_non_arrowed_core_type_ : (Ppxlib.expression) nonterminal
    | N_fun_def_EQUAL_core_type_ : (Ppxlib.expression) nonterminal
    | N_field_expr : (string Location.loc * Ppxlib.expression) nonterminal
    | N_extension_constructor_rebind : (Ppxlib.extension_constructor) nonterminal
    | N_extension_constructor_declaration : (Ppxlib.extension_constructor) nonterminal
    | N_extension : (Astlib.Ast_502.Parsetree.extension) nonterminal
    | N_expr_optional_constraint : (Ppxlib.expression) nonterminal
    | N_expr_list_or_seq_expr : (Ppxlib.expression list) nonterminal
    | N_expr_list : (Ppxlib.expression list) nonterminal
    | N_expr_comma_seq_extension : (Ppxlib.expression list * Ppxlib.expression option) nonterminal
    | N_expr : (Ppxlib.expression) nonterminal
    | N_es6_parameters : (Reason_parser_def.labelled_parameter Location.loc list * bool) nonterminal
    | N_embedded_private_flag_ : (Ppxlib.private_flag) nonterminal
    | N_embedded___anonymous_39_ : (Ppxlib.directive_argument_desc option) nonterminal
    | N_embedded___anonymous_32_ : (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) nonterminal
    | N_embedded___anonymous_1_ : (Ppxlib.toplevel_phrase list) nonterminal
    | N_embedded___anonymous_0_ : (Ppxlib.toplevel_phrase) nonterminal
    | N_either_preceded_EQUALGREATER_expr__braced_expr_ : (Ppxlib.expression) nonterminal
    | N_either_preceded_EQUAL_expr__braced_expr_ : (Ppxlib.expression) nonterminal
    | N_either_preceded_EQUAL_class_instance_type__class_type_body_ : (Ppxlib.class_type) nonterminal
    | N_either_preceded_EQUAL_class_expr__class_body_expr_ : (Ppxlib.class_expr) nonterminal
    | N_either_parenthesized_longident_type_constraint__longident_type_constraint_ : (Ppxlib.longident Location.loc *
  (Ppxlib.core_type option * Ppxlib.core_type option) option) nonterminal
    | N_either_extension_constructor_declaration_extension_constructor_rebind_ : (Ppxlib.extension_constructor) nonterminal
    | N_either_constructor_declaration_bar_constructor_declaration_ : (Ppxlib.constructor_declaration) nonterminal
    | N_either___anonymous_11___anonymous_12_ : (Ppxlib.private_flag) nonterminal
    | N_either_ES6_FUN_FUN_ : (unit) nonterminal
    | N_direction_flag : (Ppxlib.direction_flag) nonterminal
    | N_core_type2 : (Ppxlib.core_type) nonterminal
    | N_core_type : (Ppxlib.core_type) nonterminal
    | N_constructor_declarations_aux : (Ppxlib.constructor_declaration list *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_constructor_declarations : (Ppxlib.constructor_declaration list *
  (Ppxlib.core_type * Ppxlib.core_type * Location.t) list * Lexing.position *
  Ppxlib.type_declaration list) nonterminal
    | N_constructor_declaration : (Ppxlib.constructor_declaration) nonterminal
    | N_constructor_arguments_comma_list : (Ppxlib.core_type list) nonterminal
    | N_constructor_arguments : (Ppxlib.constructor_arguments) nonterminal
    | N_constrain_field : (Ppxlib.core_type * Ppxlib.core_type) nonterminal
    | N_constrain : (Ppxlib.core_type * Ppxlib.core_type * Location.t) nonterminal
    | N_constr_longident : (Ppxlib.longident) nonterminal
    | N_constant : (Ppxlib_ast__Ast_helper_lite.attrs * Ppxlib.constant) nonterminal
    | N_clty_longident : (Ppxlib.longident) nonterminal
    | N_class_type_declarations : (Astlib.Ast_502.Parsetree.class_type_declaration list) nonterminal
    | N_class_type_declaration_details : (Ppxlib_ast__Ast_helper_lite.str * Ppxlib.class_type * Ppxlib.virtual_flag *
  (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_class_type_body : (Ppxlib.class_type) nonterminal
    | N_class_type_arguments_comma_list : (Ppxlib.core_type list) nonterminal
    | N_class_simple_expr : (Ppxlib.class_expr) nonterminal
    | N_class_sig_field : (Ppxlib.class_type_field list) nonterminal
    | N_class_sig_body_fields : (Ppxlib.class_type_field list) nonterminal
    | N_class_sig_body_cty : (Ppxlib.class_type_desc) nonterminal
    | N_class_sig_body : (Ppxlib.class_signature) nonterminal
    | N_class_self_type : (Ppxlib.core_type) nonterminal
    | N_class_self_expr : (Ppxlib.pattern) nonterminal
    | N_class_longident : (Ppxlib.longident) nonterminal
    | N_class_instance_type : (Ppxlib.class_type) nonterminal
    | N_class_field : (Ppxlib.class_field list) nonterminal
    | N_class_expr_lets_and_rest : (Ppxlib.class_expr) nonterminal
    | N_class_expr : (Ppxlib.class_expr) nonterminal
    | N_class_descriptions : (Ppxlib.class_description list) nonterminal
    | N_class_description_details : (Ppxlib_ast__Ast_helper_lite.str * Ppxlib.class_type * Ppxlib.virtual_flag *
  (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_class_declaration_details : (Ppxlib_ast__Ast_helper_lite.str * Ppxlib.class_expr * Ppxlib.virtual_flag *
  (Ppxlib.core_type * (Ppxlib.variance * Ppxlib.injectivity)) list) nonterminal
    | N_class_declaration_body : (Ppxlib.class_expr) nonterminal
    | N_class_constructor_type : (Ppxlib.class_type) nonterminal
    | N_braced_expr : (Ppxlib.expression) nonterminal
    | N_boption_AMPERSAND_ : (bool) nonterminal
    | N_basic_core_type : (Ppxlib.core_type) nonterminal
    | N_bar_row_field : (Ppxlib.row_field) nonterminal
    | N_bar_constructor_declaration : (Ppxlib.constructor_declaration) nonterminal
    | N_attributed_ext_constructors_extension_constructor_declaration_ : (Ppxlib.extension_constructor list) nonterminal
    | N_attributed_ext_constructors_either_extension_constructor_declaration_extension_constructor_rebind__ : (Ppxlib.extension_constructor list) nonterminal
    | N_attribute : (Ppxlib.attribute) nonterminal
    | N_attr_id : (string Location.loc) nonterminal
    | N_arrowed_simple_core_type : (Ppxlib.core_type) nonterminal
    | N_arrow_type_parameters : (((Ppxlib.arg_label * Ppxlib.core_type) Location.loc * bool) list) nonterminal
    | N_arrow_type_parameter : (Ppxlib.arg_label * Ppxlib.core_type) nonterminal
    | N_and_type_subst_declaration : (Ppxlib.type_declaration list) nonterminal
    | N_and_type_declaration : (Ppxlib.type_declaration list) nonterminal
    | N_and_module_rec_declaration : (Ppxlib.module_declaration) nonterminal
    | N_and_module_bindings : (Ppxlib.module_binding) nonterminal
    | N_and_class_type_declaration : (Ppxlib.class_type_declaration) nonterminal
    | N_and_class_description : (Ppxlib.class_description) nonterminal
    | N_and_class_declaration : (Ppxlib.class_expr Ppxlib.class_infos) nonterminal
    | N__lbl_pattern_list : ((Location.t option * (Ppxlib.longident Location.loc * Ppxlib.pattern)) list *
  Ppxlib.closed_flag) nonterminal
  
  (* The inspection API. *)
  
  include MenhirLib.IncrementalEngine.INSPECTION
    with type 'a lr1state := 'a lr1state
    with type production := production
    with type 'a terminal := 'a terminal
    with type 'a nonterminal := 'a nonterminal
    with type 'a env := 'a env
  
end

(* The entry point(s) to the incremental API. *)

module Incremental : sig
  
  val use_file: Lexing.position -> (Ppxlib.toplevel_phrase list) MenhirInterpreter.checkpoint
  
  val toplevel_phrase: Lexing.position -> (Ppxlib.toplevel_phrase) MenhirInterpreter.checkpoint
  
  val parse_pattern: Lexing.position -> (Ppxlib.pattern) MenhirInterpreter.checkpoint
  
  val parse_expression: Lexing.position -> (Ppxlib.expression) MenhirInterpreter.checkpoint
  
  val parse_core_type: Lexing.position -> (Ppxlib.core_type) MenhirInterpreter.checkpoint
  
  val interface: Lexing.position -> (Ppxlib.Parsetree.signature) MenhirInterpreter.checkpoint
  
  val implementation: Lexing.position -> (Ppxlib.Parsetree.structure) MenhirInterpreter.checkpoint
  
end

(* The parse tables. *)

(* Warning: this submodule is undocumented. In the future,
   its type could change, or it could disappear altogether. *)

module Tables : MenhirLib.TableFormat.TABLES
  with type token = token
