From 247bf2137bbb785f644219f695388426bf05c389 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Sat, 5 Apr 2008 18:30:11 +1300 Subject: [PATCH] Refactor ensure and ensure-not parsers --- extra/peg/peg.factor | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index ab70745b11..7970d761de 100755 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -405,31 +405,19 @@ M: semantic-parser (compile) ( parser -- quot ) TUPLE: ensure-parser p1 ; -: ensure-pattern ( -- quot ) - [ - input-slice ?quot [ - ignore - ] [ - drop f - ] if - ] ; +: check-ensure ( old-input result -- result ) + [ ignore ] [ drop f ] if ; M: ensure-parser (compile) ( parser -- quot ) - p1>> compiled-parser \ ?quot ensure-pattern match-replace ; + p1>> compiled-parser 1quotation '[ input-slice @ check-ensure ] ; TUPLE: ensure-not-parser p1 ; -: ensure-not-pattern ( -- quot ) - [ - input-slice ?quot [ - drop f - ] [ - ignore - ] if - ] ; +: check-ensure-not ( old-input result -- result ) + [ drop f ] [ ignore ] if ; M: ensure-not-parser (compile) ( parser -- quot ) - p1>> compiled-parser \ ?quot ensure-not-pattern match-replace ; + p1>> compiled-parser 1quotation '[ input-slice @ check-ensure-not ] ; TUPLE: action-parser p1 quot ;