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
 |