在阅读Spirit教程之后,我想出了以下布尔表达式解析器:
expression =
bool_ [_val = _1]
>> *( ("&&" >> expression [_val && _1])
| ("||" >> expression [_val || _1])
)
;
对于常量,我从解析器得到了正确的结果:
true - > 1
false - > 0
但是对于稍微复杂一些的表达方式来说,事情是非常错误的:
true&& false - > 1(不正确!)
false&&是的 - > 0(正确)
false ||是的 - > 0(不正确!)
true || false - > 1(正确)