さて、いよいよ今回からエラーの原因を調べて
スクリプトを動かしていくためのコツについて
書いていきたいと思います。
まず、最初に、スクリプトを書いていて
一番多く出会うエラーは何と言ってもこれでしょう。
ERROR : Syntax error
「syntax(シンタックス)」というのはもともと言語学の言葉で
「統語論」と訳されていますが、
意味の通じる文になるための単語の順番などの決まり……
要するに「文法」ということですね。
シンタックス・エラーというのはコンピュータが、
「これって何か抜けてない? 文になってないよ?
意味わかんないよ〜」
と言っているようなものです。
例えばいつものサンプルスクリプトをいじってみました。
default
{
state_entry()
{
llSay(0, "Hello, Avatar!")
}
touch_start(integer total_number)
{
llSay(0, "Touched.")
}
}
これを保存しようとすると、
「(5,4) : ERROR : Syntax error」
と出ました。
最初のかっこの中は行数と文字位置を示しています。
但し0から数えますので、
この例では6行目の5文字目、、、
とすると「}」になります。
何故この「}」がおかしいのでしょう?
本当は、この「}」はおかしくはないのです。
が、コンピュータは、この場所にもっと別のものが来るのを
期待していたわけです。
となるとその前がアヤシイ。。。。
そうです。
llSay(0, "Hello, Avatar!")の後に、
文の終わりを表す「;」が抜けていました。
コンピュータへの命令を表す文の終わりには必ず「;」をつけます。
先ほどの例では「;」がなく、文が終わっていないのに
「}」が出てきたので、コンピュータは、
「まだ文が終わってないのにおかしくない?」と言ったわけです。
大体こんな感じで行番号と文字位置を参考にしながら
エラーの原因を探していきますが、
一番多いのは次のような理由による
「シンタックス・エラー」でしょう。
(1) 文の終わりに「;」が抜けている。
(2) 関数の中で使われているかっこの「(」と「)」の数が合っていない。
(3) 処理のまとまりを表す「{」と「}」の数が合っていない。
(4) 文字列の始まりを表す「"」が終わりの「"」で閉じられてない。
もっとも、最後のものはすぐに気づきます。
何故なら、リンデン・スクリプトのエディターはよくできていて、
ステートと関数は赤い字で、
イベントは水色の文字で表されますが、
文字列がちゃんと「"」で閉じられていないと
最初の「"」以下全ての字が文字列を表す緑色になるからです。
一瞬にして色が変わるので、
すぐに気づきますよ。w
というわけで、「ERROR : Syntax error」と出たら、
まずは上の4つを疑ってみて下さい。
わかってはいても、案外やるもんなんですよね。w
それでは、長くなりましたので
今夏はこの辺で。
No response to “スクリプトの話(4)〜一番多い間違い”
Leave a Reply