我需要檢查加倍符號的文字。例如「1 + 1 * 2」應該可以,但「1 ** 2 + 3」或「 - 1 + 4 * 3」不應該。考慮精神計算例子的一部分。用精神檢查加倍符號:: qi
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]);
phrase_parse用「1 +++ 1」或「1 ** - 1」等表達式返回true。我試圖用重複像這樣:
term =
factor[_val=_1]
>> *( (repeat(0)[char_('*')] >> factor[_val*=_1])
| ('/' >> factor[_val/=_1])
);
但它does not幫助。我錯過了什麼? 謝謝。
編輯:找到了答案。我們應該比較一下phrase_parse之後的字符串itrators,而不是phrase_parse輸出。