diff --git a/unfinished/regexp/dfa/dfa.factor b/unfinished/regexp/dfa/dfa.factor index 6f244dc8af..6200a1b3c0 100644 --- a/unfinished/regexp/dfa/dfa.factor +++ b/unfinished/regexp/dfa/dfa.factor @@ -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? [ diff --git a/unfinished/regexp/transition-tables/transition-tables.factor b/unfinished/regexp/transition-tables/transition-tables.factor index 82e2db8496..1c9a3e3001 100644 --- a/unfinished/regexp/transition-tables/transition-tables.factor +++ b/unfinished/regexp/transition-tables/transition-tables.factor @@ -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 ; diff --git a/unfinished/regexp/traversal/traversal.factor b/unfinished/regexp/traversal/traversal.factor index 752323de91..cfc97aff29 100644 --- a/unfinished/regexp/traversal/traversal.factor +++ b/unfinished/regexp/traversal/traversal.factor @@ -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