Как проанализировать логическое выражение в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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