Class DefaultEvaluator
- java.lang.Object
-
- org.scijava.parse.eval.AbstractEvaluator
-
- org.scijava.parse.eval.AbstractStackEvaluator
-
- org.scijava.parse.eval.AbstractStandardStackEvaluator
-
- org.scijava.parse.eval.DefaultEvaluator
-
- All Implemented Interfaces:
Evaluator,StackEvaluator,StandardEvaluator
public class DefaultEvaluator extends AbstractStandardStackEvaluator
An expression evaluator for moststandard operatorswith common built-in types (i.e.:Booleans,Strings andNumbers).Caveats
This class is a big bag of case logic for various operators and types. Looking at it, you might think: "It sure would be nice to modularize this, with each operation in its own class, with properly declared types, and called dynamically at runtime as appropriate."
"Great idea!" I would reply. Then I would suggest you have a look at the SciJava Ops and ImageJ Ops projects, which do exactly that in an extensible way.
Or maybe you are thinking: "This can't possibly work as well as awesome JVM-based scripting languages like Jython and Groovy..."
To which I would reply: "You are absolutely right! This class is mostly just a demonstration of an extensible, working evaluator built using the
org.scijava.parse.evalpackage. If your use case is only concerned with feature-rich evaluation of standard types, then building on top of a scripting language might make more sense."- Author:
- Curtis Rueden
- See Also:
The main class, to give it a spin.
-
-
Constructor Summary
Constructors Constructor Description DefaultEvaluator()DefaultEvaluator(ExpressionParser parser)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doubleadd(double a, double b)floatadd(float a, float b)intadd(int a, int b)longadd(long a, long b)java.lang.Objectadd(java.lang.Object a, java.lang.Object b)Applies theOperators.ADDoperator.java.lang.Stringadd(java.lang.String a, java.lang.String b)java.math.BigDecimaladd(java.math.BigDecimal a, java.math.BigDecimal b)java.math.BigIntegeradd(java.math.BigInteger a, java.math.BigInteger b)intbitwiseAnd(int a, int b)longbitwiseAnd(long a, long b)java.lang.ObjectbitwiseAnd(java.lang.Object a, java.lang.Object b)Applies theOperators.BITWISE_ANDoperator.java.math.BigIntegerbitwiseAnd(java.math.BigInteger a, java.math.BigInteger b)intbitwiseOr(int a, int b)longbitwiseOr(long a, long b)java.lang.ObjectbitwiseOr(java.lang.Object a, java.lang.Object b)Applies theOperators.BITWISE_ORoperator.java.math.BigIntegerbitwiseOr(java.math.BigInteger a, java.math.BigInteger b)java.lang.Objectbraces(java.lang.Object[] args)Applies theOperators.BRACESoperator.java.lang.Objectbrackets(java.lang.Object[] args)Applies theOperators.BRACKETSoperator.java.lang.Objectcolon(java.lang.Object a, java.lang.Object b)Applies theOperators.COLONoperator.intcomplement(int a)longcomplement(long a)java.lang.Objectcomplement(java.lang.Object a)Applies theOperators.COMPLEMENToperator.doublediv(double a, double b)floatdiv(float a, float b)intdiv(int a, int b)longdiv(long a, long b)java.lang.Objectdiv(java.lang.Object a, java.lang.Object b)Applies theOperators.DIVoperator.java.math.BigDecimaldiv(java.math.BigDecimal a, java.math.BigDecimal b)java.math.BigIntegerdiv(java.math.BigInteger a, java.math.BigInteger b)java.lang.Objectdot(java.lang.Object a, java.lang.Object b)Applies theOperators.DOToperator.java.lang.ObjectdotDiv(java.lang.Object a, java.lang.Object b)Applies theOperators.DOT_DIVoperator.java.lang.ObjectdotMul(java.lang.Object a, java.lang.Object b)Applies theOperators.DOT_MULoperator.java.lang.ObjectdotPow(java.lang.Object a, java.lang.Object b)Applies theOperators.DOT_POWoperator.java.lang.ObjectdotRightDiv(java.lang.Object a, java.lang.Object b)Applies theOperators.DOT_RIGHT_DIVoperator.java.lang.ObjectdotTranspose(java.lang.Object a)Applies theOperators.DOT_TRANSPOSEoperator.java.lang.Objectequal(java.lang.Object a, java.lang.Object b)Applies theOperators.EQUALoperator.java.lang.Objectfunction(java.lang.Object a, java.lang.Object b)Applies theFunctionoperator.<T> booleangreaterThan(java.lang.Comparable<T> a, T b)java.lang.ObjectgreaterThan(java.lang.Object a, java.lang.Object b)Applies theOperators.GREATER_THANoperator.<T> booleangreaterThanOrEqual(java.lang.Comparable<T> a, T b)java.lang.ObjectgreaterThanOrEqual(java.lang.Object a, java.lang.Object b)Applies theOperators.GREATER_THAN_OR_EQUALoperator.java.lang.ObjectinstanceOf(java.lang.Object a, java.lang.Object b)Applies theOperators.INSTANCEOFoperator.intleftShift(int a, int b)longleftShift(long a, long b)java.lang.ObjectleftShift(java.lang.Object a, java.lang.Object b)Applies theOperators.LEFT_SHIFToperator.java.math.BigIntegerleftShift(java.math.BigInteger a, int b)<T> booleanlessThan(java.lang.Comparable<T> a, T b)java.lang.ObjectlessThan(java.lang.Object a, java.lang.Object b)Applies theOperators.LESS_THANoperator.<T> booleanlessThanOrEqual(java.lang.Comparable<T> a, T b)java.lang.ObjectlessThanOrEqual(java.lang.Object a, java.lang.Object b)Applies theOperators.LESS_THAN_OR_EQUALoperator.booleanlogicalAnd(boolean a, boolean b)java.lang.ObjectlogicalAnd(java.lang.Object a, java.lang.Object b)Applies theOperators.LOGICAL_ANDoperator.booleanlogicalOr(boolean a, boolean b)java.lang.ObjectlogicalOr(java.lang.Object a, java.lang.Object b)Applies theOperators.LOGICAL_ORoperator.doublemod(double a, double b)floatmod(float a, float b)intmod(int a, int b)longmod(long a, long b)java.lang.Objectmod(java.lang.Object a, java.lang.Object b)Applies theOperators.MODoperator.java.math.BigDecimalmod(java.math.BigDecimal a, java.math.BigDecimal b)java.math.BigIntegermod(java.math.BigInteger a, java.math.BigInteger b)doublemul(double a, double b)floatmul(float a, float b)intmul(int a, int b)longmul(long a, long b)java.lang.Objectmul(java.lang.Object a, java.lang.Object b)Applies theOperators.MULoperator.java.math.BigDecimalmul(java.math.BigDecimal a, java.math.BigDecimal b)java.math.BigIntegermul(java.math.BigInteger a, java.math.BigInteger b)doubleneg(double num)floatneg(float num)intneg(int num)longneg(long num)java.lang.Objectneg(java.lang.Object a)Applies theOperators.NEGoperator.java.math.BigDecimalneg(java.math.BigDecimal num)java.math.BigIntegerneg(java.math.BigInteger num)booleannot(boolean a)java.lang.Objectnot(java.lang.Object a)Applies theOperators.NOToperator.java.lang.ObjectnotEqual(java.lang.Object a, java.lang.Object b)Applies theOperators.NOT_EQUALoperator.java.lang.Objectparens(java.lang.Object[] args)Applies theOperators.PARENSoperator.doublepos(double num)floatpos(float num)intpos(int num)longpos(long num)java.lang.Objectpos(java.lang.Object a)Applies theOperators.POSoperator.doublepow(double a, double b)java.lang.Objectpow(java.lang.Object a, java.lang.Object b)Applies theOperators.POWoperator.java.math.BigDecimalpow(java.math.BigDecimal a, int b)java.math.BigIntegerpow(java.math.BigInteger a, int b)java.lang.ObjectrightDiv(java.lang.Object a, java.lang.Object b)Applies theOperators.RIGHT_DIVoperator.intrightShift(int a, int b)longrightShift(long a, long b)java.lang.ObjectrightShift(java.lang.Object a, java.lang.Object b)Applies theOperators.RIGHT_SHIFToperator.java.math.BigIntegerrightShift(java.math.BigInteger a, int b)doublesub(double a, double b)floatsub(float a, float b)intsub(int a, int b)longsub(long a, long b)java.lang.Objectsub(java.lang.Object a, java.lang.Object b)Applies theOperators.SUBoperator.java.math.BigDecimalsub(java.math.BigDecimal a, java.math.BigDecimal b)java.math.BigIntegersub(java.math.BigInteger a, java.math.BigInteger b)java.lang.Objecttranspose(java.lang.Object a)Applies theOperators.TRANSPOSEoperator.intunsignedRightShift(int a, int b)longunsignedRightShift(long a, long b)java.lang.ObjectunsignedRightShift(java.lang.Object a, java.lang.Object b)Applies theOperators.UNSIGNED_RIGHT_SHIFToperator.-
Methods inherited from class org.scijava.parse.eval.AbstractStandardStackEvaluator
addAssign, andAssign, assign, divAssign, dotDivAssign, dotPowAssign, dotRightDivAssign, execute, leftShiftAssign, modAssign, mulAssign, orAssign, postDec, postInc, powAssign, preDec, preInc, rightDivAssign, rightShiftAssign, subAssign, unsignedRightShiftAssign
-
Methods inherited from class org.scijava.parse.eval.AbstractStackEvaluator
evaluate
-
Methods inherited from class org.scijava.parse.eval.AbstractEvaluator
evaluate, evaluate, get, getParser, isStrict, set, setAll, setStrict, value
-
-
-
-
Constructor Detail
-
DefaultEvaluator
public DefaultEvaluator()
-
DefaultEvaluator
public DefaultEvaluator(ExpressionParser parser)
-
-
Method Detail
-
function
public java.lang.Object function(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theFunctionoperator.
-
dot
public java.lang.Object dot(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DOToperator.
-
parens
public java.lang.Object parens(java.lang.Object[] args)
Description copied from interface:StandardEvaluatorApplies theOperators.PARENSoperator.
-
brackets
public java.lang.Object brackets(java.lang.Object[] args)
Description copied from interface:StandardEvaluatorApplies theOperators.BRACKETSoperator.
-
braces
public java.lang.Object braces(java.lang.Object[] args)
Description copied from interface:StandardEvaluatorApplies theOperators.BRACESoperator.
-
transpose
public java.lang.Object transpose(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.TRANSPOSEoperator.
-
dotTranspose
public java.lang.Object dotTranspose(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.DOT_TRANSPOSEoperator.
-
pow
public java.lang.Object pow(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.POWoperator.
-
pow
public double pow(double a, double b)
-
pow
public java.math.BigInteger pow(java.math.BigInteger a, int b)
-
pow
public java.math.BigDecimal pow(java.math.BigDecimal a, int b)
-
dotPow
public java.lang.Object dotPow(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DOT_POWoperator.
-
pos
public java.lang.Object pos(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.POSoperator.
-
pos
public int pos(int num)
-
pos
public long pos(long num)
-
pos
public float pos(float num)
-
pos
public double pos(double num)
-
neg
public java.lang.Object neg(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.NEGoperator.
-
neg
public int neg(int num)
-
neg
public long neg(long num)
-
neg
public float neg(float num)
-
neg
public double neg(double num)
-
neg
public java.math.BigInteger neg(java.math.BigInteger num)
-
neg
public java.math.BigDecimal neg(java.math.BigDecimal num)
-
complement
public java.lang.Object complement(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.COMPLEMENToperator.
-
complement
public int complement(int a)
-
complement
public long complement(long a)
-
not
public java.lang.Object not(java.lang.Object a)
Description copied from interface:StandardEvaluatorApplies theOperators.NOToperator.
-
not
public boolean not(boolean a)
-
mul
public java.lang.Object mul(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.MULoperator.
-
mul
public int mul(int a, int b)
-
mul
public long mul(long a, long b)
-
mul
public float mul(float a, float b)
-
mul
public double mul(double a, double b)
-
mul
public java.math.BigInteger mul(java.math.BigInteger a, java.math.BigInteger b)
-
mul
public java.math.BigDecimal mul(java.math.BigDecimal a, java.math.BigDecimal b)
-
div
public java.lang.Object div(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DIVoperator.
-
div
public int div(int a, int b)
-
div
public long div(long a, long b)
-
div
public float div(float a, float b)
-
div
public double div(double a, double b)
-
div
public java.math.BigInteger div(java.math.BigInteger a, java.math.BigInteger b)
-
div
public java.math.BigDecimal div(java.math.BigDecimal a, java.math.BigDecimal b)
-
mod
public java.lang.Object mod(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.MODoperator.
-
mod
public int mod(int a, int b)
-
mod
public long mod(long a, long b)
-
mod
public float mod(float a, float b)
-
mod
public double mod(double a, double b)
-
mod
public java.math.BigInteger mod(java.math.BigInteger a, java.math.BigInteger b)
-
mod
public java.math.BigDecimal mod(java.math.BigDecimal a, java.math.BigDecimal b)
-
rightDiv
public java.lang.Object rightDiv(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.RIGHT_DIVoperator.
-
dotMul
public java.lang.Object dotMul(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DOT_MULoperator.
-
dotDiv
public java.lang.Object dotDiv(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DOT_DIVoperator.
-
dotRightDiv
public java.lang.Object dotRightDiv(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.DOT_RIGHT_DIVoperator.
-
add
public java.lang.Object add(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.ADDoperator.
-
add
public java.lang.String add(java.lang.String a, java.lang.String b)
-
add
public int add(int a, int b)
-
add
public long add(long a, long b)
-
add
public float add(float a, float b)
-
add
public double add(double a, double b)
-
add
public java.math.BigInteger add(java.math.BigInteger a, java.math.BigInteger b)
-
add
public java.math.BigDecimal add(java.math.BigDecimal a, java.math.BigDecimal b)
-
sub
public java.lang.Object sub(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.SUBoperator.
-
sub
public int sub(int a, int b)
-
sub
public long sub(long a, long b)
-
sub
public float sub(float a, float b)
-
sub
public double sub(double a, double b)
-
sub
public java.math.BigInteger sub(java.math.BigInteger a, java.math.BigInteger b)
-
sub
public java.math.BigDecimal sub(java.math.BigDecimal a, java.math.BigDecimal b)
-
leftShift
public java.lang.Object leftShift(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.LEFT_SHIFToperator.
-
leftShift
public int leftShift(int a, int b)
-
leftShift
public long leftShift(long a, long b)
-
leftShift
public java.math.BigInteger leftShift(java.math.BigInteger a, int b)
-
rightShift
public java.lang.Object rightShift(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.RIGHT_SHIFToperator.
-
rightShift
public int rightShift(int a, int b)
-
rightShift
public long rightShift(long a, long b)
-
rightShift
public java.math.BigInteger rightShift(java.math.BigInteger a, int b)
-
unsignedRightShift
public java.lang.Object unsignedRightShift(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.UNSIGNED_RIGHT_SHIFToperator.
-
unsignedRightShift
public int unsignedRightShift(int a, int b)
-
unsignedRightShift
public long unsignedRightShift(long a, long b)
-
colon
public java.lang.Object colon(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.COLONoperator.
-
lessThan
public java.lang.Object lessThan(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.LESS_THANoperator.
-
lessThan
public <T> boolean lessThan(java.lang.Comparable<T> a, T b)
-
greaterThan
public java.lang.Object greaterThan(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.GREATER_THANoperator.
-
greaterThan
public <T> boolean greaterThan(java.lang.Comparable<T> a, T b)
-
lessThanOrEqual
public java.lang.Object lessThanOrEqual(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.LESS_THAN_OR_EQUALoperator.
-
lessThanOrEqual
public <T> boolean lessThanOrEqual(java.lang.Comparable<T> a, T b)
-
greaterThanOrEqual
public java.lang.Object greaterThanOrEqual(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.GREATER_THAN_OR_EQUALoperator.
-
greaterThanOrEqual
public <T> boolean greaterThanOrEqual(java.lang.Comparable<T> a, T b)
-
instanceOf
public java.lang.Object instanceOf(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.INSTANCEOFoperator.
-
equal
public java.lang.Object equal(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.EQUALoperator.
-
notEqual
public java.lang.Object notEqual(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.NOT_EQUALoperator.
-
bitwiseAnd
public java.lang.Object bitwiseAnd(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.BITWISE_ANDoperator.
-
bitwiseAnd
public int bitwiseAnd(int a, int b)
-
bitwiseAnd
public long bitwiseAnd(long a, long b)
-
bitwiseAnd
public java.math.BigInteger bitwiseAnd(java.math.BigInteger a, java.math.BigInteger b)
-
bitwiseOr
public java.lang.Object bitwiseOr(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.BITWISE_ORoperator.
-
bitwiseOr
public int bitwiseOr(int a, int b)
-
bitwiseOr
public long bitwiseOr(long a, long b)
-
bitwiseOr
public java.math.BigInteger bitwiseOr(java.math.BigInteger a, java.math.BigInteger b)
-
logicalAnd
public java.lang.Object logicalAnd(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.LOGICAL_ANDoperator.
-
logicalAnd
public boolean logicalAnd(boolean a, boolean b)
-
logicalOr
public java.lang.Object logicalOr(java.lang.Object a, java.lang.Object b)Description copied from interface:StandardEvaluatorApplies theOperators.LOGICAL_ORoperator.
-
logicalOr
public boolean logicalOr(boolean a, boolean b)
-
-