add ensure-not parser
parent
129f68d428
commit
2a464ea2c6
|
@ -112,4 +112,28 @@ IN: temporary
|
||||||
|
|
||||||
{ f } [
|
{ f } [
|
||||||
"bb" 0 <parse-state> "a" token ensure CHAR: a CHAR: z range 2array seq parse
|
"bb" 0 <parse-state> "a" token ensure CHAR: a CHAR: z range 2array seq parse
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
"a+b" 0 <parse-state>
|
||||||
|
"a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq
|
||||||
|
parse [ t ] [ f ] if
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
"a++b" 0 <parse-state>
|
||||||
|
"a" token "+" token dup ensure-not 2array seq "++" token 2array choice "b" token 3array seq
|
||||||
|
parse [ t ] [ f ] if
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
"a+b" 0 <parse-state>
|
||||||
|
"a" token "+" token "++" token 2array choice "b" token 3array seq
|
||||||
|
parse [ t ] [ f ] if
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ f } [
|
||||||
|
"a++b" 0 <parse-state>
|
||||||
|
"a" token "+" token "++" token 2array choice "b" token 3array seq
|
||||||
|
parse [ t ] [ f ] if
|
||||||
] unit-test
|
] unit-test
|
|
@ -162,3 +162,15 @@ M: ensure-parser parse ( state parser -- result )
|
||||||
|
|
||||||
: ensure ( parser -- parser )
|
: ensure ( parser -- parser )
|
||||||
ensure-parser construct-boa init-parser ;
|
ensure-parser construct-boa init-parser ;
|
||||||
|
|
||||||
|
TUPLE: ensure-not-parser p1 ;
|
||||||
|
|
||||||
|
M: ensure-not-parser parse ( state parser -- result )
|
||||||
|
dupd ensure-not-parser-p1 parse [
|
||||||
|
drop f
|
||||||
|
] [
|
||||||
|
ignore <parse-result>
|
||||||
|
] if ;
|
||||||
|
|
||||||
|
: ensure-not ( parser -- parser )
|
||||||
|
ensure-not-parser construct-boa init-parser ;
|
||||||
|
|
Loading…
Reference in New Issue