れむ
2008年05月10日
18:24
ひさしぶりにスクリプトでも書いていたらこんなエラーが出ました。
Parser stack depth exceeded; SL will throw a syntax error here.
これは?
とりあえず調べてみると、スタックが150を超えると駄目みたいです。
んんっ?
いくらなんでもそんなにネストしている場所は無いのですが??
スタックの数え方がよくわからないのですが、(英語だったので適当にしか読んでいないだけなのですが)
処理がネストする以外に変数や関数を定義するだけで1つ消費するみたいです。
制限されている理由も書いてあった気がします。
私のソースは定義値用に無駄な変数作りまくっているのが原因でしょうね。
回避方法を参考に
関数を先に定義してから変数を定義するように変えてみました。
それだけで無事エラーが出なくなりました。
グローバル変数を使用している関数が、
変数定義より前に定義されているのが気持ち悪いのですが、
エラーは出ないのでひとまず良しとしておきましょう。
どうやらこのエラー lslint.exe を使用している場合だけに起きるようです。
InWorldでは問題なくコンパイルが通りました。
何はともあれ解決しました。
それにしても定数どうしましょうね。
無駄に思えて仕方がないのですが、即値はもっと嫌です。
しかも複数のソースで同じ物を使用する場合、両方に同じものを書かないといけないですし。
まあ、あまりにも増えすぎたら奥の手使うしかないですね。