-1

我是 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”?

4

1 回答 1

0

你想玩什么代码,你能把它贴在这里吗?defgrammar不是内置函数。你应该找到defgrammar函数的定义。首先加载它,然后重新评估您的示例。

于 2013-06-28T02:25:19.183 回答