Search in sources :

Example 11 with SyntaxError

use of org.matheclipse.parser.client.SyntaxError in project symja_android_library by axkr.

the class SymjaInterpreter method interpreter.

/**
	 * Parse the <code>codeString</code> into an <code>IExpr</code> and if
	 * <code>function</code> unequals <code>null</code>, replace all occurences
	 * of slot <code>#</code> in the function with the parsed expression. After
	 * that evaluate the given expression.
	 * 
	 * @param function
	 * @return
	 */
public String interpreter(IAST function) {
    String evalStr = codeString;
    IExpr expr;
    EvalEngine engine = EvalEngine.get();
    try {
        ExprParser p = new ExprParser(engine, true);
        // throws SyntaxError exception, if syntax isn't valid
        expr = p.parse(evalStr);
    } catch (SyntaxError e1) {
        try {
            ExprParser p = new ExprParser(engine);
            // throws SyntaxError exception, if syntax isn't valid
            expr = p.parse(evalStr);
        } catch (Exception e2) {
            outStream.println(e2.getMessage());
            return "";
        }
    }
    IExpr result;
    final StringBuilder buf = new StringBuilder();
    try {
        if (function != null) {
            expr = function.replaceAll(F.Rule(F.Slot1, expr));
        }
        if (expr.isPresent()) {
            result = evaluate(expr);
            if (result.isPresent()) {
                if (result.equals(F.Null)) {
                    return buf.toString();
                }
                OutputFormFactory.get(true).convert(buf, result);
            }
            return buf.toString();
        }
    } catch (final RuntimeException re) {
        Throwable me = re.getCause();
        if (me instanceof MathException) {
            Validate.printException(buf, me);
        } else {
            Validate.printException(buf, re);
        }
    } catch (final Exception e) {
        Validate.printException(buf, e);
    }
    return buf.toString();
}
Also used : SyntaxError(org.matheclipse.parser.client.SyntaxError) MathException(org.matheclipse.parser.client.math.MathException) IExpr(org.matheclipse.core.interfaces.IExpr) ExprParser(org.matheclipse.core.parser.ExprParser) MathException(org.matheclipse.parser.client.math.MathException)

Example 12 with SyntaxError

use of org.matheclipse.parser.client.SyntaxError in project symja_android_library by axkr.

the class ExprParser method test.

public static boolean test(final String str) {
    try {
        ExprParser fParser = new ExprParser(EvalEngine.get());
        final IExpr parsedExpression = fParser.parse(str);
        // final IExpr parsedExpression = AST2Expr.CONST.convert(parsedAST);
        if (parsedExpression != null) {
            return true;
        }
    } catch (final SyntaxError e) {
    }
    return false;
}
Also used : SyntaxError(org.matheclipse.parser.client.SyntaxError) IExpr(org.matheclipse.core.interfaces.IExpr)

Example 13 with SyntaxError

use of org.matheclipse.parser.client.SyntaxError in project symja_android_library by axkr.

the class SymbolicSO43739728 method main.

public static void main(String[] args) {
    try {
        ExprEvaluator util = new ExprEvaluator();
        // (3/4)*(4/3)*Sqrt(2)*I
        IExpr formula = F.Times(F.QQ(3, 4), F.QQ(4, 3), F.Sqrt(F.ZZ(2)), F.CI);
        // symbolic evaluation
        IExpr result = util.evaluate(formula);
        // print: I*Sqrt(2)
        System.out.println(result.toString());
        // numerical evaluations
        result = util.evaluate(F.N(formula));
        // I*1.4142135623730951
        System.out.println(result.toString());
    } catch (SyntaxError e) {
        // catch Symja parser errors here
        System.out.println(e.getMessage());
    } catch (MathException me) {
        // catch Symja math errors here
        System.out.println(me.getMessage());
    } catch (Exception e) {
        e.printStackTrace();
    } catch (final StackOverflowError soe) {
        System.out.println(soe.getMessage());
    } catch (final OutOfMemoryError oome) {
        System.out.println(oome.getMessage());
    }
}
Also used : ExprEvaluator(org.matheclipse.core.eval.ExprEvaluator) SyntaxError(org.matheclipse.parser.client.SyntaxError) MathException(org.matheclipse.parser.client.math.MathException) IExpr(org.matheclipse.core.interfaces.IExpr) MathException(org.matheclipse.parser.client.math.MathException)

Example 14 with SyntaxError

use of org.matheclipse.parser.client.SyntaxError in project symja_android_library by axkr.

the class CalculusExample method main.

