sig
exception Memory_overflow
type automata =
Perform of int * Inria_lexgen.tag_action list
| Shift of Inria_lexgen.automata_trans *
(Inria_lexgen.automata_move * Inria_lexgen.memory_action list) array
and automata_trans =
No_remember
| Remember of int * Inria_lexgen.tag_action list
and automata_move = Backtrack | Goto of int
and memory_action = Copy of int * int | Set of int
and tag_action = SetTag of int * int | EraseTag of int
type tag_base = Start | End | Mem of int
type tag_addr = Sum of (Inria_lexgen.tag_base * int)
type ident_info =
Ident_string of bool * Inria_lexgen.tag_addr * Inria_lexgen.tag_addr
| Ident_char of bool * Inria_lexgen.tag_addr
type t_env = (string * Inria_lexgen.ident_info) list
type ('a, 'b) automata_entry = {
auto_name : string;
auto_args : 'a;
auto_mem_size : int;
auto_initial_state : int * Inria_lexgen.memory_action list;
auto_actions : (int * Inria_lexgen.t_env * 'b) list;
}
val make_dfa :
('a, 'b) Inria_syntax.entry list ->
('a, 'b) Inria_lexgen.automata_entry list * Inria_lexgen.automata array
end