From 3123654a8462634914010b5135261cc4237f9661 Mon Sep 17 00:00:00 2001 From: Chris Double Date: Sat, 5 Apr 2008 18:05:09 +1300 Subject: [PATCH] Refactor optional peg parser --- extra/peg/peg.factor | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/extra/peg/peg.factor b/extra/peg/peg.factor index 8c427d5e27..332f7164f8 100755 --- a/extra/peg/peg.factor +++ b/extra/peg/peg.factor @@ -380,17 +380,15 @@ M: repeat1-parser (compile) ( parser -- quot ) ] ; TUPLE: optional-parser p1 ; -MATCH-VARS: ?quot ; -: optional-pattern ( -- quot ) - [ - ?quot [ input-slice f ] unless* - ] ; +: check-optional ( result -- result ) + [ input-slice f ] unless* ; M: optional-parser (compile) ( parser -- quot ) - p1>> compiled-parser \ ?quot optional-pattern match-replace ; + p1>> compiled-parser 1quotation '[ @ check-optional ] ; TUPLE: semantic-parser p1 quot ; +MATCH-VARS: ?quot ; MATCH-VARS: ?parser ;