プログラムを書いていると良くパーサを作る羽目になる.しかし,パーサを書くのは面倒.今までも色々苦労してきた.
- 苦労1) 自力ですべて実装
- 気が付けば可読性ゼロな難解なコードになり破綻.
- 苦労2) yacc & lex でソースコードを自動生成
- 王道.構文規則からソースコードを自動生成するのでなんでも出来る.しかし,何をするにも yacc&lex のマニュアルで調べないと方法がわからないという欠点があり,結局挫折.
- 苦労3) glibを利用
- 何でもありのglibは,当然パーサも提供している.なかなか便利だが,複雑な構文規則は扱えない(と思う).
というわけで,ほかに何か無いかなと探していたところ boostにspiritというパッケージがあるのを発見.これは凄い.
個人的に長所と思ったところは以下の点.
とりあえず参考になりそうな情報源.
- http://www.boost.org/libs/spirit/index.html
- boost 付属のサンプルコード calc_plain.cpp
- http://www.c3.club.kyutech.ac.jp/~gridbug/spirit/