boost/spirit

プログラムを書いていると良くパーサを作る羽目になる.しかし,パーサを書くのは面倒.今までも色々苦労してきた.

苦労1) 自力ですべて実装
気が付けば可読性ゼロな難解なコードになり破綻.
苦労2) yacc & lex でソースコードを自動生成
王道.構文規則からソースコードを自動生成するのでなんでも出来る.しかし,何をするにも yacc&lex のマニュアルで調べないと方法がわからないという欠点があり,結局挫折.
苦労3) glibを利用
何でもありのglibは,当然パーサも提供している.なかなか便利だが,複雑な構文規則は扱えない(と思う).

というわけで,ほかに何か無いかなと探していたところ boostにspiritというパッケージがあるのを発見.これは凄い.

個人的に長所と思ったところは以下の点.

  • 構文規則をソースコードに埋め込める.
  • シンプルな設計.マニュアルも yacc&lex に比べれば理解しやすそう.

とりあえず参考になりそうな情報源.