2

-「差分」パーサーは、バイナリ(マイナス) 演算子によって作成できます。

rule = qi::char_ - qi::lit("}}")

またはさらに複雑な違い:

rule = qi::char_ - qi::lit("}}") - qi::lit("]]")

しかし、解析時に差分パーサーの結果全体を生成するにはどうすればよいでしょうか?
以下のような形になると思います。

phoenix::function<difference_parser_impl> difference_parser;
rule = qi::lazy(difference_parser(qi::char_, {"}}", "]]"}));

ここで、{..., ..., ...}パーツは実際には stl コンテナーになりますが、それはポイントではありません。私はその部分を扱うことができます。

テンプレートは見つかりましたが、qi::difference<Left, Right>使い方がわかりませんでした。

4

1 に答える 1