Lisp:原子和字符串

标签 lisp tokenize

我正在开发一个简单的 Lisp 解释器。现在我正在尝试为它编写一个解析器。 LISP - Basic Syntax .我读到在 Lisp 中只有三种类型的 block :atomliststring。另外,我注意到 string block 可以嵌套到 list 中,例如:

(format t "Some string block...~%").

可以将string 类型的构建 block 视为atom block 吗?

最佳答案

首先,您选择作为“引用”的页面质量非常可疑。最明显的视觉危险信号是“非常规”(委婉地说)格式化 Lisp 代码的方式。

其次block在 Lisp 中有一个非常具体的含义。当他们使用这个词时,显然的意思是 token .

第三string Lisp 中的类型是 atom 类型的子类型:

(atom "foo")
==> t

因此,您所问问题的答案是:是的,每个字符串都是一个原子。

你应该问的问题的答案是:引用CLHS ,而不是一些可疑的网站。

附言。有几个FLOSS可用的 Common Lisp 实现(例如, CLISP , SBCL ), 您可能想先看看他们是如何做事的。

关于Lisp:原子和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49845918/

相关文章:

java - 如何在 Java 中逐个字符地读取输入?

python - 将计数器转换为具有链接列表值的哈希表

python - 什么更好使用 keras.preprocessing.tokenizer 或 nltk.tokenize

PHP, Tokenizer, 找到函数的所有参数

c - 不使用 strtok 标记一行

recursion - Lisp 中的递归函数如何工作?

lambda - Lisp 中的 defun 和 lambda

lisp - 用 LISP 填充水壶

hash - 程序解释期间的高效增量哈希计算

macros - Racket 阅读器宏