Tutorial
Table of contents:Customizing built-in evaluator
Restricting an evaluator
Javaluator come with some built-in functions or operators. But, for some uses, it could be too much.
Imagine you are developping a simple calculator to learn basic operations to children. For sure, the built-in trigonometric functions are not valuable. The good news is that Javaluator allows you to customize built-in evaluator to recognize only a subset of the built-in functions, operators, constants, or brackets.
This could be done by passing a parameters argument to the built-in constructor.
First, you have to create a Parameters instance, then add the functions, operators, constants and brackets you want to it.
Parameters params = new Parameters(); // Define the parameters. params.add(DoubleEvaluator.PLUS); ... params.addExpressionBracket(BracketPair.PARENTHESES);
Then create the evaluator, it will only know what is defined in its parameters.
DoubleEvaluator evaluator = new DoubleEvaluator(params);
Here is a complete working sample code:
package com.fathzer.soft.javaluator.examples; import com.fathzer.soft.javaluator.*; /** An example of how to restrict operators, functions and constants of an existing evaluator. */ public class Restricting { public static void main(String[] args) { // Let's create a double evaluator that only support +,-,*,and / operators, with no constants, // and no functions. The default parenthesis will be allowed // First create empty evaluator parameters Parameters params = new Parameters(); // Add the supported operators to these parameters params.add(DoubleEvaluator.PLUS); params.add(DoubleEvaluator.MINUS); params.add(DoubleEvaluator.MULTIPLY); params.add(DoubleEvaluator.DIVIDE); params.add(DoubleEvaluator.NEGATE); // Add the default expression brackets params.addExpressionBracket(BracketPair.PARENTHESES); // Create the restricted evaluator DoubleEvaluator evaluator = new DoubleEvaluator(params); // Let's try some expressions doIt(evaluator, "(3*-4)+2"); doIt(evaluator, "3^2"); doIt(evaluator, "ln(5)"); } private static void doIt(DoubleEvaluator evaluator, String expression) { try { System.out.println (expression+" = "+evaluator.evaluate(expression)); } catch (IllegalArgumentException e) { System.out.println (expression+" is an invalid expression"); } } }
The output is (3*-4)+2 = -10.0
3^2 is an invalid expression
ln(5) is an invalid expression