2

整数値のリストを解析できるブースト スピリット 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)] ] );
4

1 に答える 1