形式言語理論とは何であって、何がありがたいのか
ソフトウェア技術者の観点から言えば、「ソフトウェアのための集合論」だな。
- 数学の集合は茫漠としていて掴みどころがない。
- 全体集合U(universe)を決めて、その部分集合だけを考えるのが良い。
- Uはデータの集合だが、アトムだけじゃなくて複合データも考えたい。
- 一番簡単な複合データは列だから、Uは列の全体としよう。
- A⊆U に対して、Aの列挙とか、Aに属するかどうかの判断をしたい。
- 列挙プログラムも判断プログラムも、比較的簡単に実装できるものがいい。
複合データの全体Uを、列だけじゃなくてツリーとかレコードとかグラフとかにしてもいい。それだけ難しくなるけど。
Uの部分集合Aが十分に簡単なときは、三位一体が成立する。
- Aの記述(description)/表現(expression)
- Aの生成器
- Aの受理(認識)器
これは、実務上は次に対応する。
- 仕様
- テストデータ(の生成)
- バリデータ