C++ 精神(经典):和之间的区别?

C++ 精神(经典):和之间的区别?,c++,boost-spirit,C++,Boost Spirit,博士说(精神经典): a | b,并集,匹配a或b。也称为备选方案 a^b,XOR,匹配a或b,但不能同时匹配两者。 有人能给我举个实际的例子吗 编辑:请给我一个实际的例子。创建规则,使用一些参与者,解析一些东西,并向我展示它们之间的区别。我知道OR和XOR是什么,但我看不出|和^之间的boost::spirit结果有什么区别 std::string t; boost::spirit::classic::rule r=(Chu p('a')^Chu p('b'))[assign_a(t)]; /

博士说(精神经典):

a | b,并集,匹配a或b。也称为备选方案

a^b,XOR,匹配a或b,但不能同时匹配两者。

有人能给我举个实际的例子吗

编辑:请给我一个实际的例子。创建规则,使用一些参与者,解析一些东西,并向我展示它们之间的区别。我知道OR和XOR是什么,但我看不出|和^之间的boost::spirit结果有什么区别

std::string t;
boost::spirit::classic::rule r=(Chu p('a')^Chu p('b'))[assign_a(t)];
//boost::spirit::classic::规则r=(chup('a')| chup('b'))[assign_a(t)];
boost::spirit::classic::parse(“什么时候重要?”,r)

运算符
^
(XOR)在
boost::spirit
中创建解析器的“异或”组合。我没有理解它,因为我把主题插入了str_p/ch_p解析器

归功于@llonesmiz,我从他那里得到了最好的例子:


parse(“Z”,字母p^xdigit\p)

它总是很重要的,或者只是与X不同的东西。这个问题太模糊了。发明一对解析器,两者都可以匹配输入。例如(换言之:
ab*
a*b
),你会看到不同之处。看看“备选方案”是一个字母和一个十六进制数字。@Bogdan我认为你应该在这里做这项工作。或者你可以收回这个问题。