/** * Evaluates the given ExpressionValue and returns the result in MathPiper syntax. * * @param resolveVariables: states whether variables from the GeoGebra kernel should be used. Note * that this changes the given ExpressionValue. */ public synchronized String toMaximaString(ValidExpression ve, boolean resolveVariables) { // resolve global variables if (resolveVariables) { casParser.resolveVariablesForCAS(ve); } // convert to Maxima String String MaximaStr = doToMaximaString(ve, resolveVariables); // handle assignments String veLabel = ve.getLabel(); if (veLabel != null) { StringBuilder sb = new StringBuilder(); if (ve instanceof FunctionNVar) { // function, e.g. f(x) := 2*x FunctionNVar fun = (FunctionNVar) ve; sb.append(veLabel); sb.append("("); sb.append(fun.getVarString()); sb.append(") := "); // evaluate right hand side: // import for e.g. g(x) := Eval(D(x) x^2) // sb.append("Eval("); sb.append(MaximaStr); // sb.append(")"); MaximaStr = sb.toString(); } else { // assignment, e.g. a := 5 MaximaStr = veLabel + " := " + MaximaStr; } } // TODO: remove // System.out.println("CASmaxima.toMaxima: " + MaximaStr); return MaximaStr; }