factor/extra/tuple-syntax/tuple-syntax.factor

19 lines
478 B
Factor
Raw Normal View History

2008-02-06 20:23:39 -05:00
USING: kernel sequences slots parser words classes
2008-03-27 06:13:52 -04:00
slots.private mirrors ;
IN: tuple-syntax
! TUPLE: foo bar baz ;
! TUPLE{ foo bar: 1 baz: 2 }
2008-02-06 20:23:39 -05:00
: parse-slot-writer ( tuple -- slot# )
scan dup "}" = [ 2drop f ] [
2008-03-27 06:13:52 -04:00
1 head* swap object-slots slot-named slot-spec-offset
] if ;
: parse-slots ( accum tuple -- accum tuple )
dup parse-slot-writer
2008-03-27 20:52:53 -04:00
[ scan-object pick rot set-slot parse-slots ] when* ;
: TUPLE{
scan-word new parse-slots parsed ; parsing