public static void main(String[] args) {
    try {
        // don't distinguish between lower- and uppercase identifiers
        Config.PARSER_USE_LOWERCASE_SYMBOLS = true;
        ExprEvaluator util = new ExprEvaluator(false, 100);
        // Show an expression in the Java form:
        // Note: single character identifiers are case sensistive
        // (the "D()" function input must be written as upper case
        // character)
        String javaForm = util.toJavaForm("D(sin(x)*cos(x),x)");
        // prints: D(Times(Sin(x),Cos(x)),x)
        System.out.println(javaForm.toString());
        // Use the Java form to create an expression with F.* static
        // methods:
        IAST function = D(Times(Sin(x), Cos(x)), x);
        IExpr result = util.evaluate(function);
        // print: Cos(x)^2-Sin(x)^2
        System.out.println(result.toString());
        // Note "diff" is an alias for the "D" function
        result = util.evaluate("diff(sin(x)*cos(x),x)");
        // print: Cos(x)^2-Sin(x)^2
        System.out.println(result.toString());
        // evaluate the last result ($ans contains "last answer")
        result = util.evaluate("$ans+cos(x)^2");
        // print: 2*Cos(x)^2-Sin(x)^2
        System.out.println(result.toString());
        // evaluate an Integrate[] expression
        result = util.evaluate("integrate(sin(x)^5,x)");
        // print: 2/3*Cos(x)^3-1/5*Cos(x)^5-Cos(x)
        System.out.println(result.toString());
        // set the value of a variable "a" to 10
        // Note: in server mode the variable name must have a preceding '$'
        // character
        result = util.evaluate("a=10");
        // print: 10
        System.out.println(result.toString());
        // do a calculation with variable "a"
        result = util.evaluate("a*3+b");
        // print: 30+b
        System.out.println(result.toString());
        // Do a calculation in "numeric mode" with the N() function
        // Note: single character identifiers are case sensistive
        // (the "N()" function input must be written as upper case
        // character)
        result = util.evaluate("N(sinh(5))");
        // print: 74.20321057778875
        System.out.println(result.toString());
        // define a function with a recursive factorial function definition.
        // Note: fac(0) is the stop condition.
        result = util.evaluate("fac(x_IntegerQ):=x*fac(x-1);fac(0)=1");
        // now calculate factorial of 10:
        result = util.evaluate("fac(10)");
        // print: 3628800
        System.out.println(result.toString());
    } catch (SyntaxError e) {
        // catch Symja parser errors here
        System.out.println(e.getMessage());
    } catch (MathException me) {
        // catch Symja math errors here
        System.out.println(me.getMessage());
    } catch (final Exception ex) {
        System.out.println(ex.getMessage());
    } catch (final StackOverflowError soe) {
        System.out.println(soe.getMessage());
    } catch (final OutOfMemoryError oome) {
        System.out.println(oome.getMessage());
    }
}
Also used : ExprEvaluator(org.matheclipse.core.eval.ExprEvaluator) SyntaxError(org.matheclipse.parser.client.SyntaxError) MathException(org.matheclipse.parser.client.math.MathException) IAST(org.matheclipse.core.interfaces.IAST) IExpr(org.matheclipse.core.interfaces.IExpr) MathException(org.matheclipse.parser.client.math.MathException)

Example 15 with SyntaxError

use of org.matheclipse.parser.client.SyntaxError in project symja_android_library by axkr.

the class Console method prettyPrinter3Lines.

private String[] prettyPrinter3Lines(final String inputExpression) {
    IExpr result;
    final StringWriter buf = new StringWriter();
    try {
        if (fSeconds <= 0) {
            result = fEvaluator.evaluate(inputExpression);
        } else {
            result = fEvaluator.evaluateWithTimeout(inputExpression, fSeconds, TimeUnit.SECONDS, true);
        }
        if (result != null) {
            if (result.equals(F.Null)) {
                return null;
            }
            ASCIIPrettyPrinter3 strBuffer = new ASCIIPrettyPrinter3();
            strBuffer.convert(result);
            return strBuffer.toStringBuilder();
        }
    } catch (final SyntaxError se) {
        String msg = se.getMessage();
        System.err.println();
        System.err.println(msg);
        return null;
    } catch (final RuntimeException re) {
        Throwable me = re.getCause();
        if (me instanceof MathException) {
            Validate.printException(buf, me);
        } else {
            Validate.printException(buf, re);
        }
        return null;
    } catch (final Exception e) {
        Validate.printException(buf, e);
        return null;
    } catch (final OutOfMemoryError e) {
        Validate.printException(buf, e);
        return null;
    } catch (final StackOverflowError e) {
        Validate.printException(buf, e);
        return null;
    }
    String[] strArray = new String[3];
    strArray[0] = "";
    strArray[1] = buf.toString();
    strArray[3] = "";
    return strArray;
}
Also used : ASCIIPrettyPrinter3(org.matheclipse.core.form.output.ASCIIPrettyPrinter3) StringWriter(java.io.StringWriter) SyntaxError(org.matheclipse.parser.client.SyntaxError) MathException(org.matheclipse.parser.client.math.MathException) IExpr(org.matheclipse.core.interfaces.IExpr) MathException(org.matheclipse.parser.client.math.MathException) IOException(java.io.IOException)

Aggregations

SyntaxError (org.matheclipse.parser.client.SyntaxError)15 IExpr (org.matheclipse.core.interfaces.IExpr)13 MathException (org.matheclipse.parser.client.math.MathException)13 ExprEvaluator (org.matheclipse.core.eval.ExprEvaluator)6 IOException (java.io.IOException)5 IAST (org.matheclipse.core.interfaces.IAST)5 StringWriter (java.io.StringWriter)3 ExprParser (org.matheclipse.core.parser.ExprParser)3 BufferedReader (java.io.BufferedReader)2 File (java.io.File)2 FileInputStream (java.io.FileInputStream)1 FileReader (java.io.FileReader)1 InputStreamReader (java.io.InputStreamReader)1 ASCIIPrettyPrinter3 (org.matheclipse.core.form.output.ASCIIPrettyPrinter3)1 ExprMonomial (org.matheclipse.core.polynomials.ExprMonomial)1 ExprPolynomial (org.matheclipse.core.polynomials.ExprPolynomial)1 ExprPolynomialRing (org.matheclipse.core.polynomials.ExprPolynomialRing)1