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