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