]> gitweb.factorcode.org Git - factor.git/commitdiff
peg: less stack shuffling in define-parser-word.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 27 Sep 2019 15:24:53 +0000 (08:24 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 27 Sep 2019 15:24:53 +0000 (08:24 -0700)
basis/peg/peg.factor

index aedb38b3a4b63b14f0dbc615291f4b9c848b2dd2..dc47f6a84f02126568568a1231f2a1ef20f8c302 100644 (file)
@@ -265,15 +265,14 @@ GENERIC: (compile) ( peg -- quot )
 : execute-parser ( word -- result )
     pos get apply-rule process-parser-result ;
 
-: preset-parser-word ( parser -- parser word )
-    gensym [ >>compiled ] keep ;
+: preset-parser-word ( parser -- word parser )
+    gensym swap over >>compiled ;
 
-: define-parser-word ( parser word -- )
+: define-parser-word ( word parser -- )
     ! Return the body of the word that is the compiled version
     ! of the parser.
-
-    2dup swap peg>> (compile) ( -- result ) define-declared
-    swap id>> "peg-id" set-word-prop ;
+    [ peg>> (compile) ( -- result ) define-declared ]
+    [ id>> "peg-id" set-word-prop ] 2bi ;
 
 : compile-parser ( parser -- word )
     ! Look to see if the given parser has been compiled.
@@ -285,7 +284,7 @@ GENERIC: (compile) ( peg -- quot )
     dup compiled>> [
         nip
     ] [
-        preset-parser-word [ define-parser-word ] keep
+        preset-parser-word dupd define-parser-word
     ] if* ;
 
 : compile-parser-quot ( parser -- quot )