2012年08月12日

N6XBasicChecker 1.1リリース

N6XBasicCheckerのバージョン1.1を公開します。

Windows版のバイナリはこちら。
N6XBasicChecker-1.1-win.zip
ソースコードはこちらになります。
N6XBasicChecker-1.1-src.zip

今回の主な新機能は「警告機能」です。
どこからも代入されていない変数、どこからも参照されていない変数を検出します。
変数名の打ち間違いやOCRによる文字化けはエラーにならないので実行時デバッグが大変ですが、
このチェックにより動作チェックがだいぶ楽になるだろうと思って作りました。

ただ、実際に作ってみると、既存のプログラムでも警告が大量に出るわ出るわ。
みなさんやっぱり、一度プログラムが動いたら、特に整理とかしないでリリースしちゃうもんなんですね…。
まあ当時の開発環境では、そういうクリーンナップやリファクタリングが困難だったという事情もあると思います。

BASICチェッカーを作るという行為は、「BASICとはいかに適当な言語であるか」を
知るプロセスであるという事を悟りだしています。

【更新履歴】
ver. 1.1 2012/08/11
機能追加
・警告の追加
  エラーの他に「警告」というメッセージ種類を追加しました。
・変数の代入、参照チェック
  例えば、S=STICK(0)という文を打ち間違えて、
  S=STOCK(0)と打ち込んでしまった場合、これは数値型の配列変数として解釈され、エラーになりません。
  今回のバージョンで、代入だけされて参照されていない変数、またはその逆を検出できるようにしました。
  例外として、FOR文のループカウンタとしてしか使われていない変数は、どこからも参照されていなくても
  警告を出しません。
  USR()とRND()関数については、戻り値を受けるためのダミーの変数を用意するケースが多いですが、
  現時点では、これらは全て警告が出ます。ご了承ください。
  また、3文字以上の変数名で、2文字目までが一致しているものが複数ある場合、警告を出すようにしました。
・行番号の整合性チェックを追加(?UL Error相当エラーの検出)
・GOTO,GOSUBの後に余分な記述があった場合に警告を出すようにした。
 (実行時エラーにならないので、この挙動を利用してコメントなどを入れる人がいるが、
GOTOの後のコロンが抜けた場合、次のステートメントが実行されない事態になるため)

バグ修正
・半角カナ記号の一部に対応していなかったのを修正。
・内部トレースが出力されることがあったのを修正。
・正常なIF文でエラーが出ることがあったのを修正。


posted by eighttails at 00:25| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする

2012年07月24日

N6XBasicChecker 1.01リリース

N6XBasicCheckerの1.01をリリースします。
今回はバグフィックスのみで、機能追加はありません。
XP環境でのバグを修正しておりますので、特にXPユーザーの方は差し替えをおねがいします。

【更新履歴】
ver. 1.01 2012/07/24
バグ修正
・内部文字コードをUTF-8からUTF-16に変更。
 (WindowsXPで、全角文字がリストに含まれているとエラーになるのを修正)
・ファイル名を複数指定するとクラッシュするのを修正

Windows版のバイナリはこちら。
N6XBasicChecker-1.01-win.zip
ソースコードはこちらになります。
N6XBasicChecker-1.01-src.zip
posted by eighttails at 22:53| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする

2012年07月19日

N6XBasicChecker 1.0リリース!

お待たせしました。
N6XBasicCheckerバージョン1.0のリリースです。

N6XBasicCheckerは、PC-6001/6601シリーズ用のBASICリスト静的構文チェッカーです。
通常、BASICはインタプリタ言語であるため、シンタックスエラーはその打ち込みミスが
ある行を実行するまで発見できません。
つまり、プログラムに打ち間違いが無いことを保証するには、目視でくまなく確認するか、
すべての行を漏れなく実行するようカバレッジテストを行う必要があります。
これは、AVGやRPGなど、リストが長くプレイ時間が長いゲームでは大きな負担になります。
N6XBasicCheckerは、プログラムを実行せずにリスト全体をチェックして、打ち間違いを
見つけてくれるツールです。

このツールは、PC-6001の実機やエミュレーター上で動かすものではありません。
isioさん作の、「txt2bas」用に記述されたテキストファイルを、
Windows(またはLinux)上で解析します。

Windows版バイナリはこちらからダウンロードしてください。
N6XBasicChecker-1.0-win.zip
今回は極力ライブラリは静的リンクするようにしたので、PC6001VXの時のように動かないという事はないと思いますが、万一動かなかったらご一報ください。
当方はWindows7 64bit環境で動作確認を行なっております。
ソースコードはこちらです。
N6XBasicChecker-1.0-src.zip

感想、要望はコメント欄かtwitterでお願いします。
本来問題ないコードなのにエラーが出た、またはエラーがあるのに検出できなかったという報告もお待ちしております。

バグ報告は現象が再現する最小限のリストを送っていただけると助かります。
またはゲームの場合、リストを最後まで打ち込んで「あとは1箇所直すだけ」にして送っていただけるとやる気が出ます(キリッ

技術的な解説は次回以降の記事で進めていきたいと思います。
boost::spiritの日本語情報は少ないので、ニッチな変態需要はあるのではと思っています。
posted by eighttails at 19:30| Comment(4) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする