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 ;