2011-10-18 50 views

回答

0

如果你想知道,它的功能是在一定的包中定义的代码,您使用的甘蔗宏观with-package-iterator这样的:

(with-package-iterator (next (find-package 'test) :internal) 
    (loop :for (more? sym) := (multiple-value-list (next)) 
     :if (fboundp sym) :collect sym :into rez 
     :else :unless more? :do (return rez))) 

如果你想只提取函数从一个脚本(文件),最简单的方法似乎是用正则表达式"\\(defun (.+)\\s"或类似的东西扫描它。

0

在非常简单的情况下,您可以使用正则表达式。在稍微简单的情况下,实现S表达式读取器可能是一种合理的方法(您甚至可以完全忽略读取器宏)。但是,在一般情况下,尤其是在涉及宏观学的情况下,考虑嵌入Armed Bear Common Lisp(这是Common Lisp的Java实现),并使用所提及的形式Vsevolod的with-package-iterator

相关问题