aboutsummaryrefslogtreecommitdiffhomepage
path: root/libslang/doc/tm/rtl/whatelse.sl
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2011-10-14 04:55:05 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2011-10-14 04:55:05 +0200
commit6aa0e0017d7d0cddc006da885946934b06949a91 (patch)
tree66b688ec32e2f91266db760b1762f2a50cc52036 /libslang/doc/tm/rtl/whatelse.sl
parenta966db5b71328f6adf9dd767e64b322a3bd7ed9c (diff)
downloaderlang-slang-fork-6aa0e0017d7d0cddc006da885946934b06949a91.tar.gz
include libslang-1.4.9 and automatically build it and link erlang-slang against it
few (erlang) people will still have libslang-1.4.9 installed or spend time to get it to link against the driver
Diffstat (limited to 'libslang/doc/tm/rtl/whatelse.sl')
-rwxr-xr-xlibslang/doc/tm/rtl/whatelse.sl116
1 files changed, 116 insertions, 0 deletions
diff --git a/libslang/doc/tm/rtl/whatelse.sl b/libslang/doc/tm/rtl/whatelse.sl
new file mode 100755
index 0000000..fec4f0d
--- /dev/null
+++ b/libslang/doc/tm/rtl/whatelse.sl
@@ -0,0 +1,116 @@
+#! /usr/bin/env slsh
+% -*- slang -*-
+
+% This file is used to determine what functions still need documenting.
+% I think that it provides a good example of the use of associative arrays.
+
+_debug_info = 1;
+
+variable Src_Files = "../../../src/*.c";
+variable TM_Files = "*.tm";
+variable Unwanted_Files = "../../../src/calc.c";
+
+define grep (pat, files)
+{
+ if (strlen (files) == 0)
+ return String_Type[0];
+
+ variable fp = popen (sprintf ("rgrep '%s' %s", pat, files), "r");
+ variable matches;
+
+ matches = fgetslines (fp);
+ () = pclose (fp);
+
+ return matches;
+}
+
+
+static define prune_array (a, b)
+{
+ foreach (b) using ("keys")
+ {
+ variable k = ();
+ assoc_delete_key (a, k);
+ }
+}
+
+define get_with_pattern (a, pat, white)
+{
+ variable f;
+
+ foreach (grep (pat, Src_Files))
+ {
+ f = ();
+
+ f = strtok (f, white)[1];
+ a [f] = 1;
+ }
+
+ if (Unwanted_Files != NULL) foreach (grep (pat, Unwanted_Files))
+ {
+ f = ();
+ f = strtok (f, white)[1];
+ assoc_delete_key (a, f);
+ }
+}
+
+define get_src_intrinsics ()
+{
+ variable f;
+ variable src = Assoc_Type[Int_Type];
+
+ get_with_pattern (src, "^[ \t]+MAKE_INTRINSIC.*(\".*\"", "\"");
+ get_with_pattern (src, "^[ \t]+MAKE_MATH_UNARY.*(\".*\"", "\"");
+ get_with_pattern (src, "^[ \t]+MAKE_VARIABLE.*(\".*\"", "\"");
+ get_with_pattern (src, "^[ \t]+MAKE_DCONSTANT.*(\".*\"", "\"");
+ get_with_pattern (src, "^[ \t]+MAKE_ICONSTANT.*(\".*\"", "\"");
+
+ return src;
+}
+
+define get_doc_intrinsics ()
+{
+ variable funs;
+ variable doc = Assoc_Type[Int_Type];
+
+ funs = grep ("^\\\\function{", TM_Files);
+ foreach (funs)
+ {
+ variable f;
+ f = ();
+ f = strtok (f, "{}")[1];
+ doc [f] = 1;
+ }
+ funs = grep ("^\\\\variable{", TM_Files);
+ foreach (funs)
+ {
+ f = ();
+ f = strtok (f, "{}")[1];
+ doc [f] = 1;
+ }
+ return doc;
+}
+
+
+define main ()
+{
+ variable k;
+ variable src, doc;
+
+ doc = get_doc_intrinsics ();
+ src = get_src_intrinsics ();
+
+ prune_array (src, doc);
+
+ k = assoc_get_keys (src);
+ k = k[array_sort(k)];
+
+ foreach (k)
+ {
+ message ();
+ }
+}
+
+main ();
+
+