2011-10-25 8 views
2

Boost.Spiritを使用すると、ターミナルトークンを複数のアクションに配信できますか?そうであれば、構文はどのようになりますか? 「AB」消費および「ボイドF(>の<属性タイプ、<B>の属性タイプ)」と消費ルール2関連するアクションを有する ルール1:Boost.Spirit重複するアクション/端末トークンの再利用

例えば、私は2つのルールがあると「BC」と関連付けられたアクション「void g(<属性タイプB >,<属性タイプC >)」を持っています。

入力ストリーム「A1 B1 C1」が与えられると、f(A1、B1)およびg(B1、C1)を呼び出すようにします。

編集:さらに多くの研究は、これを可能にするかもしれないAnd-Predicateを使用することを示唆しています。

答えて

2

使用のローカル変数:

qi::rule<Iterator, qi::locals<B> > r = 
    (a >> b)[lf(_1, _2), _a = _2] >> c[lg(_a, _1)]; 

私は((ここではそのLFを想定)とLGてる)怠惰な機能(基礎となるfに対するすなわちラッパー()とg())です。地方の詳細については、hereを参照してください。欠点は、bの属性のコピーを作成することです。

関連する問題