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-(* ; |