我是 Lisp 的新手,所以我猜我在这里遗漏了一些简单的东西。我在网上找到了一些我想玩的代码,它使用了 defgrammar 宏。当我将它写入我的代码文件时,完全从网络复制开始,保存和加载,它说(省略文件名):
;; Loading file ...
*** - EVAL: undefined function DEFGRAMMAR
我猜我必须翻转一些变量,比如打印循环列表,或者一些附加组件或我必须安装的东西,但我真的不知道我在找什么。有什么建议么?
顺便说一句,我使用的是 GNU CLisp 2.49。
我尝试使用的代码是:
(load "rdp")
(use-package "COM.INFORMATIMAGO.RDP")
(defgrammar binary-tree
:terminals ((label "[^(),][^(),]*"))
:start tree
:rules ((--> tree
(opt node)
:action (if (null $1)
(make-empty-binary-tree)
$1)) ; it's identity, but make-empty-binary-tree
; could be defined otherwise.
(--> node
label (opt children)
:action (make-binary-tree :label (read-from-string (second $1))
:left (first $2) :right (second $2)))
(--> children
"(" tree "," tree ")"
:action (list $2 $4))))
(defun binary-tree-from-string (string)
(parse-binary-tree string))
看着它,我猜我需要“rdp”?