【发布时间】:2013-05-13 14:59:31
【问题描述】:
我应该读取一个复杂的 s 表达式树,修改一些节点并将其保存在某个地方。
在处理过程中,'read 函数似乎正在“修改”输入。举个简单的例子:
CL-USER> (read-from-string "(seq_num 123)")
(SEQ_NUM 123)
13
您可以看到它大写节点(以及值)。
它似乎可以在值的最左边和最右边添加管道。如:
CL-USER> (read-from-string "(password 000006013H)")
(PASSWORD |000006013H|)
21
它添加了管道!
有没有办法告诉'read不要那样做?我想当 s 表达式实际上是一个有效的 LISP 程序时,这种修改是有充分理由的。但这里不是这样。让我们将该文件视为 XML 文件。一个看似 s-expr 的简单配置文件。我不需要他“实习”它读取的符号。我只需要他将其反序列化为一棵树,因为对我来说这是搜索树的最简单方法('car 和 'cdr 不好)。
好吧,如果树已经形成,那么每个符号都必须被实习。换句话说,我怎么能告诉他不实习任何符号,而是将其保留为字符串。 (因此它可以形成 cons-tree,但不是指向符号,而是指向字符串。你明白我的意思吗?)
【问题讨论】:
标签: lisp common-lisp s-expression