1999-05-20 00:14:26 +00:00
|
|
|
class BitwiseNode extends BinaryNode {
|
|
|
|
|
|
|
|
BitwiseNode(String aOp, ExpressionNode aLeft, ExpressionNode aRight)
|
|
|
|
{
|
|
|
|
super(aOp, aLeft, aRight);
|
|
|
|
}
|
|
|
|
|
1999-05-28 19:00:48 +00:00
|
|
|
JSValue eval(Environment theEnv)
|
1999-05-20 00:14:26 +00:00
|
|
|
{
|
1999-05-28 19:00:48 +00:00
|
|
|
JSInteger lV = left.eval(theEnv).toJSInteger(theEnv);
|
|
|
|
JSValue rV = right.eval(theEnv);
|
1999-05-20 21:16:11 +00:00
|
|
|
|
1999-05-20 00:14:26 +00:00
|
|
|
if (op == "&")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.and(theEnv, rV);
|
1999-05-20 00:14:26 +00:00
|
|
|
else
|
|
|
|
if (op == "|")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.or(theEnv, rV);
|
1999-05-20 00:14:26 +00:00
|
|
|
else
|
|
|
|
if (op == "^")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.xor(theEnv, rV);
|
1999-05-20 00:14:26 +00:00
|
|
|
else
|
|
|
|
if (op == "<<")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.shr(theEnv, rV);
|
1999-05-20 00:14:26 +00:00
|
|
|
else
|
|
|
|
if (op == ">>")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.shl(theEnv, rV);
|
1999-05-20 00:14:26 +00:00
|
|
|
else
|
|
|
|
if (op == ">>>")
|
1999-05-28 19:00:48 +00:00
|
|
|
return lV.ushl(theEnv, rV);
|
|
|
|
else {
|
1999-05-20 00:14:26 +00:00
|
|
|
System.out.println("missing bitwise op " + op);
|
1999-05-28 19:00:48 +00:00
|
|
|
return null;
|
|
|
|
}
|
1999-05-20 00:14:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|