Function READ-FROM-STRING
read-from-string
string &optional
eof-error-p eof-value &key
start end preserve-whitespace
=> object, position
string - 文字列
eof-error-p - generalized-boolean。デフォルトはtrue。
eof-value - オブジェクト。デフォルトはnil
。
start, end - stringの境界インデックス指定子。 デフォルトはstart, endそれぞれ0
とnil
。
preserve-whitespace - generalized-boolean。デフォルトはfalse。
object - オブジェクト(Lispリーダーによって構文解析されたもの)かeof-value
position - ゼロ以上、かつ、stringの長さより大きい値以下
startとendによって囲まれたstringのサブシーケンスから オブジェクトの印刷表現を構文解析し、 これら同じ文字が含まれているような入力ストリームに対して read
が呼ばれたかのように動作します。
もしpreserve-whitespaceがtrueのときは、 この操作はread-preserving-whitespace
が実行されたかのように 空白を保護します。
オブジェクトの構文解析に成功したとき、 第一返却値であるobjectは構文解析されたものになります。 もしeof-error-pがfalseであり、 サブシーケンスが終わりに到達していたとき、 eof-valueが返却されます。
第二返却値のpositionは、 stringに囲まれた中で読み込みが行われなかった 最初の文字のインデックスです。 positionはpreserve-whitespaceの値に依存します。 もしstring全体が読み込まれたときは、 positionはstringの長さではなく stringの長さかそれより大きいものになります。
read-from-string " 1 3 5" t nil :start 2) => 3, 5
(read-from-string "(a b c)") => (A B C), 7 (
なし。
なし。
もしオブジェクトが読み込まれる前に 指定されたサブシーケンスの終わりに到達したとき、 eof-error-pがtrueならエラーが発生します。 オブジェクトが不完全のまま途中で サブシーケンスの終わりに到達したときはエラーが発生します。
read
, read-preserving-whitespace
positionがstringの長さを越えることが許される理由は、 実装がstringの境界内の終わりに 末尾の区切り文字の効果をシミュレートすることによって 動作することを許すため(しかし必須ではない)です。 preserve-whitespaceがtrueのときに、 このシミュレートされた区切り文字が positionにカウントされるかもしれません。