Package com.singularsys.jeptests.system
Class StackCheckingFastEvaluator
java.lang.Object
com.singularsys.jeptests.system.StackCheckingFastEvaluator
- All Implemented Interfaces:
Evaluator
,JepComponent
,ParserVisitor
,Serializable
An Evaluator which checks the stack size after every function call.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected boolean
protected boolean
protected boolean
Whether null values for variables are trapped -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionEvaluates a sub expression.Main entry point, evaluates a node and returns and object with the value of the node.Gets a light-weight instance suitable for using in multiple threads.void
Initialize the component.boolean
boolean
boolean
Whether null values for variables are trapped.boolean
Whether variables with unset values are trapped.protected Object
nodeAccept
(Node node) void
setTrapInfinity
(boolean trapInfinity) void
setTrapNaN
(boolean trapNaN) void
setTrapNullValues
(boolean trapNullValues) Sets whether null values for variables are trapped.void
setTrapUnsetValues
(boolean trapUnsetValues) Sets whether unset variable values are trapped.visit
(ASTConstant node, Object data) visit
(ASTFunNode node, Object data) visit
(ASTVarNode node, Object data) visitConstant
(Node node) protected Object
Visits a function/operator node.
-
Field Details
-
trapUnsetValues
protected boolean trapUnsetValuesWhether null values for variables are trapped -
trapNullValues
protected boolean trapNullValues -
trapNaN
protected boolean trapNaN -
trapInfinity
protected boolean trapInfinity
-
-
Constructor Details
-
StackCheckingFastEvaluator
public StackCheckingFastEvaluator()
-
-
Method Details
-
init
Description copied from interface:JepComponent
Initialize the component. This method is called whenever a component is added to Jep. Hence, it allows components to keep track of the other components they may rely on.- Specified by:
init
in interfaceJepComponent
- Parameters:
jep
- the current Jep instance
-
eval
Description copied from interface:Evaluator
Evaluates a sub expression. This method can be called by PostfixMathCommands which implementCallbackEvaluationI
- Specified by:
eval
in interfaceEvaluator
- Parameters:
node
- node to evaluate- Returns:
- The value after evaluating the sub expression.
- Throws:
EvaluationException
- if errors occur during evaluation;
-
evaluate
Description copied from interface:Evaluator
Main entry point, evaluates a node and returns and object with the value of the node.- Specified by:
evaluate
in interfaceEvaluator
- Parameters:
node
- node to evaluate- Returns:
- value after evaluation
- Throws:
EvaluationException
- if errors occur during evaluation;
-
nodeAccept
- Throws:
EvaluationException
-
visit
- Specified by:
visit
in interfaceParserVisitor
- Throws:
EvaluationException
-
visitConstant
- Throws:
EvaluationException
-
visit
- Specified by:
visit
in interfaceParserVisitor
- Throws:
EvaluationException
-
visitVar
- Throws:
EvaluationException
-
visit
- Specified by:
visit
in interfaceParserVisitor
- Throws:
EvaluationException
-
visit
- Specified by:
visit
in interfaceParserVisitor
- Throws:
EvaluationException
-
visitFun
Visits a function/operator node. This is the most visited method for most expression evaluations. Keeping it fast is important.- Parameters:
node
-- Throws:
EvaluationException
-
isTrapUnsetValues
public boolean isTrapUnsetValues()Whether variables with unset values are trapped.- Returns:
- Since:
- 3.5
-
setTrapUnsetValues
public void setTrapUnsetValues(boolean trapUnsetValues) Sets whether unset variable values are trapped. This flag is set by when theVariable.setValidValue(boolean)
or cleared usingVariableTable.clearValues()
.- Parameters:
trapUnsetValues
- true to trap unset values, false to ignore them- Since:
- 3.5
-
isTrapNullValues
public boolean isTrapNullValues()Whether null values for variables are trapped.- Returns:
- the status if the trap null values flag.
-
setTrapNullValues
public void setTrapNullValues(boolean trapNullValues) Sets whether null values for variables are trapped. If set (the default) then an EvaluationException is thrown for null values of variables. If not set then null values are passed to PostfixMathCommands who will need to test for null values.- Parameters:
trapNullValues
-
-
isTrapNaN
public boolean isTrapNaN() -
setTrapNaN
public void setTrapNaN(boolean trapNaN) -
isTrapInfinity
public boolean isTrapInfinity() -
setTrapInfinity
public void setTrapInfinity(boolean trapInfinity) -
getLightWeightInstance
Description copied from interface:JepComponent
Gets a light-weight instance suitable for using in multiple threads.- Specified by:
getLightWeightInstance
in interfaceJepComponent
- Returns:
- a new FastEvaluator
-