From 51faed0945341b4f0b4e3b6d0c50588ba0651de4 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Thu, 10 Jul 2008 22:52:15 +1200 Subject: [PATCH] Make pegs seq parser use short circuiting && --- extra/peg/peg.factor | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 868072efa5..d1302107ea 100755 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -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 ] % - 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 ;