📄 jelprocs.java
字号:
import gnu.jel.*;
import gnu.jel.generated.EC;
import gnu.jel.generated.ParseException;
import gnu.jel.generated.TokenMgrError;
public class JelProcs {
public static Class[] staticLib;
public static Library lib;
public static Class[] dynamicLib;
public static Object[] rtp;
public static JelVariableProvider vp;
public static CompiledExpression compiledExpr;
public static boolean initLibs(String expr) {
boolean flag = true;
staticLib=new Class[1];
GaaMisc.debug("Creating static lib");
try {
staticLib[0]=Class.forName("java.lang.Math");
}
catch(ClassNotFoundException e) {
return false;
};
lib=new Library(staticLib,null);
GaaMisc.debug("Marking state-dependent");
try {
lib.markStateDependent("random",null);
}
catch (NoSuchMethodException e) {
return false;
};
dynamicLib=new Class[1];
rtp=new Object[1];
GaaMisc.debug("Creating variable provider");
vp=new JelVariableProvider();
Class oldmath=staticLib[0];
staticLib=new Class[2];
staticLib[0]=oldmath;
staticLib[1]=vp.getClass();
rtp[0]=vp;
GaaMisc.debug("Creating dynamic lib");
dynamicLib[0]=vp.getClass();
lib=new Library(staticLib,dynamicLib);
try {
GaaMisc.debug("Compiling expression");
compiledExpr = Evaluator.compile(expr,lib);
}
catch (Exception e) {
flag = false;
}
GaaMisc.debug("Finished Jel libs creation");
return flag;
};
public static double calc(String expr,double vars[]) {
boolean flag;
double result;
JelProcs jl = new JelProcs();
flag = jl.initLibs(expr);
jl.vp.initVariables(vars);
try {
result = jl.compiledExpr.evaluate_double(jl.rtp);
}
catch (Throwable e) {
result = -12345;
}
return result;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -