我有一个Lisp文件,其中定义了一些函数[(defun ...]。
是否有一种简单的方法可以使用Java在脚本中定义所有函数名称?
答案 0 :(得分:1)
答案 1 :(得分: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)))
如果您只想从脚本(-file)中提取函数,最简单的方法似乎是使用正则表达式"\\(defun (.+)\\s"
或类似的东西进行扫描。
答案 2 :(得分:0)
在非常简单的情况下,您可以使用正则表达式。在稍微不那么简单的情况下,实现S表达式读取器可能是一种合理的方法(您甚至可能完全忽略读取器宏)。但是,在一般情况下,特别是如果涉及宏,请考虑嵌入Armed Bear Common Lisp,它是Common Lisp的Java实现,并使用提到的with-package-iterator
形式Vsevolod。