20 lines
		
	
	
		
			614 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			20 lines
		
	
	
		
			614 B
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								! by blei on #concatenative
							 | 
						||
| 
								 | 
							
								USING: kernel sequences math locals make multiline ;
							 | 
						||
| 
								 | 
							
								IN: nested-comments
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:: (subsequences-at) ( sseq seq n -- )
							 | 
						||
| 
								 | 
							
								    sseq seq n start*
							 | 
						||
| 
								 | 
							
								    [ dup , sseq length + [ sseq seq ] dip (subsequences-at) ]
							 | 
						||
| 
								 | 
							
								    when* ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: subsequences-at ( sseq seq -- indices )
							 | 
						||
| 
								 | 
							
								    [ 0 (subsequences-at) ] { } make ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: count-subsequences ( sseq seq -- i )
							 | 
						||
| 
								 | 
							
								    subsequences-at length ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: parse-all-(* ( parsed-vector left-to-parse -- parsed-vector )
							 | 
						||
| 
								 | 
							
								    1 - "*)" parse-multiline-string [ "(*" ] dip
							 | 
						||
| 
								 | 
							
								    count-subsequences + dup 0 > [ parse-all-(* ] [ drop ] if ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SYNTAX: (* 1 parse-all-(* ;
							 |