]> gitweb.factorcode.org Git - factor.git/commitdiff
Make pegs seq parser use short circuiting &&
authorChris Double <chris@bethia.(none)>
Thu, 10 Jul 2008 10:52:15 +0000 (22:52 +1200)
committerChris Double <chris@bethia.(none)>
Thu, 10 Jul 2008 23:37:02 +0000 (11:37 +1200)
extra/peg/peg.factor

index 868072efa5a79315805621e5d0263e81317a03ec..d1302107ea8d0dc5ee211f4bf16d8e24f20a55ca 100755 (executable)
@@ -2,8 +2,9 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel sequences strings fry namespaces math assocs shuffle debugger io
        vectors arrays math.parser math.order vectors combinators combinators.lib
-       combinators.short-circuit classes sets unicode.categories compiler.units parser
-       words quotations effects memoize accessors locals effects splitting ;
+       classes sets unicode.categories compiler.units parser
+       words quotations effects memoize accessors locals effects splitting 
+       combinators.short-circuit combinators.short-circuit.smart ;
 IN: peg
 
 USE: prettyprint
@@ -410,8 +411,10 @@ TUPLE: seq-parser parsers ;
 M: seq-parser (compile) ( peg -- quot )
   [
     [ input-slice V{ } clone <parse-result> ] %
-    parsers>> unclip compiled-parser 1quotation , \ parse-seq-element , [ 
-      compiled-parser 1quotation [ merge-errors ] compose , \ parse-seq-element , ] each 
+    [
+      parsers>> unclip compiled-parser 1quotation [ parse-seq-element ] curry ,
+      [ compiled-parser 1quotation [ merge-errors ] compose [ parse-seq-element ] curry , ] each 
+    ] { } make , \ && , 
   ] [ ] make ;
 
 TUPLE: choice-parser parsers ;