int PP_Expression::AND_expression() { int value = equality_expression(); if (test(PP_AND)) return value & AND_expression(); return value; }
Expression *ExpressionBuilder::AND_expression() { Expression *value = equality_expression(); if (test('&')) return createBinaryExpression('&', value, AND_expression()); return value; }
int PP_Expression::exclusive_OR_expression() { int value = AND_expression(); if (test(PP_HAT)) return value ^ exclusive_OR_expression(); return value; }
Expression *ExpressionBuilder::exclusive_OR_expression() { Expression *value = AND_expression(); if (test('^')) return createBinaryExpression('^', value, exclusive_OR_expression()); return value; }