sig
type symbol = int
and state = int
and rhs = (Mtt.symbol, Mtt.state) RightHandSide.rhs
and action = Undefined | Det of Mtt.rhs | Non_det of Mtt.rhs list
and rule = Mtt.symbol -> Mtt.action
and rule_set = (Mtt.state, Mtt.rule) Hashtbl.t
and ('a, 'b, 'c) mtt = {
mutable q : 'a SymbolTable.symbol_table;
mutable sigma : 'b SymbolTable.symbol_table;
mutable delta : 'c SymbolTable.symbol_table;
mutable init : Mtt.symbol;
mutable rules : Mtt.rule_set;
}
val empty :
('a -> 'a -> bool) * ('a -> string) ->
('b -> 'b -> bool) * ('b -> string) ->
('c -> 'c -> bool) * ('c -> string) -> ('a, 'b, 'c) Mtt.mtt
val add_state : ('a, 'b, 'c) Mtt.mtt -> 'a -> unit
val add_sigma : ('a, 'b, 'c) Mtt.mtt -> 'b -> unit
val add_delta : ('a, 'b, 'c) Mtt.mtt -> 'c -> unit
val add_rule :
('a, 'b, 'c) Mtt.mtt -> Mtt.state -> Mtt.symbol -> Mtt.rhs -> unit
val get_action :
('a, 'b, 'c) Mtt.mtt -> Mtt.state -> Mtt.symbol -> Mtt.action
val ord_of_state : ('a, 'b, 'c) Mtt.mtt -> 'a -> Mtt.state
val ord_of_sigma : ('a, 'b, 'c) Mtt.mtt -> 'b -> Mtt.symbol
val ord_of_delta : ('a, 'b, 'c) Mtt.mtt -> 'c -> Mtt.symbol
val state_of_ord : ('a, 'b, 'c) Mtt.mtt -> Mtt.state -> 'a
val sigma_of_ord : ('a, 'b, 'c) Mtt.mtt -> Mtt.symbol -> 'b
val delta_of_ord : ('a, 'b, 'c) Mtt.mtt -> Mtt.symbol -> 'c
val get_init : ('a, 'b, 'c) Mtt.mtt -> Mtt.state
val set_init : ('a, 'b, 'c) Mtt.mtt -> Mtt.state -> unit
val state_to_string : ('a, 'b, 'c) Mtt.mtt -> 'a -> string
val sigma_to_string : ('a, 'b, 'c) Mtt.mtt -> 'b -> string
val delta_to_string : ('a, 'b, 'c) Mtt.mtt -> 'c -> string
val print_states : ('a, 'b, 'c) Mtt.mtt -> unit
val print_sigma : ('a, 'b, 'c) Mtt.mtt -> unit
val print_delta : ('a, 'b, 'c) Mtt.mtt -> unit
end