如何避免 Common Lisp 中 (read) 中的包/字符错误?

Oli*_*Cox 1 lisp sbcl common-lisp

当我尝试使用输入字符串时,出现一些令人惊讶的错误(read)。上下文:我正在构建一种迷你语言,输入使用 {、}、: 等字符分隔。

下面是发生的情况,我运行(read)并输入{9.I:{8.II:hello}{8.III:hi}}(来自我的迷你语言的示例输入字符串)。

然后我得到 2 个错误:

1:

too many colons in "{8.II"

2:

Package HELLO}{8.III does not exist.

似乎函数中发生了一些额外的事情(read)让我绊倒。有人能指出我正确的方向吗?

Sil*_*olo 5

read旨在读取有效的 Lisp S 表达式。它将使用 Common Lisp 的解析器。如果您的语言足够像 Lisp,您也许可以让它为您工作,但考虑到您所显示的示例输入,我怀疑这就是您想要的。

您可能正在寻找read-line,它将单行文本作为字符串读取,并且不对它执行任何额外的解析。