複雑な s-expression ツリーを読み取り、いくつかのノードを変更して、どこかに保存することになっています。
処理中の 'read 関数が入力を「変更」しているようです。たとえば、簡単な例では次のようになります。
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 は適切ではありません)。
ツリーが形成された場合、すべてのシンボルをインターンする必要があります..別の言葉で言えば、シンボルをインターンせず、代わりに文字列として保持するように彼に伝えるにはどうすればよいでしょうか。(したがって、コンスツリーを形成できますが、シンボルを指す代わりに、文字列を指すことになります。私の言いたいことがわかりますか?)