Function SET-MACRO-CHARACTER, GET-MACRO-CHARACTER

UP


Function SET-MACRO-CHARACTER, GET-MACRO-CHARACTER

Function SET-MACRO-CHARACTER, GET-MACRO-CHARACTER

構文

get-macro-character char &optional readtable => function, non-terminating-p
set-macro-character char new-function &optional non-terminating-p readtable => t

引数と戻り値

char - 文字
non-terminating-p - generalized-boolean。デフォルトはfalse
readtable - readtable指定子。デフォルトは現在のreadtable
function - nilか、2つの引数の関数指定子
new-function - 関数指定子

定義

get-macro-characterの第一返却値functionは、 readtable内にあるcharに関連したリーダーマクロ関数を (もしあるなら)返却するか、 あるいはcharreadtableにおいてマクロ文字ではないときは nilを返却します。 第二返却値non-terminating-pは、 charが非終端マクロ文字のときはtrueを、 それ以外のときはfalseを返却します。

set-macro-characterは、 readtable内において リーダーマクロ関数であるnew-function (またはnew-functionの指定子)を charのマクロ文字として関連付けます。 もしnon-terminating-ptrueのとき、 charは非終端マクロ文字になり、 それ以外のときは終端マクロ文字になります。

例文

(get-macro-character #\{) =>  NIL, false
(not (get-macro-character #\;)) =>  false

下記の例は、標準構文のシングルクォート・リードマクロの定義を示したものです。

(defun single-quote-reader (stream char)
  (declare (ignore char))
  (list 'quote (read stream t nil t))) =>  SINGLE-QUOTE-READER
(set-macro-character #\' #'single-quote-reader) =>  T

ここでのsingle-quote-readerは、 シングルクォートに続くオブジェクトを読み込み、 quoteとそのオブジェクトのリストを返却するものです。 引数のcharは無視されます。

下記の例は、標準構文のセミコロン・リードマクロの定義を示したものです。

(defun semicolon-reader (stream char)
  (declare (ignore char))
  ;; 最初に現在の入力の行全体を飲み込みます。
  ;; コメントがend-of-fileで終端するのは許容します。
  (do () ((char= (read-char stream nil #\Newline t) #\Newline)))
  ;; 0個の値を返却します。
  (values)) =>  SEMICOLON-READER
(set-macro-character #\; #'semicolon-reader) =>  T

副作用

readtableは変更されます。

影響

なし。

例外

なし。

参考

*readtable*

備考

なし。


TOP, Github