]> gitweb.factorcode.org Git - factor.git/commitdiff
work for lookahead
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 19 Sep 2008 22:54:34 +0000 (17:54 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Fri, 19 Sep 2008 22:54:34 +0000 (17:54 -0500)
unfinished/regexp/dfa/dfa.factor
unfinished/regexp/transition-tables/transition-tables.factor
unfinished/regexp/traversal/traversal.factor

index 6f244dc8afe2d4545d38e3d7734eda29b1421060..6200a1b3c0408e4eea17261edd8fa5e450909f7b 100644 (file)
@@ -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? [
index 82e2db84965e743bc7092af8c37d9ed9f8cf0ce6..1c9a3e3001ca359c848c1b985eb8a4de6834a7f3 100644 (file)
@@ -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 ;
index 752323de910efac705598e38383dd7f8c3aeefd7..cfc97aff292455a412af90b1d65a0e68e2c6511f 100644 (file)
@@ -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