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

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