Class PostfixEvaluator

java.lang.Object
com.singularsys.jep.walkers.PostfixTreeWalker
com.singularsys.jep.walkers.PostfixEvaluator
All Implemented Interfaces:
Evaluator, JepComponent, 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:
  • Field Details

  • Constructor Details

    • PostfixEvaluator

      public PostfixEvaluator()
  • Method Details

    • evaluate

      public 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 interface Evaluator
      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 class PostfixTreeWalker
      Parameters:
      node - the current node being visited
      nchildren - number of children of the node
      depth - 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 class PostfixTreeWalker
      Parameters:
      node - the current node being visited
      nchildren - number of children of the node
      depth - 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 class PostfixTreeWalker
      Parameters:
      node - the current node being visited
      nchildren - number of children of the node
      depth - depth of tree, root node is depth 1.
    • visit

      protected void visit(ASTConstant node, int nchildren, int depth)
      Description copied from class: PostfixTreeWalker
      Visit a constant node
      Specified by:
      visit in class PostfixTreeWalker
      Parameters:
      node - the current node being visited
      nchildren - number of children of the node
      depth - depth of tree, root node is depth 1.
    • suppressExaminingChildren

      protected boolean suppressExaminingChildren(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:
      suppressExaminingChildren in class PostfixTreeWalker
      Returns:
      false unless overridden by sub-class
    • eval

      public Object eval(Node node) throws EvaluationException
      Description copied from interface: Evaluator
      Evaluates a sub expression. This method can be called by PostfixMathCommands which implement CallbackEvaluationI
      Specified by:
      eval in interface Evaluator
      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 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 interface JepComponent
      Parameters:
      jep - the current Jep instance
    • getLightWeightInstance

      public JepComponent getLightWeightInstance()
      Return new PostfixEvaluator
      Specified by:
      getLightWeightInstance in interface JepComponent
      Returns:
      either a new instance, null or 'this'.