Package com.singularsys.jep.walkers
Class PostfixEvaluator
- java.lang.Object
-
- com.singularsys.jep.walkers.PostfixTreeWalker
-
- com.singularsys.jep.walkers.PostfixEvaluator
-
- All Implemented Interfaces:
Evaluator
,JepComponent
,java.io.Serializable
public class PostfixEvaluator extends PostfixTreeWalker implements Evaluator
Evaluation component that avoids excessive use of the stack for large expressions. Instead of using recursion to traverse the expression tree, traversal is based on the PostfixTreeWalker.- Author:
- Richard Morris
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Stack<java.lang.Object>
stack
-
Constructor Summary
Constructors Constructor Description PostfixEvaluator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
eval(Node node)
Evaluates a sub expression.java.lang.Object
evaluate(Node node)
Main entry point, evaluates a node and returns and object with the value of the node.JepComponent
getLightWeightInstance()
Return new PostfixEvaluatorvoid
init(Jep jep)
Initialize the component.protected boolean
supressExaminingChildren(Node child)
Whether to examine the children of this nodes.protected void
visit(ASTConstant node, int nchildren, int depth)
Visit a constant nodeprotected void
visit(ASTFunNode node, int nchildren, int depth)
Visit a function nodeprotected void
visit(ASTOpNode node, int nchildren, int depth)
Visit an operator nodeprotected void
visit(ASTVarNode node, int nchildren, int depth)
Visit a variable node-
Methods inherited from class com.singularsys.jep.walkers.PostfixTreeWalker
walk, walkSubEquations
-
-
-
-
Method Detail
-
evaluate
public java.lang.Object evaluate(Node node) throws EvaluationException
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;
-
visit
protected void visit(ASTFunNode node, int nchildren, int depth) throws EvaluationException
Description copied from class:PostfixTreeWalker
Visit a function node- Specified by:
visit
in classPostfixTreeWalker
- Parameters:
node
- the current node being visitednchildren
- number of children of the nodedepth
- depth of tree, root node is depth 1.- Throws:
EvaluationException
-
visit
protected void visit(ASTOpNode node, int nchildren, int depth) throws EvaluationException
Description copied from class:PostfixTreeWalker
Visit an operator node- Specified by:
visit
in classPostfixTreeWalker
- Parameters:
node
- the current node being visitednchildren
- number of children of the nodedepth
- depth of tree, root node is depth 1.- Throws:
EvaluationException
-
visit
protected void visit(ASTVarNode node, int nchildren, int depth)
Description copied from class:PostfixTreeWalker
Visit a variable node- Specified by:
visit
in classPostfixTreeWalker
- Parameters:
node
- the current node being visitednchildren
- number of children of the nodedepth
- depth of tree, root node is depth 1.
-
visit
protected void visit(ASTConstant node, int nchildren, int depth) throws EvaluationException
Description copied from class:PostfixTreeWalker
Visit a constant node- Specified by:
visit
in classPostfixTreeWalker
- Parameters:
node
- the current node being visitednchildren
- number of children of the nodedepth
- depth of tree, root node is depth 1.- Throws:
EvaluationException
-
supressExaminingChildren
protected boolean supressExaminingChildren(Node child)
Description copied from class:PostfixTreeWalker
Whether to examine the children of this nodes. In some cases it is necessary to jump out of traversal strategy to process a node.- Overrides:
supressExaminingChildren
in classPostfixTreeWalker
- Returns:
- false unless overridden by sub-class
-
eval
public java.lang.Object eval(Node node) throws EvaluationException
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;
-
init
public void init(Jep jep)
Description copied from interface:JepComponent
Initialize the component. This methods 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
-
getLightWeightInstance
public JepComponent getLightWeightInstance()
Return new PostfixEvaluator- Specified by:
getLightWeightInstance
in interfaceJepComponent
- Returns:
- either an new instance, null or 'this'.
-
-