| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  | ! Copyright (C) 2009 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: slots kernel sequences fry accessors parser lexer words | 
					
						
							| 
									
										
										
										
											2009-01-30 15:56:44 -05:00
										 |  |  | effects.parser macros ;
 | 
					
						
							| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  | IN: constructors | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! An experiment | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-30 15:56:44 -05:00
										 |  |  | MACRO: set-slots ( slots -- quot )
 | 
					
						
							|  |  |  |     <reversed> [ setter-word '[ swap _ execute ] ] map [ ] join ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : construct ( ... class slots -- instance )
 | 
					
						
							|  |  |  |     [ new ] dip set-slots ; inline
 | 
					
						
							| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : define-constructor ( name class effect body -- )
 | 
					
						
							| 
									
										
										
										
											2009-01-30 16:16:05 -05:00
										 |  |  |     [ [ in>> '[ _ _ construct ] ] dip compose ] [ drop ] 2bi
 | 
					
						
							| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  |     define-declared ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  | SYNTAX: CONSTRUCTOR: | 
					
						
							| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  |     scan-word [ name>> "<" ">" surround create-in ] keep
 | 
					
						
							| 
									
										
										
										
											2009-03-22 18:59:40 -04:00
										 |  |  |     complete-effect | 
					
						
							| 
									
										
										
										
											2009-01-30 15:40:08 -05:00
										 |  |  |     parse-definition | 
					
						
							| 
									
										
										
										
											2009-03-21 02:27:50 -04:00
										 |  |  |     define-constructor ;
 |