Spirit.QiのList Parserで嵌ったこと
http://www.boost.org/doc/libs/1_51_0/libs/spirit/doc/html/spirit/qi/reference/operator/list.html
Spirit.Qiには a % b というList Parserがあるが、これを使ってて嵌った。
ドキュメントには
The list operator, a % b, is a binary operator that matches a list of one or more repetitions of a separated by occurrences of b. This is equivalent to a >> *(b >> a).
と書いてあるので特に何も考えずに使ってた。
が、実際に使ってみるとattributeに格納されるのがなんかおかしい。bにマッチした部分が格納されない。
もう一度ドキュメントを見直してみると下の方に
a: A, b: B --> (a % b): vector<A> a: Unused, b: B --> (a % b): Unused
と書いてある。vector<A>...?????
はー困った。ということで便利なんだけどbにマッチする部分は欲しいので、仕方ないので a >> *(b >> a) を使うしかない。
哀しいかな。