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 | このブログの読者になる | 更新情報をチェックする

2012年09月09日

N6XBasicChecker(4)boost::spirit::qi::ruleの基礎

今回はboost::spiritを使った構文解析ツールの構成について書きたいと思います。

最初にお断りしておくと、このブログの情報だけからspiritを理解するのは無理です。
spiritに触れている日本語のブログエントリもすでに複数ありますが、やはりブログの情報だけで全容を理解できるものではありません。
英語ですが、結局boost本家のドキュメントが一番丁寧に説明されており、これを頭から「飛ばさずに」読むのが一番の近道です。
構文解析自体の知識も前提として要求されますので、予備知識がない人はコンパイラ理論の本を1冊読んだほうが良いでしょう。
私はとりあえず以下の本を読みました。
コンパイラ入門―構文解析の原理とlex/yacc、C言語による実装 (Computer Science Library) [単行本] / 山下 義行 (著); サイエンス社 (刊)

なので、本ブログでもspiritそのものの解説はオフィシャルに譲り、実際にプログラムを書く際にハマりそうなポイントを解説していきたいと思います。
続きを読む
posted by eighttails at 23:32| Comment(0) | N6XBasicChecker | このブログの読者になる | 更新情報をチェックする