Refactor optional peg parser

db4
Chris Double 2008-04-05 18:05:09 +13:00
parent d4897fa007
commit 3123654a84
1 changed files with 4 additions and 6 deletions

View File

@ -380,17 +380,15 @@ M: repeat1-parser (compile) ( parser -- quot )
] ;
TUPLE: optional-parser p1 ;
MATCH-VARS: ?quot ;
: optional-pattern ( -- quot )
[
?quot [ input-slice f <parse-result> ] unless*
] ;
: check-optional ( result -- result )
[ input-slice f <parse-result> ] 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 ;