19 lines
504 B
Factor
Executable File
19 lines
504 B
Factor
Executable File
USING: classes.tuple accessors kernel sequences slots parser
|
|
lexer words classes slots.private mirrors ;
|
|
IN: tuple-syntax
|
|
|
|
! TUPLE: foo bar baz ;
|
|
! TUPLE{ foo bar: 1 baz: 2 }
|
|
|
|
: parse-slot-writer ( tuple -- slot# )
|
|
scan dup "}" = [ 2drop f ] [
|
|
but-last swap class all-slots slot-named offset>>
|
|
] if ;
|
|
|
|
: parse-slots ( accum tuple -- accum tuple )
|
|
dup parse-slot-writer
|
|
[ scan-object pick rot set-slot parse-slots ] when* ;
|
|
|
|
: TUPLE{
|
|
scan-word new parse-slots parsed ; parsing
|