whatelse.sl
来自「一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件」· SL 代码 · 共 117 行
SL
117 行
#! /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 ();
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?