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 + -
显示快捷键?