`sig
type position = Stdlib.Lexing.position
module type INCREMENTAL_ENGINE =
sig
type token
type production
type 'a env
type 'a checkpoint = private
InputNeeded of
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
| Shifting of
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env *
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env *
bool
| AboutToReduce of
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env *
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.production
| HandlingError of
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
| Accepted of 'a
| Rejected
val offer :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.token *
CamlinternalMenhirLib.IncrementalEngine.position *
CamlinternalMenhirLib.IncrementalEngine.position ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint
type strategy = [ `Legacy | `Simplified ]
val resume :
?strategy:CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.strategy ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint
type supplier =
unit ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.token *
CamlinternalMenhirLib.IncrementalEngine.position *
CamlinternalMenhirLib.IncrementalEngine.position
val lexer_lexbuf_to_supplier :
(Stdlib.Lexing.lexbuf ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.token) ->
Stdlib.Lexing.lexbuf ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.supplier
val loop :
?strategy:CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.strategy ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.supplier ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'a
val loop_handle :
('a -> 'answer) ->
('a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'answer) ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.supplier ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'answer
val loop_handle_undo :
('a -> 'answer) ->
('a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'answer) ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.supplier ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'answer
val shifts :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
option
val acceptable :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.token ->
CamlinternalMenhirLib.IncrementalEngine.position -> bool
type 'a lr1state
val number :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.lr1state ->
int
val production_index :
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.production ->
int
val find_production :
int ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.production
type element =
Element :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.lr1state *
'a * CamlinternalMenhirLib.IncrementalEngine.position *
CamlinternalMenhirLib.IncrementalEngine.position -> CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.element
type stack =
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.element
CamlinternalMenhirLib.General.stream
val stack :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.stack
val top :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.element
option
val pop_many :
int ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
option
val get :
int ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.element
option
val current_state_number :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
int
val equal :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
bool
val positions :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
CamlinternalMenhirLib.IncrementalEngine.position *
CamlinternalMenhirLib.IncrementalEngine.position
val env_has_default_reduction :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
bool
val state_has_default_reduction :
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.lr1state ->
bool
val pop :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
option
val force_reduction :
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.production ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env
val input_needed :
'a CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.env ->
'a
CamlinternalMenhirLib.IncrementalEngine.INCREMENTAL_ENGINE.checkpoint
end
module type SYMBOLS =
sig
type 'a terminal
type 'a nonterminal
type 'a symbol =
T :
'a CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.terminal ->
'a CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.symbol
| N :
'a CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.nonterminal ->
'a CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.symbol
type xsymbol =
X :
'a CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.symbol ->
CamlinternalMenhirLib.IncrementalEngine.SYMBOLS.xsymbol
end
module type INSPECTION =
sig
type 'a terminal
type 'a nonterminal
type 'a symbol =
T : 'a terminal -> 'a symbol
| N : 'a nonterminal -> 'a symbol
type xsymbol = X : 'a symbol -> xsymbol
type 'a lr1state
type production
type item =
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production * int
val compare_terminals : 'a terminal -> 'b terminal -> int
val compare_nonterminals : 'a nonterminal -> 'b nonterminal -> int
val compare_symbols : xsymbol -> xsymbol -> int
val compare_productions :
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production ->
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production -> int
val compare_items :
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item ->
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item -> int
val incoming_symbol :
'a CamlinternalMenhirLib.IncrementalEngine.INSPECTION.lr1state ->
'a symbol
val items :
'a CamlinternalMenhirLib.IncrementalEngine.INSPECTION.lr1state ->
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.item list
val lhs :
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production ->
xsymbol
val rhs :
CamlinternalMenhirLib.IncrementalEngine.INSPECTION.production ->
xsymbol list
val nullable : 'a nonterminal -> bool
val first : 'a nonterminal -> 'b terminal -> bool
val xfirst : xsymbol -> 'a terminal -> bool
val foreach_terminal : (xsymbol -> 'a -> 'a) -> 'a -> 'a
val foreach_terminal_but_error : (xsymbol -> 'a -> 'a) -> 'a -> 'a
type 'a env
val feed :
'a symbol ->
CamlinternalMenhirLib.IncrementalEngine.position ->
'a ->
CamlinternalMenhirLib.IncrementalEngine.position ->
'b CamlinternalMenhirLib.IncrementalEngine.INSPECTION.env ->
'b CamlinternalMenhirLib.IncrementalEngine.INSPECTION.env
end
module type EVERYTHING =
sig
type token
type production
type 'a env
type 'a checkpoint = private
InputNeeded of 'a env
| Shifting of 'a env * 'a env * bool
| AboutToReduce of 'a env * production
| HandlingError of 'a env
| Accepted of 'a
| Rejected
val offer :
'a checkpoint -> token * position * position -> 'a checkpoint
type strategy = [ `Legacy | `Simplified ]
val resume : ?strategy:strategy -> 'a checkpoint -> 'a checkpoint
type supplier = unit -> token * position * position
val lexer_lexbuf_to_supplier :
(Lexing.lexbuf -> token) -> Lexing.lexbuf -> supplier
val loop : ?strategy:strategy -> supplier -> 'a checkpoint -> 'a
val loop_handle :
('a -> 'answer) ->
('a checkpoint -> 'answer) -> supplier -> 'a checkpoint -> 'answer
val loop_handle_undo :
('a -> 'answer) ->
('a checkpoint -> 'a checkpoint -> 'answer) ->
supplier -> 'a checkpoint -> 'answer
val shifts : 'a checkpoint -> 'a env option
val acceptable : 'a checkpoint -> token -> position -> bool
type 'a lr1state
val number : 'a lr1state -> int
val production_index : production -> int
val find_production : int -> production
type element =
Element : 'a lr1state * 'a * position * position -> element
type stack = element General.stream
val stack : 'a env -> stack
val top : 'a env -> element option
val pop_many : int -> 'a env -> 'a env option
val get : int -> 'a env -> element option
val current_state_number : 'a env -> int
val equal : 'a env -> 'a env -> bool
val positions : 'a env -> position * position
val env_has_default_reduction : 'a env -> bool
val state_has_default_reduction : 'a lr1state -> bool
val pop : 'a env -> 'a env option
val force_reduction : production -> 'a env -> 'a env
val input_needed : 'a env -> 'a checkpoint
type 'a terminal
type 'a nonterminal
type 'a symbol =
T : 'a terminal -> 'a symbol
| N : 'a nonterminal -> 'a symbol
type xsymbol = X : 'a symbol -> xsymbol
type item = production * int
val compare_terminals : 'a terminal -> 'b terminal -> int
val compare_nonterminals : 'a nonterminal -> 'b nonterminal -> int
val compare_symbols : xsymbol -> xsymbol -> int
val compare_productions : production -> production -> int
val compare_items : item -> item -> int
val incoming_symbol : 'a lr1state -> 'a symbol
val items : 'a lr1state -> item list
val lhs : production -> xsymbol
val rhs : production -> xsymbol list
val nullable : 'a nonterminal -> bool
val first : 'a nonterminal -> 'b terminal -> bool
val xfirst : xsymbol -> 'a terminal -> bool
val foreach_terminal : (xsymbol -> 'a -> 'a) -> 'a -> 'a
val foreach_terminal_but_error : (xsymbol -> 'a -> 'a) -> 'a -> 'a
val feed : 'a symbol -> position -> 'a -> position -> 'b env -> 'b env
end
end`