コンテンツにスキップ

制限値

無限ループなどで応答が返らなくなることを防ぐための制限です。負数は 0 になり、0 は「制限しない」を意味します。

$呼び出し回数制限

() による呼び出しが入れ子になる深さの上限です。既定は 200。

超えると 呼び出し回数超過 とログに出て、そこは (名前) の形のまま残ります。

$呼び出し総数制限

1 回のリクエスト(読み込み・終了時の処理を含む)の中で行える、(名前) による呼び出しと、繰り返しの 1 周の合計回数の上限です。既定は 100000(Mc201-8以降)。

$呼び出し回数制限 は入れ子の深さしか見ないため、@あ が (あ)(あ) を含むような分岐する再帰や、本体が空の長い繰り返し((times、1000、(times、1000、(times、1000、))) など)は、いつまでも終わりません。この上限を超えると、呼び出し総数超過 とログに出て、それ以降の呼び出しは (名前) の形のまま残り、繰り返しは打ち切られます。

  • 数えるのは、(名前) の呼び出し(単語群・文・変数・内蔵関数・SAORI のいずれも)と、times for while の 1 周です。loop は本体を (名前) で呼ぶので、その呼び出しが数えられます。
  • 数え直すのは、リクエストごと(読み込み・終了時の処理は、それぞれまとめて 1 回)です。
  • 単語の呼び出し 1 回は数マイクロ秒で、既定の 10 万回なら 1 秒未満で打ち切られます。大きな表を作るような辞書では、*初期化 などで $呼び出し総数制限=10000000 のように増やしてください。0 で制限しません。

$ジャンプ回数制限

1 回の応答の中で、> ≫ ≧ によるジャンプを行える回数の上限です。既定は 20000。

超えると ジャンプ回数超過 とログに出て、そこでトークを打ち切ります。

$括弧展開サイズ制限

1 つの文字列を () 展開した結果の長さ(文字数)の上限です。既定は 262144(256×1024)。

超えると 括弧展開サイズ超過 とログに出て、その時点までの結果を使います。

括弧の入れ子の深さ

() の中に () を書く入れ子の深さは、最大 1000 段です(変更できません。Mc201-8以降)。超えた ( は展開せず、そのまま出力し、括弧の入れ子が深すぎます とログに出ます。スタックを使い果たして異常終了することを防ぐためのもので、通常の辞書では届きません。

繰り返しの回数の上限

times for while loop の繰り返しには、回数そのものの上限はありません。ただし、次のどちらかを超えると打ち切ります。

  • 繰り返しの結果の長さ(文字数)が $括弧展開サイズ制限 を超えたとき(繰り返しの結果が大きすぎるので、打ち切りました とログに出ます。Mc201-7以降)
  • 1 周ごとに数える $呼び出し総数制限 を超えたとき(Mc201-8以降。それ以前は、結果が短いままの無限ループ (while、1、) などが止まりませんでした)