/** * Parse the given expression * @param new_expr A string containing an expression, for example "2+3" * @return JongFunction */ public JongFunction Parse(String new_expr, ICheckModelName checkModelName, JongErrWarn errW) { try { _checkModelName = checkModelName; // initialize all variables expr = new_expr; ans = 0.0; // Pare the expression into a function tree format JongFunction function = parse_start(); //TODO: Equations: Commented out for C# //@SuppressWarnings("unused") String dbgString = FuncToString(function, " ", "++++", errW); dbgString += "\n"; // System.out.print(dbgString); return(function); } catch (JongError err) { errW.Init(ErrWStat.UNKNOWN_ERROR, err.get(), false); return(null); } }
/** * Parse the given expression * @param new_expr A string containing an expression, for example "2+3" * @return ans A string containing the answer, or an error when * an error occurred */ public String ParseAndEval(String new_expr, ICheckModelName checkModelName, JongErrWarn errW) { try { _checkModelName = checkModelName; // initialize all variables expr = new_expr; ans = 0.0; // Pare the expression into a function tree format JongFunction function = parse_start(); String dbgString = FuncToString(function, " ", "----", errW); dbgString += "\n"; //System.out.print(dbgString); // evaluate the expression ans = function.eval(); if (function is JongFunctionAssign) { // function assignment JongFunctionAssign fa = (JongFunctionAssign)function; String desc = ""; desc += fa.getName(); desc += "("; for (int i = 0; i < fa.getVariables().Count(); i++) { if (i > 0) { desc += ", "; } desc += fa.getVariables().ElementAt(i).getName(); } desc += ")"; ans_str = "Function " + desc + " defined"; } else if (function is JongVariableAssign) { // variable assignment JongVariableAssign JongVariableAssign = (JongVariableAssign)function; ans_str = string.Format("%s = %g", JongVariableAssign.getName(), ans); // add the answer to memory as variable "Ans" variablelist["ANS"] = ans; } else { //DecimalFormat formatter = new DecimalFormat("#.##########"); ans_str = string.Format("{0:#.##########}", ans); // add the answer to memory as variable "Ans" variablelist["ANS"] = ans; } } catch (JongError err) { errW.Init(ErrWStat.UNKNOWN_ERROR, err.get(), false); ans_str = err.get(); expr = ""; } return(ans_str); }