y = x-2 + 3
y = x4 + 1
y = x-3 - 4
y = x7 - 3
y = x
@Testpublic void testSlope() throws JepException { Jep jep = new Jep(); OperatorTableI ot = jep.getOperatorTable();
Node n = jep.parse("x*-3-5"); Node l = n.jjtGetChild(0); // x*-3 Node r = n.jjtGetChild(1); // - 5 Node ll = l.jjtGetChild(0); // x Node lr = l.jjtGetChild(1); // -(3)
double slope=0.0; if(lr.getOperator() != null && lr.getOperator().equals(ot.getUMinus())) { Node lrl = lr.jjtGetChild(0); // 3 slope = -((Double) lrl.getValue()); } else { slope = (Double) lr.getValue(); } double intercept = 0.0; if( n.getOperator().equals(ot.getAdd())) { intercept = (Double) r.getValue(); } else if( n.getOperator().equals(ot.getSubtract())) { intercept = -(Double) r.getValue(); } assertEquals("x",ll.getName()); assertEquals(-3.0,slope,1e-6); assertEquals(-5.0,intercept,1e-6); }
if(lr.getOperator() != null && lr.getOperator().equals(ot.getUMinus())) { ... }
if(ot.getUMinus().equals(lr.getOperator())) { ... }
slope = getSlopeFormExpression(jep.getLastRootNode());
intercept = getInterceptFromExpression(jep.getLastRootNode());
String getSlopeFormExpression(Node node) {
return processNodeForValueAsString(node.jjtGetChild(0));
}
String getInterceptFromExpression(Node node) {
String results;
results = processNodeForValueAsString(node.jjtGetChild(1));
if(jep.getLastRootNode().getOperator().getSymbol().equals("+")) {
return results;
} else {
if(!results.startsWith("-")) {
results = "-" + results;
} else {
int pos = results.indexOf("-");
results = results.substring(pos+1);
}
}
return results;
}
String processNodeForValueAsString(Node node) {
if(node.getOperator() != null) {
return node.getOperator().getSymbol() + node.jjtGetChild(0).getValue().toString();
} else {
return node.getValue().toString();
}
}