Как проанализировать логическое выражение в Boost :: SpiritC++

Программы на C++. Форум разработчиков
Anonymous
Как проанализировать логическое выражение в Boost :: Spirit

Сообщение Anonymous »

Сигсерчик анализирует выражение, которое включает в себя бинарные операторы (+,-,*,/) в правом приоритете. Однако я не могу заставить его работать с логическими выражениями (&&, ||) .
Например, результатом для следующего выражения должно быть 1 (true) (в настоящее время его 0 ):

Код: Выделить всё

1 || 0 && 0
Правило, которое я написал в настоящее время подготовки слева направо с NO && Protedence:

Код: Выделить всё

expression = (uint_[_val = _1] | '(' >> expression[_val = _1] >> ')') * (("&&" >> (uint_[_val = (_val && _1)] | expression[_val = (_val && _1)])) | ("||" >> (uint_[_val = (_val || _1)] | expression[_val = (_val || _1)])));
Более того, правило в настоящее время не имеет короткого замыкания.

Подробнее здесь: https://stackoverflow.com/questions/796 ... oostspirit

Вернуться в «C++»