first commit
This commit is contained in:
34
hrmsEjb/org/nfunk/jep/function/If.java
Normal file
34
hrmsEjb/org/nfunk/jep/function/If.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package org.nfunk.jep.function;
|
||||
|
||||
import java.util.Stack;
|
||||
import org.nfunk.jep.Node;
|
||||
import org.nfunk.jep.ParseException;
|
||||
import org.nfunk.jep.ParserVisitor;
|
||||
import org.nfunk.jep.type.Complex;
|
||||
|
||||
public class If extends PostfixMathCommand implements SpecialEvaluationI {
|
||||
public Object evaluate(Node paramNode, Object paramObject, ParserVisitor paramParserVisitor, Stack paramStack) throws ParseException {
|
||||
double d;
|
||||
int i = paramNode.jjtGetNumChildren();
|
||||
if (i < 3 || i > 4)
|
||||
throw new ParseException("If operator must have 3 or 4 arguments.");
|
||||
paramNode.jjtGetChild(0).jjtAccept(paramParserVisitor, paramObject);
|
||||
checkStack(paramStack);
|
||||
Double double_ = (Double)paramStack.pop();
|
||||
if (double_ instanceof Double) {
|
||||
d = ((Double)double_).doubleValue();
|
||||
} else if (double_ instanceof Complex) {
|
||||
d = ((Complex)double_).re();
|
||||
} else {
|
||||
throw new ParseException("Condition in if operator must be double or complex");
|
||||
}
|
||||
if (d > 0.0D) {
|
||||
paramNode.jjtGetChild(1).jjtAccept(paramParserVisitor, paramObject);
|
||||
} else if (i == 3 || d < 0.0D) {
|
||||
paramNode.jjtGetChild(2).jjtAccept(paramParserVisitor, paramObject);
|
||||
} else {
|
||||
paramNode.jjtGetChild(3).jjtAccept(paramParserVisitor, paramObject);
|
||||
}
|
||||
return paramObject;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user