boost :: spirit(经典):|之间的区别和^?

时间:2017-06-29 10:05:41

标签: c++ boost-spirit

Doc说(精神经典):

a | b, Union, Match a or b. Also referred to as alternative

a ^ b, XOR, Match a or b, but not both.

有人在重要的时候给我一些实际的例子吗?

编辑:请给我一些实际的例子。创建规则,使用一些演员,解析一些东西并向我展示差异。我知道OR和XOR是什么,但我没有看到|之间的boost :: spirit结果有什么不同和^。

std::string t; boost::spirit::classic::rule<> r = ( ch_p( 'a' ) ^ ch_p( 'b' ) )[ assign_a( t ) ]; //boost::spirit::classic::rule<> r = ( ch_p( 'a' ) | ch_p( 'b' ) )[ assign_a( t ) ]; boost::spirit::classic::parse( "when it matters?", r );

1 个答案:

答案 0 :(得分:1)

^中的运营商boost::spirit(XOR)会创建排他性或&#39;解析器的组合。我没有得到它,因为我将主题插入到str_p / ch_p解析器中。

致@llonesmiz的积分,我从中得到了最好的例子:

parse( "Z", alpha_p ^ xdigit_p );