| 
									
										
										
										
											2008-02-06 20:23:39 -05:00
										 |  |  | USING: kernel sequences slots parser words classes | 
					
						
							|  |  |  | slots.private ;
 | 
					
						
							| 
									
										
										
										
											2007-12-24 01:58:13 -05:00
										 |  |  | IN: tuple-syntax | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! TUPLE: foo bar baz ; | 
					
						
							|  |  |  | ! TUPLE{ foo bar: 1 baz: 2 } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : parse-object ( -- object )
 | 
					
						
							|  |  |  |     scan-word dup parsing? [ V{ } clone swap execute first ] when ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 ] [ | 
					
						
							|  |  |  |         1 head* swap class "slots" word-prop | 
					
						
							| 
									
										
										
										
											2008-02-06 20:23:39 -05:00
										 |  |  |         [ slot-spec-name = ] with find nip slot-spec-offset | 
					
						
							| 
									
										
										
										
											2007-12-24 01:58:13 -05:00
										 |  |  |     ] if ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : parse-slots ( accum tuple -- accum tuple )
 | 
					
						
							|  |  |  |     dup parse-slot-writer | 
					
						
							| 
									
										
										
										
											2008-02-06 20:23:39 -05:00
										 |  |  |     [ parse-object pick rot set-slot parse-slots ] when* ;
 | 
					
						
							| 
									
										
										
										
											2007-12-24 01:58:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : TUPLE{ | 
					
						
							|  |  |  |     scan-word construct-empty parse-slots parsed ; parsing |