work for lookahead
parent
1d90c97a4f
commit
9643ad1b9e
|
@ -27,7 +27,6 @@ IN: regexp.dfa
|
|||
nfa-table>> transitions>>
|
||||
[ at keys ] curry map concat
|
||||
eps swap remove ;
|
||||
! dup t member? [ t swap remove t suffix ] when ;
|
||||
|
||||
: add-todo-state ( state regexp -- )
|
||||
2dup visited-states>> key? [
|
||||
|
|
|
@ -32,7 +32,12 @@ TUPLE: transition-table transitions start-state final-states ;
|
|||
H{ } clone >>transitions
|
||||
H{ } clone >>final-states ;
|
||||
|
||||
: maybe-initialize-key ( key hashtable -- )
|
||||
2dup key? [ 2drop ] [ H{ } clone -rot set-at ] if ;
|
||||
|
||||
: set-transition ( transition hash -- )
|
||||
#! set the state as a key
|
||||
2dup [ to>> ] dip maybe-initialize-key
|
||||
[ [ to>> ] [ obj>> ] [ from>> ] tri ] dip
|
||||
2dup at* [ 2nip insert-at ]
|
||||
[ drop >r >r H{ } clone [ insert-at ] keep r> r> set-at ] if ;
|
||||
|
|
|
@ -43,6 +43,10 @@ TUPLE: dfa-traverser
|
|||
dup save-final-state
|
||||
] when text-finished? ;
|
||||
|
||||
: print-flags ( dfa-traverser -- dfa-traverser )
|
||||
dup [ current-state>> ] [ traversal-flags>> ] bi
|
||||
;
|
||||
|
||||
: increment-state ( dfa-traverser state -- dfa-traverser )
|
||||
[
|
||||
[ 1+ ] change-current-index dup current-state>> >>last-state
|
||||
|
|
Loading…
Reference in New Issue