2013年6月1日土曜日

エラーメッセージ別対処法(随時追記)

X-BASIC for iOSのエラーメッセージは、残念ながらエラーの発生している場所や原因を的確に表していない場合があります。

理由の1つは、「エラーが発生したらその行の解析を飛ばし、次の行からコンパイルを継続するから」です。コンパイル時には1つのエラーでいちいち止めていては全体のデバッグに時間がかかりすぎるため、エラー発生行をなかったことにして無理やりコンパイルを継続して、全体のエラーを「制限付きながら」洗い出します。
そのためにこの現象が起きます。

このため、対となる構文がある行では、見かけ上間違いがなくても必ずエラーが発生します。例えば、switchの行でエラーが発生すれば、endswitchの行でも必ず(場合によってはcase/defaultの文でも)エラーが発生するわけです。

オリジナルのぺけ-BASICやX-BASIC/68は1つエラーが発生すればそこで止まるため、それ以降の解釈の継続という考え方がなく、故に同様なことが発生しません。

・・・

X-BASIC for iOSではできるだけエラーを細分化しましたが、解釈の都合上、エラー直接原因とは場所でエラーが発生することもあります。
この場合、発生するエラーからは原因がわかりづらいこともあります。


その例をここにまとめておきます。
(今後、発見次第随時紹介。)

・未宣言変数/Undefined variable.   (日本語/英語の順)
 
未定義関数を呼びだそうとした時もこれが発生することがあります。
関数を配列と認識してしまった場合です。
C言語と異なり、BASICでは関数も配列も()で括るため、こうなります。

・文字列が閉じてないときは、その影響で色々とエラーが発生することがあります
文字列のある行でエラーが発生している場合、まずは文字列が閉じられているか確認してください。

0 件のコメント:

コメントを投稿