org.lsmp.djep.xjep.Eval Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jep Show documentation
Show all versions of jep Show documentation
JEP is a Java library for parsing and evaluating mathematical expressions.
/* @author rich
* Created on 18-Jun-2003
*/
package org.lsmp.djep.xjep;
import org.nfunk.jep.function.PostfixMathCommand;
import org.nfunk.jep.*;
import java.util.*;
/**
* Symbolic eval(x^3,x,2) operator.
* @author R Morris.
* Created on 18-Jun-2003
*/
public class Eval extends PostfixMathCommand implements CommandVisitorI
{
/**
* Create a function that evaluates the lhs with values given on rhs.
* e.g. eval(f,x,1,y,2) sets variable x to 1, y to 2 and evaluates f.
*/
public Eval()
{
super();
numberOfParameters = -1;
}
//TODO probably broken
public Node process(Node node,Node children[],XJep xjep) throws ParseException
{
Vector errorList = new Vector();
int nchild = children.length;
if(nchild %2 == 0)
throw new ParseException("Number of parameters must be odd");
XSymbolTable localSymTab = (XSymbolTable) ((XSymbolTable) xjep.getSymbolTable()).newInstance();
XJep localJep = xjep.newInstance(localSymTab);
for(Enumeration en = xjep.getSymbolTable().keys();en.hasMoreElements();)
{
String key = (String) en.nextElement();
Object val = xjep.getSymbolTable().getValue(key);
localSymTab.addVariable(key,val);
}
/** first evaluate the arguments **/
for(int i=1;i