Refactor optional peg parser
parent
d4897fa007
commit
3123654a84
|
@ -380,17 +380,15 @@ M: repeat1-parser (compile) ( parser -- quot )
|
||||||
] ;
|
] ;
|
||||||
|
|
||||||
TUPLE: optional-parser p1 ;
|
TUPLE: optional-parser p1 ;
|
||||||
MATCH-VARS: ?quot ;
|
|
||||||
|
|
||||||
: optional-pattern ( -- quot )
|
: check-optional ( result -- result )
|
||||||
[
|
[ input-slice f <parse-result> ] unless* ;
|
||||||
?quot [ input-slice f <parse-result> ] unless*
|
|
||||||
] ;
|
|
||||||
|
|
||||||
M: optional-parser (compile) ( parser -- quot )
|
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 ;
|
TUPLE: semantic-parser p1 quot ;
|
||||||
|
MATCH-VARS: ?quot ;
|
||||||
|
|
||||||
MATCH-VARS: ?parser ;
|
MATCH-VARS: ?parser ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue