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