# Module type CamlinternalMenhirLib.EngineTypes.TABLE

    module type TABLE = sig .. end

    type state

    val number : state -> int

    type token

    type terminal

    type nonterminal

    type semantic_value

    val token2terminal : token ->
           terminal

    val token2value : token ->
           semantic_value

    val error_terminal : terminal

    val error_value : semantic_value

    val foreach_terminal : (terminal -> 'a -> 'a) -> 'a -> 'a

    type production

    val production_index : production -> int

    val find_production : int -> production

    val default_reduction : state ->
           ('env -> production -> 'answer) ->
           ('env -> 'answer) -> 'env -> 'answer

    val action : state ->
           terminal ->
           semantic_value ->
           ('env ->
            bool ->
            terminal ->
            semantic_value ->
            state -> 'answer) ->
           ('env -> production -> 'answer) ->
           ('env -> 'answer) -> 'env -> 'answer

    val maybe_shift_t : state ->
           terminal ->
           state option

`maybe_shift_t s t` determines whether there exists a transition out of the state `s`, labeled with the terminal symbol `t`, to some state `s'`. If so, it returns `Some s'`. Otherwise, it returns `None`.

    val may_reduce_prod : state ->
           terminal ->
           production -> bool

`may_reduce_prod s t prod` determines whether in the state `s`, with lookahead symbol `t`, the automaton reduces production `prod`. This test accounts for the possible existence of a default reduction.

    val goto_nt : state ->
           nonterminal ->
           state

    val goto_prod : state ->
           production ->
           state

    val maybe_goto_nt : state ->
           nonterminal ->
           state option

    val lhs : production ->
           nonterminal

    val is_start : production -> bool

    exception Error

    type semantic_action = (state,
            semantic_value,
            token)
           CamlinternalMenhirLib.EngineTypes.env ->
           (state,
            semantic_value)
           CamlinternalMenhirLib.EngineTypes.stack

    val semantic_action : production ->
           semantic_action

    val may_reduce : state ->
           production -> bool

    val log : bool

    module Log: CamlinternalMenhirLib.EngineTypes.LOG
        with type state := state
         and type terminal := terminal
         and type production := production