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 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
オフではお世話になりました。

チェッカーはいくつあっても有り難いものです。

で、さっそく動かしてみました(環境はWin32です)。とりあえず気になったものです。

・比較演算子でエラーが出る(<>、><、<=、=<、=>、>=、など)。どれが引っ掛かってるかは不明ですが。

・PRINT文の後のセミコロン省略でエラーが出る( ex: PRINT A$B$ )。
 たまーに、多用しているものがあります。


 自分のチェッカーも間違っている箇所を修正せねば...
Posted by えすび at 2012年07月19日 23:39
さっそく利用させてもらいました。
今のところ順調です。
そして、1年以上前にHashiさんに送りつけたベーマガプログラムの入力ミスが発覚しましたorz

Posted by MORIYA at 2012年07月20日 00:14
現時点で判明している不具合です。
・WindowsXP環境では、全角文字を含んでいるコードでエラーが出る(Win7ではOK)
まだ原因不明ですが、次回までに直します。

えすびさん
>・比較演算子でエラーが出る
エラーが出た行を丸ごと書き込んでいただけますでしょうか。
比較演算子そのものではなく、その前後の記述の影響を受けていると思います。

>・PRINT文の後のセミコロン省略でエラーが出る( ex: PRINT A$B$ )。
これはこちらでも考慮していて、PRINT A$B$単体ではエラーになりませんでした。
こちらも他のステートメントや式との前後関係によるものと思われるので、当該行を丸ごと書き込んでいただけますでしょうか。
Posted by eighttails at 2012年07月20日 06:36
 あー。失礼しました。私の勘違いでした。ほとんど言いがかりですね(^^;

1)比較演算子の方は、以下の文でエラーが出ました(出るのが正解です)。

 100 IFA=BTHEN100:IFA<>BTHEN110


2)文字列の連結も、特に問題なかったです。ただ、以下の文でエラーが出ます。
  (まあ、エラーでもよさそうですが...)

 100 PRINTA$=B$


3)これも対応しなくてもよさそうですが...
  P6 内部の構造で、IF〜GOTO はIF〜THEN に置き換えられているようです。
  そのため、以下の記述は正常に動作します。

 100 IF A<>B GOTO A=B


 エラーが出た箇所(行ではなく列)を表示するのは、やはり大変でしょうか?
Posted by えすび at 2012年07月20日 19:19
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: