2008-12-12 02:00:23 -05:00
|
|
|
! (c) Joe Groff, see license for details
|
2010-03-31 08:24:00 -04:00
|
|
|
USING: accessors combinators continuations fry kernel lexer
|
|
|
|
math parser quotations sequences vectors words words.alias ;
|
2008-12-09 02:13:26 -05:00
|
|
|
IN: literals
|
|
|
|
|
2009-05-05 16:54:49 -04:00
|
|
|
<PRIVATE
|
|
|
|
|
|
|
|
! Use def>> call so that CONSTANT:s defined in the same file can
|
|
|
|
! be called
|
|
|
|
|
2010-03-31 08:24:00 -04:00
|
|
|
: expand-alias ( obj -- obj' )
|
|
|
|
dup alias? [ def>> first expand-alias ] when ;
|
|
|
|
|
2009-05-05 16:54:49 -04:00
|
|
|
: expand-literal ( seq obj -- seq' )
|
2010-03-31 08:24:00 -04:00
|
|
|
'[
|
|
|
|
_ expand-alias dup word? [ def>> call ] when
|
|
|
|
] with-datastack ;
|
2009-05-05 16:54:49 -04:00
|
|
|
|
|
|
|
: expand-literals ( seq -- seq' )
|
|
|
|
[ [ { } ] dip expand-literal ] map concat ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
SYNTAX: $ scan-word expand-literal >vector ;
|
2009-03-21 02:27:50 -04:00
|
|
|
SYNTAX: $[ parse-quotation with-datastack >vector ;
|
2009-05-05 16:54:49 -04:00
|
|
|
SYNTAX: ${ \ } [ expand-literals ] parse-literal ;
|
2010-03-31 08:24:00 -04:00
|
|
|
SYNTAX: flags{
|
2010-04-01 15:43:27 -04:00
|
|
|
\ } [
|
|
|
|
expand-literals
|
|
|
|
0 [ bitor ] reduce
|
|
|
|
] parse-literal ;
|