1 ! by blei on #concatenative
\r
2 USING: kernel sequences math locals make multiline ;
\r
5 :: (subsequences-at) ( sseq seq n -- )
\r
7 [ dup , sseq length + [ sseq seq ] dip (subsequences-at) ]
\r
10 : subsequences-at ( sseq seq -- indices )
\r
11 [ 0 (subsequences-at) ] { } make ;
\r
13 : count-subsequences ( sseq seq -- i )
\r
14 subsequences-at length ;
\r
16 : parse-all-(* ( parsed-vector left-to-parse -- parsed-vector )
\r
17 1 - "*)" parse-multiline-string [ "(*" ] dip
\r
18 count-subsequences + dup 0 > [ parse-all-(* ] [ drop ] if ;
\r
20 SYNTAX: (* 1 parse-all-(* ;