gecko-dev/js/js2/java/BitwiseNode.java

37 lines
868 B
Java
Raw Normal View History

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 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
}
}