スタックオーバー?

れむ

2008年05月10日 18:24


ひさしぶりにスクリプトでも書いていたらこんなエラーが出ました。


Parser stack depth exceeded; SL will throw a syntax error here.

これは?

とりあえず調べてみると、スタックが150を超えると駄目みたいです。

んんっ?
いくらなんでもそんなにネストしている場所は無いのですが??

スタックの数え方がよくわからないのですが、(英語だったので適当にしか読んでいないだけなのですが
処理がネストする以外に変数や関数を定義するだけで1つ消費するみたいです。
制限されている理由も書いてあった気がします。

私のソースは定義値用に無駄な変数作りまくっているのが原因でしょうね。
回避方法を参考に
関数を先に定義してから変数を定義するように変えてみました。

それだけで無事エラーが出なくなりました。

グローバル変数を使用している関数が、
変数定義より前に定義されているのが気持ち悪いのですが、
エラーは出ないのでひとまず良しとしておきましょう。

どうやらこのエラー lslint.exe を使用している場合だけに起きるようです。
InWorldでは問題なくコンパイルが通りました。

何はともあれ解決しました。


それにしても定数どうしましょうね。
無駄に思えて仕方がないのですが、即値はもっと嫌です。
しかも複数のソースで同じ物を使用する場合、両方に同じものを書かないといけないですし。

まあ、あまりにも増えすぎたら奥の手使うしかないですね。
スクリプト