add ensure-not parser

release
Chris Double 2007-11-21 16:11:49 +13:00
parent 129f68d428
commit 2a464ea2c6
2 changed files with 36 additions and 0 deletions

View File

@ -113,3 +113,27 @@ IN: temporary
{ f } [
"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

View File

@ -162,3 +162,15 @@ M: ensure-parser parse ( state parser -- result )
: ensure ( parser -- 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 ;