2012年11月05日

N6XBasicChecker 1.2リリース

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

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

今回の新機能はPLAY文、TALK文の文法チェック対応です。
また、任意の行番号の文字列リテラル、DATA文を
MMLとみなしてチェックするオプションを追加しました。
ついでに16進数、10進数チェックも実装しました。
OCRで取り込んだ際に、マシン語やキャラデータが化けていないかチェックするのに使えます。

とりあえずN6XBasicCheckerはこれで一段落つけようと思います。
これからはしばらく放置していたPC6001VXのメンテナンスを再開しようかと思います。

#とか言いつつ、今度はダンプリストチェッカーなんてものを作ろうかと思ってたり。
#OCRはチェックサムもろとも取り込んでしまうので、チェックサム確認も自動化したいなと。
#チェックサム方式が複数あるのがネックですが…。

【更新履歴】
ver. 1.2 2012/11/05
・PLAY文、TALK文のチェックを追加
 ただし、技術的な制約、マニュアルに書いてない仕様、モード5と6の仕様の違い、手抜きなどの理由により
 チェックはかなり緩いです。
 また、TALK文は"性別 速さ 本文"というフォーマットを満たしていることをチェックしているので、
 文字列変数の連結などでTALK文を組み立てている場合、正しく打ち込んでいてもエラーが出る場合があります。
・p,t,x,dオプションの追加
オプションは以下のものが使用できます。
-h [ --help ] ヘルプを表示
-v [ --version ] バージョンを表示
-p [ --play ] arg PLAY文としてパースする行
-t [ --talk ] arg TALK文としてパースする行
-x [ --hex ] arg 16進数としてパースする行
-d [ --digit ] arg 10進数の整数(符号付き)としてパースする行

p,t,x,dオプションは、指定した行番号の範囲内の文字列リテラルおよびDATA文を
特定のルールに基づいてチェックするための物です。

PLAY文を例にとると、
10 PLAY"CDE"
のようにPLAY文内に直接MMLが記述されている場合、
N6XBasicCheckerはMMLの文法もチェックしますが、
10 A$="CDE":PLAY A$
のように、変数やDATA文に記述されているMMLをチェックしたい場合、
明示的にこの行がMML(PLAY文)であることを指定する必要があります。
この場合、"-p10"というオプションをつけることで、10行内部の
文字列リテラルはMMLであるとみなしてチェックを行います。

x,dオプションはDATA文のチェック用(主にOCR対策)です。
マシン語やキャラクタ、マップデータ等に10進、または16進数
以外の文字が混入していないかチェックします。
dオプションは-(ハイフン)を許容します。

p,t,x,dオプションには複数の行、および範囲を指定できます。
例: -p100,200-300
この例では100行と200行から300行の間をMMLとしてチェックします。
posted by eighttails at 00:20| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする

2012年09月15日

N6XBasicChecker(6)ユニットテストの記述

いい加減コードを書く方に戻りたくなってきたので、
N6XBasicCheckerのメイキングは今回で一段落付けたいと思います。
今回はユニットテストの記述についてです。

構文解析機は、その性質上
・パーサージェネレータで生成した構文解析器は、ステップ実行でデバッグするのはほぼ無理。
・構文定義をすべて書ききってからテストをしたのでは、バグの原因の特定が困難。
・コマンドやステートメントの構文定義を追加する行為は、構文解析器の状態遷移の定義を変えることに等しいので、デグレードを起こしやすい。
という特徴があるので、N6XBasicCheckerでは、構文解析器のコーディングと、ユニットテストの記述を同時進行で進めました。
続きを読む
posted by eighttails at 20:28| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする

N6XBasicChecker(5)boost::spirit::qi::ruleの勘所

前回の続きです。
私がspiritを使う過程ではまったり悩んだりした点を書き連ねていきます。
続きを読む
posted by eighttails at 03:00| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする