]> gitweb.factorcode.org Git - factor.git/commitdiff
ML-style (* nested (* comments *) *)
authorMarc Fauconneau <prunedtree@gmail.com>
Fri, 5 Jun 2009 06:29:36 +0000 (15:29 +0900)
committerMarc Fauconneau <prunedtree@gmail.com>
Fri, 5 Jun 2009 06:29:36 +0000 (15:29 +0900)
extra/nested-comments/nested-comments.factor [new file with mode: 0644]

diff --git a/extra/nested-comments/nested-comments.factor b/extra/nested-comments/nested-comments.factor
new file mode 100644 (file)
index 0000000..94daffe
--- /dev/null
@@ -0,0 +1,20 @@
+! by blei on #concatenative\r
+USING: kernel sequences math locals make multiline ;\r
+IN: nested-comments\r
+\r
+:: (subsequences-at) ( sseq seq n -- )\r
+    sseq seq n start*\r
+    [ dup , sseq length + [ sseq seq ] dip (subsequences-at) ]\r
+    when* ;\r
+\r
+: subsequences-at ( sseq seq -- indices )\r
+    [ 0 (subsequences-at) ] { } make ;\r
+\r
+: count-subsequences ( sseq seq -- i )\r
+    subsequences-at length ;\r
+\r
+: parse-all-(* ( parsed-vector left-to-parse -- parsed-vector )\r
+    1 - "*)" parse-multiline-string [ "(*" ] dip\r
+    count-subsequences + dup 0 > [ parse-all-(* ] [ drop ] if ;\r
+\r
+SYNTAX: (* 1 parse-all-(* ;
\ No newline at end of file