2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! Copyright (C) 2009 Jose Antonio Ortega Ruiz.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! See http://factorcode.org/license.txt for BSD license.
							 | 
						
					
						
							
								
									
										
										
										
											2014-05-23 14:12:30 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								USING: accessors arrays continuations debugger fuel.pprint io
							 | 
						
					
						
							
								
									
										
										
										
											2014-10-10 13:45:13 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								io.streams.string kernel listener namespaces prettyprint.config sequences
							 | 
						
					
						
							
								
									
										
										
										
											2014-05-23 14:12:30 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								vocabs.parser ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								IN: fuel.eval
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-05-15 00:23:06 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TUPLE: fuel-status manifest restarts ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYMBOL: fuel-status-stack
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								V{ } clone fuel-status-stack set-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:19:49 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								SYMBOL: fuel-eval-error
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								f fuel-eval-error set-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYMBOL: fuel-eval-result
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								f fuel-eval-result set-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYMBOL: fuel-eval-output
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								f fuel-eval-result set-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYMBOL: fuel-eval-res-flag
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								t fuel-eval-res-flag set-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-eval-restartable? ( -- ? )
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-res-flag get-global ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-push-status ( -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-05-15 00:23:06 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    manifest get clone restarts get-global clone
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    fuel-status boa
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    fuel-status-stack get push ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-pop-restarts ( restarts -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-restartable? [ drop ] [ clone restarts set-global ] if ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-pop-status ( -- )
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:35:16 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-status-stack get [
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        pop
							 | 
						
					
						
							
								
									
										
										
										
											2009-05-15 00:23:06 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        [ manifest>> clone manifest set ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ restarts>> fuel-pop-restarts ]
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        bi
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:35:16 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    ] unless-empty ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:19:49 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: fuel-forget-error ( -- ) f fuel-eval-error set-global ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: fuel-forget-result ( -- ) f fuel-eval-result set-global ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-forget-output ( -- ) f fuel-eval-output set-global ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-forget-status ( -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-forget-error fuel-forget-result fuel-forget-output ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: fuel-send-retort ( -- )
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:19:49 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-error get-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-result get-global
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-output get-global 3array
							 | 
						
					
						
							
								
									
										
										
										
											2014-10-10 13:45:13 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ fuel-pprint ] without-limits
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    flush nl "<~FUEL~>" write nl flush ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (fuel-begin-eval) ( -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-push-status fuel-forget-status ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (fuel-end-eval) ( output -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    fuel-eval-output set-global fuel-send-retort fuel-pop-status ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-17 21:55:59 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: (fuel-eval) ( lines -- )
							 | 
						
					
						
							
								
									
										
										
										
											2014-05-23 14:12:30 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ parse-lines-interactive call( -- ) ] curry
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:19:49 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ [ fuel-eval-error set-global ] [ print-error ] bi ] recover ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (fuel-eval-usings) ( usings -- )
							 | 
						
					
						
							
								
									
										
										
										
											2011-09-18 23:35:16 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ [ use-vocab ] curry [ drop ] recover ] each ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (fuel-eval-in) ( in -- )
							 | 
						
					
						
							
								
									
										
										
										
											2009-05-15 00:23:06 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ set-current-vocab ] when* ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (fuel-eval-in-context) ( lines in usings -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    (fuel-begin-eval)
							 | 
						
					
						
							
								
									
										
										
										
											2009-04-19 14:35:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [ (fuel-eval-usings) (fuel-eval-in) (fuel-eval) ] with-string-writer
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-11 18:52:31 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    (fuel-end-eval) ;
							 |