]> gitweb.factorcode.org Git - factor.git/blob - basis/literals/literals.factor
59fca6d90379ef229c5424e980ea6029f772bac8
[factor.git] / basis / literals / literals.factor
1 ! (c) Joe Groff, see license for details
2 USING: accessors combinators continuations fry kernel lexer
3 math parser quotations sequences vectors words words.alias ;
4 IN: literals
5
6 <PRIVATE
7
8 ! Use def>> call so that CONSTANT:s defined in the same file can
9 ! be called
10
11 : expand-alias ( obj -- obj' )
12     dup alias? [ def>> first expand-alias ] when ;
13
14 : expand-literal ( seq obj -- seq' )
15     '[
16         _ expand-alias dup word? [ def>> call ] when
17     ] with-datastack ;
18
19 : expand-literals ( seq -- seq' )
20     { } [ expand-literal ] reduce ;
21
22 PRIVATE>
23
24 SYNTAX: $ scan-word expand-literal >vector ;
25 SYNTAX: $[ parse-quotation with-datastack >vector ;
26 SYNTAX: ${ \ } [ expand-literals ] parse-literal ;
27 SYNTAX: flags{
28     \ } [
29         expand-literals
30         0 [ bitor ] reduce
31     ] parse-literal ;