Up
module
Automata
:
sig
#
type
category = int
#
type
mark = int
#
type
sem = [
| `Longest
| `Shortest
| `First
]
#
type
rep_kind = [
| `Greedy
| `Non_greedy
]
#
type
expr
#
type
def =
#
| Cst
of
Cset
.
t
#
| Alt
of
expr
list
#
| Seq
of
sem
*
expr
*
expr
#
| Eps
#
| Rep
of
rep_kind
*
sem
*
expr
#
| Mark
of
mark
#
| Erase
of
mark
*
mark
#
| Before
of
category
#
| After
of
category
#
val
def :
expr
->
def
#
val
print_expr :
Format
.
formatter
->
expr
->
unit
#
type
ids
#
val
create_ids : unit
->
ids
#
val
cst :
ids
->
Cset
.
t
->
expr
#
val
empty :
ids
->
expr
#
val
alt :
ids
->
expr
list
->
expr
#
val
seq :
ids
->
sem
->
expr
->
expr
->
expr
#
val
eps :
ids
->
expr
#
val
rep :
ids
->
rep_kind
->
sem
->
expr
->
expr
#
val
mark :
ids
->
mark
->
expr
#
val
erase :
ids
->
mark
->
mark
->
expr
#
val
before :
ids
->
category
->
expr
#
val
after :
ids
->
category
->
expr
#
val
rename :
ids
->
expr
->
expr
#
type
idx = int
#
type
mark_offsets = (
mark
*
idx
) list
#
type
e =
#
| TSeq
of
e
list *
expr
*
sem
#
| TExp
of
mark_offsets
*
expr
#
| TMatch
of
mark_offsets
#
val
print_state :
Format
.
formatter
->
e
list
->
unit
#
type
hash
#
type
mark_infos = int array
#
type
status = [
| `Failed
| `Match
of
mark_infos
| `Running
]
#
type
state =
idx
*
category
*
e
list *
status
option
Pervasives
.
ref
*
hash
#
val
dummy_state :
state
#
val
mk_state :
idx
->
category
->
e
list
->
state
#
val
create_state :
category
->
expr
->
state
#
module
States :
Hashtbl
.
S
with
type
key
=
state
#
type
working_area
#
val
create_working_area : unit
->
working_area
#
val
index_count :
working_area
->
int
#
val
delta :
working_area
->
category
->
Cset
.c
->
state
->
state
#
val
deriv :
working_area
->
Cset
.
t
->
(
category
*
Cset
.
t
) list
->
state
->
(
Cset
.
t
*
state
) list
#
val
status :
state
->
status
end