I've come up with following boolean expression parser after reading the Spirit tutorials:
expression =
          bool_                           [_val =  _1]
            >> *(  ("&&" >> expression    [_val && _1])
                |  ("||" >> expression    [_val || _1])
                )
            ;
For constants I get the correct results from the parser:
true -> 1
false -> 0
But for slightly more complex expressions things go horribly wrong:
true && false -> 1 (incorrect!)
false && true -> 0 (correct)
false || true -> 0 (incorrect!)
true || false -> 1 (correct)
 
    