I made some tests using the spirit mini_c sample. Unfortunately it does not keep the operator precedence as expected:
int main()
{
return 3 > 10 || 3 > 1;
}
evaluates to 0.
return (3 > 10) || (3 > 1);
returns 1
I tried to move the definition of “||” and “&&” to the very top in the constructor of
template <typename Iterator>
expression<Iterator>::expression(
but that does not change anything. How can that be fixed. I am using boost 1.3.38.
Confirmed, that’s a bug in the mini_c example related to operator precedence. I committed a fix to SVN, which will be available in Boost V1.45. Here is what I changed in the header file mini_cb.hpp:
old code:
new code: