整数値のリストを解析できるブースト スピリット qi に基づくパーサーを作成したいと思います。それは明らかに非常に簡単で、たくさんの例があります。ただし、リストはカンマ区切りのリストよりも少しスマートで、次のようになります。
17, 5, フィボナッチ(2, 4), 71, 99, レンジ(5, 7)
パーサーの結果は、次の値を持つ std::vector である必要があります。
17、5、1、2、3、71、99、5、6、7
fibonacci(2, 4) の結果は 1, 2, 3 になり、range(5, 7) の結果は 5, 6, 7 になります。
編集:私が探しているのは、属性 int (たとえば int_) を持つパーサーと、属性 std::vector fibonacci と range を持つパーサーが既にある場合、単一のパーサーで結果を組み合わせる方法です。何かのようなもの:
list %= *(int_ | elements [ fibonacci | range ] );
要素が必要な魔法を行う魔法である場合、結果はフィボナッチを形成してリストに収まります。
注:次のような追加機能を含むソリューションを探しているわけではありません
list = *(int_[push_back(_val, _1)] | fibonacci[push_back(_val, _1)] | range[push_back(_val, _1)] ] );