factor/core/effects/parser/parser.factor

29 lines
808 B
Factor
Raw Normal View History

2008-06-25 04:25:08 -04:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2008-07-28 23:03:13 -04:00
USING: lexer sets sequences kernel splitting effects
combinators arrays parser ;
2008-06-25 04:25:08 -04:00
IN: effects.parser
2008-07-18 20:22:59 -04:00
DEFER: parse-effect
ERROR: bad-effect ;
: parse-effect-token ( end -- token/f )
scan tuck = [ drop f ] [
dup { f "(" "((" } member? [ bad-effect ] [
":" ?tail [
scan-word {
{ \ ( [ ")" parse-effect ] }
[ ]
} case 2array
] when
2008-06-25 04:25:08 -04:00
] if
] if ;
2008-07-18 20:22:59 -04:00
: parse-effect-tokens ( end -- tokens )
[ parse-effect-token dup ] curry [ ] [ drop ] produce ;
: parse-effect ( end -- effect )
parse-effect-tokens { "--" } split1 dup
[ <effect> ] [ "Stack effect declaration must contain --" throw ] if ;