package jmathlib.core.tokens;
import jmathlib.core.interpreter.GlobalValues;
import jmathlib.core.tokens.numbertokens.DoubleNumberToken;
/**Used to implement addition and subtraction operations within an expression*/
public class AddSubOperatorToken extends BinaryOperatorToken
{
/**Constructor taking the operator and priority
* @param _operator = the actual operator
*/
public AddSubOperatorToken (char _operator)
{
/**call the super constructor, type defaults to ttoperator and operands to 2*/
super(_operator, ADDSUB_PRIORITY);
}
/**evaluates the operator
* @param operands = the operators operands
* @param globals
* @return the result of the operation as an OperandToken
*/
public OperandToken evaluate(Token[] operands, GlobalValues globals)
{
OperandToken result = null;
OperandToken left = ((OperandToken)operands[0]);
if(left == null)
left = new DoubleNumberToken(0);
OperandToken right = ((OperandToken)operands[1]);
if(right == null)
right = new DoubleNumberToken(0);
OperandToken[] ops = {left, right}; //castOperands(left, right);
//now evaluate op on left and right
if(value == '+')
{
result = ops[0].add(ops[1]);
}
else
{
result = ops[0].subtract(ops[1]);
}
if(result == null)
{
//return origional expression
result = new Expression(this, left, right);
}
return result;
}
}