BitwiseANDExpression :
EqualityExpression
BitwiseANDExpression & EqualityExpression
BitwiseANDExpressionNoIN :
EqualityExpressionNoIn
BitwiseANDExpressionNoIn & EqualityExpressionNoIn
BitwiseXORExpression :
BitwiseANDExpression
BitwiseXORExpression ^ BitwiseANDExpression
BitwiseXORExpressionNoIN :
BitwiseANDExpressionNoIn
BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn
BitwisexORExpression :
BitwiseXORExpression
BitwiseXORExpression | BitwiseXORExpression
BitwisexORExpressionNoIN :
BitwiseXORExpressionNoIn
BitwisexORExpressionNoIn | BitwiseXORExpressionNoIn
They are all evaluated in an equal manner. The pseudo code replaces the specific operator by @. A and B represent of the Productions above.
function evaluate(A @ B) {
var lref = evaluate(A);
var lval = GetValue(lref);
var rref = evaluate(B);
var rval = GetValue(rref);
var lnum = ToInt32(lval);
var rnum = ToInt32(rval);
return lnum @ rnum; // always 32bit signed int
}