! (c) Joe Groff, see license for details
-USING: accessors continuations kernel parser words quotations
-combinators.smart vectors sequences fry ;
+USING: accessors continuations fry kernel lexer math parser
+sequences vectors words words.alias ;
IN: literals
<PRIVATE
! Use def>> call so that CONSTANT:s defined in the same file can
! be called
+: expand-alias ( obj -- obj' )
+ dup alias? [ def>> first expand-alias ] when ;
+
: expand-literal ( seq obj -- seq' )
- '[ _ dup word? [ def>> call ] when ] with-datastack ;
+ '[
+ _ expand-alias dup word? [ def>> call ] when
+ ] with-datastack ;
: expand-literals ( seq -- seq' )
- [ [ { } ] dip expand-literal ] map concat ;
+ { } [ expand-literal ] reduce ;
PRIVATE>
SYNTAX: $ scan-word expand-literal >vector ;
SYNTAX: $[ parse-quotation with-datastack >vector ;
SYNTAX: ${ \ } [ expand-literals ] parse-literal ;
-
-SYNTAX: $$
- scan-word execute( accum -- accum ) dup pop [ >quotation ] keep
- [ output>sequence ] 2curry call( -- object ) parsed ;
+SYNTAX: flags{
+ \ } [
+ expand-literals
+ 0 [ bitor ] reduce
+ ] parse-literal ;