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 ;
|
2007-12-24 01:58:13 -05:00
|
|
|
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# )
|
2007-12-24 01:58:13 -05:00
|
|
|
scan dup "}" = [ 2drop f ] [
|
2008-03-27 06:13:52 -04:00
|
|
|
1 head* swap object-slots slot-named slot-spec-offset
|
2007-12-24 01:58:13 -05:00
|
|
|
] 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* ;
|
2007-12-24 01:58:13 -05:00
|
|
|
|
|
|
|
: TUPLE{
|
2008-04-13 16:06:27 -04:00
|
|
|
scan-word new parse-slots parsed ; parsing
|