Package com.singularsys.jep.walkers

# Class PrefixTreeWalker

java.lang.Object
com.singularsys.jep.walkers.PrefixTreeWalker

Direct Known Subclasses:
  `PrefixTreeDumper`

public abstract class PrefixTreeWalker extends Object
Base class for routines which use a non-recursive tree walker strategy. The typical recursive strategy can use a lot of stack frames for very large expressions these can cause a stack overflow exception. Subclasses should implement the visit methods of `ParserVisitor` to traverse the various nodes. In general these methods should not recursively walk the child nodes. This class uses a prefix traversal scheme hence the nodes of '1+2' will be visited in the order +,1,2.

Author:
  Richard Morris
See Also:
  - `PostfixTreeWalker`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PrefixTreeWalker()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract void`
  `visit(ASTConstant node, int nchildren, int depth1)`
  `protected abstract void`
  `visit(ASTFunNode node, int nchildren, int depth1)`
  `protected abstract void`
  `visit(ASTOpNode node, int nchildren, int depth1)`
  `protected abstract void`
  `visit(ASTVarNode node, int nchildren, int depth1)`
  `void`
  `walk(Node top)`
  Uses a non-recursive method to traverse the tree under the node 'top'.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### PrefixTreeWalker

    public PrefixTreeWalker()

- ## Method Details

  - ### walk

    public void walk(Node top) throws JepException
    Uses a non-recursive method to traverse the tree under the node 'top'.
    Parameters:
      `top` - the top node of the parse tree.
    Throws:
      `JepException`

  - ### visit

    protected abstract void visit(ASTFunNode node, int nchildren, int depth1) throws JepException
    Throws:
      `JepException`

  - ### visit

    protected abstract void visit(ASTOpNode node, int nchildren, int depth1) throws JepException
    Throws:
      `JepException`

  - ### visit

    protected abstract void visit(ASTVarNode node, int nchildren, int depth1) throws JepException
    Throws:
      `JepException`

  - ### visit

    protected abstract void visit(ASTConstant node, int nchildren, int depth1) throws JepException
    Throws:
      `JepException`