コンテンツにスキップ

()の展開

本文の中の全角の ( ) で囲まれた部分は、里々が展開して別の文字列に置き換えます。

今日は(現在曜日)曜日です。→ 今日は火曜日です。

名前の解決順序

(名前) は、次の順に調べて、最初に見つかったものに展開されます。

  1. 関数の呼び出し: (名前、引数…) の形で、名前 が登録済みの SAORI(ssu を含む)・内蔵関数・特殊形式のとき。
  2. 単語群: @名前 があれば、その中の 1 つをランダムに選ぶ。
  3. 文: *名前 があれば、その文を実行した結果(さくらスクリプトになる)。
  4. 変数: 存在する変数、または R0 A0 S0 H1 C0 などの参照値(参照値は範囲外なら空文字列)。存在しない変数は、ここでは見つからない扱いになる。
  5. 数字: 数字だけの名前(- から始まってもよい)は、サーフェスの切り替え(サーフェス)。
  6. 組み込み名: Aの数 乱数 現在年 など(組み込み名)。
  7. 見つからなければ、(名前) のままの文字列を残し、ログに not found と出す。

式の中で使ったとき(式)は、見つからない名前や空の結果は 0 になります。

入れ子

() は入れ子にできます。内側から先に展開され、その結果を使って外側が展開されます。

@今日のおやつ
ケーキ

((今日のおやつ)の説明)    ← (ケーキの説明) として展開される

引数区切り

関数を呼び出すときの引数は、次の文字で区切ります。

区切り
,(半角カンマ)
、(読点)
、(半角の読点)
,(全角カンマ)
バイト値 1
  • 1 回の呼び出しでは、最初に見つかった区切り 1 種類だけを区切りとして使います。(calc、1+2) は 、 で区切られます。
  • $引数区切り追加 $引数区切り削除 で区切りを増減できます(その他)。
  • 単語群や文の名前に区切り文字を含めると、関数の呼び出しとして解釈されないよう注意してください(関数名として登録されているものが先頭にあるときだけ、関数の呼び出しになります)。

引数の展開のタイミング

  • 通常の関数は、() の内側の () を先にすべて展開してから引数に分けます。このため、展開結果に区切り文字が含まれると、引数が余分に分かれます。
  • 特殊形式(when など)は、先に引数に分けてから、必要な引数だけを展開します。

引数の計算

SAORI(ssu を含む)の引数は、条件によって、里々が先に整数の式として計算してから渡します。ssu の引数の計算を参照してください。

結果の再展開

SAORI が返した結果に () が含まれていると、もう一度展開されます。

展開の履歴

トークの中で展開された () の結果は順に記録され、(H1) (H2)… で再び参照できます(H(履歴))。

展開の制限

展開の対象にしない

( ) を文字として表示したいときは、φ( φ) と書きます(前処理)。