Function READ-FROM-STRING

UP


Function READ-FROM-STRING

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それぞれ0nil
preserve-whitespace - generalized-boolean。デフォルトはfalse
object - オブジェクト(Lispリーダーによって構文解析されたもの)かeof-value
position - ゼロ以上、かつ、stringの長さより大きい値以下

定義

startendによって囲まれたstringのサブシーケンスから オブジェクトの印刷表現を構文解析し、 これら同じ文字が含まれているような入力ストリームに対して readが呼ばれたかのように動作します。

もしpreserve-whitespacetrueのときは、 この操作はread-preserving-whitespaceが実行されたかのように 空白を保護します。

オブジェクトの構文解析に成功したとき、 第一返却値であるobjectは構文解析されたものになります。 もしeof-error-pfalseであり、 サブシーケンスが終わりに到達していたとき、 eof-valueが返却されます。

第二返却値のpositionは、 stringに囲まれた中で読み込みが行われなかった 最初の文字のインデックスです。 positionpreserve-whitespaceの値に依存します。 もしstring全体が読み込まれたときは、 positionstringの長さではなく 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-ptrueならエラーが発生します。 オブジェクトが不完全のまま途中で サブシーケンスの終わりに到達したときはエラーが発生します。

参考

read, read-preserving-whitespace

備考

positionstringの長さを越えることが許される理由は、 実装がstringの境界内の終わりに 末尾の区切り文字の効果をシミュレートすることによって 動作することを許すため(しかし必須ではない)です。 preserve-whitespacetrueのときに、 このシミュレートされた区切り文字が positionにカウントされるかもしれません。


TOP, Github