use of org.matheclipse.core.eval.EvalControlledCallable in project symja_android_library by axkr.
the class Console method interpreter.
/**
* Evaluates the given string-expression and returns the result in <code>OutputForm</code>
*
* @param trimmedInput a trimmed input string
* @return
*/
/* package private */
String interpreter(final String trimmedInput) {
IExpr result;
final StringWriter buf = new StringWriter();
try {
if (trimmedInput.length() > 1 && trimmedInput.charAt(0) == '?') {
IExpr doc = Documentation.findDocumentation(trimmedInput);
return printResult(doc);
}
if (fSeconds <= 0) {
result = fEvaluator.eval(trimmedInput);
} else {
result = fEvaluator.evaluateWithTimeout(trimmedInput, fSeconds, TimeUnit.SECONDS, true, new EvalControlledCallable(fEvaluator.getEvalEngine()));
}
if (result != null) {
return printResult(result);
}
} catch (final AbortException re) {
return printResult(S.$Aborted);
} catch (final FailedException re) {
return printResult(S.$Failed);
} catch (final SyntaxError se) {
String msg = se.getMessage();
stderr.println(msg);
// stderr.println();
stderr.flush();
return "";
} catch (final RuntimeException re) {
Throwable me = re.getCause();
if (me instanceof MathException) {
Validate.printException(buf, me);
} else {
Validate.printException(buf, re);
}
stderr.println(buf.toString());
stderr.flush();
return "";
} catch (final Exception | OutOfMemoryError | StackOverflowError e) {
Validate.printException(buf, e);
stderr.println(buf.toString());
stderr.flush();
return "";
}
return buf.toString();
}
Aggregations