我需要检查文本是否有双重符号。例如“1+1*2”应该可以,但“1**2+3”或“--1+4*3”不应该。考虑精神计算示例的一部分。
expression =
term[_val=_1]
>> *( ('+' >> term[_val+=_1])
| ('-' >> term[_val-=_1])
);
term =
factor[_val=_1]
>> *( ('*' >> factor[_val*=_1])
| ('/' >> factor[_val/=_1])
);
factor =
double_[_val=_1]
| '(' >> expression[_val=_1] >> ')'
| ('-' >> factor[_val=_1])
| ('+' >> factor[_val=_1]);
短语解析返回真,表达式如“1+++1”或“1**-1”。我尝试像这样使用重复:
term =
factor[_val=_1]
>> *( (repeat(0)[char_('*')] >> factor[_val*=_1])
| ('/' >> factor[_val/=_1])
);
但它没有帮助。我想念什么?谢谢。
编辑:找到答案。应该在phrase_parse 之后比较字符串迭代器,而不是phrase_parse 输出。