org.teatrove.tea.parsetree
Interface NodeVisitor

All Known Implementing Classes:
TreeMutator, TreeWalker, TypeChecker.Visitor

public interface NodeVisitor

A NodeVisitor enables operations to be performed on a parse tree. The Visitor design pattern is discussed in detail in Design Patterns (ISBN 0-201-63361-2) by Gamma, Helm, Johnson and Vlissides.

The traditional operations performed on parse trees are type checking and code generation. The Visitor allows those operations to all be encapsulated into one place instead of having that functionality spread out into every Node subclass. It also makes it easy to target multiple languages by allowing any kind of code generation Visitor to be designed.

When using a Visitor to traverse a parse tree, the code responsible for moving the traversal into children nodes can either be placed in the nodes or in the Visitor implementation. The NodeVisitor places that responsibility onto NodeVisitor implementations because it is much more flexible. As a result, all Nodes have the same simple implementation for their "accept" method, but do not inherit it.

Every visit method in this interface returns an Object. The definition of that returned Object is left up to the specific implementation of the NodeVisitor. Most NodeVisitors can simply return null, but those that are modifying a parse tree or are using one to create another can use the returned Object to pass around newly created Nodes.

Author:
Brian S O'Neill
See Also:
Node.accept(NodeVisitor)

Method Summary
 Object visit(AndExpression node)
           
 Object visit(ArithmeticExpression node)
           
 Object visit(ArrayLookup node)
           
 Object visit(AssignmentStatement node)
           
 Object visit(Block node)
           
 Object visit(BooleanLiteral node)
           
 Object visit(BreakStatement node)
           
 Object visit(CompareExpression node)
           
 Object visit(ConcatenateExpression node)
           
 Object visit(ContinueStatement node)
           
 Object visit(ExceptionGuardStatement node)
           
 Object visit(Expression node)
           
 Object visit(ExpressionList node)
           
 Object visit(ExpressionStatement node)
           
 Object visit(ForeachStatement node)
           
 Object visit(FunctionCallExpression node)
           
 Object visit(IfStatement node)
           
 Object visit(ImportDirective node)
           
 Object visit(Lookup node)
           
 Object visit(Name node)
           
 Object visit(NegateExpression node)
           
 Object visit(NewArrayExpression node)
           
 Object visit(NoOpExpression node)
           
 Object visit(NotExpression node)
           
 Object visit(NullLiteral node)
           
 Object visit(NumberLiteral node)
           
 Object visit(OrExpression node)
           
 Object visit(ParenExpression node)
           
 Object visit(RelationalExpression node)
           
 Object visit(ReturnStatement node)
           
 Object visit(SpreadExpression node)
           
 Object visit(Statement node)
           
 Object visit(StatementList node)
           
 Object visit(StringLiteral node)
           
 Object visit(SubstitutionStatement node)
           
 Object visit(Template node)
           
 Object visit(TemplateCallExpression node)
           
 Object visit(TernaryExpression node)
           
 Object visit(TypeExpression node)
           
 Object visit(TypeName node)
           
 Object visit(Variable node)
           
 Object visit(VariableRef node)
           
 

Method Detail

visit

Object visit(Template node)

visit

Object visit(Name node)

visit

Object visit(TypeName node)

visit

Object visit(Variable node)

visit

Object visit(ExpressionList node)

visit

Object visit(Statement node)

visit

Object visit(StatementList node)

visit

Object visit(Block node)

visit

Object visit(AssignmentStatement node)

visit

Object visit(ForeachStatement node)

visit

Object visit(IfStatement node)

visit

Object visit(SubstitutionStatement node)

visit

Object visit(ExpressionStatement node)

visit

Object visit(ReturnStatement node)

visit

Object visit(ExceptionGuardStatement node)

visit

Object visit(BreakStatement node)

visit

Object visit(ContinueStatement node)

visit

Object visit(Expression node)

visit

Object visit(ParenExpression node)

visit

Object visit(NewArrayExpression node)

visit

Object visit(FunctionCallExpression node)

visit

Object visit(TemplateCallExpression node)

visit

Object visit(VariableRef node)

visit

Object visit(Lookup node)

visit

Object visit(ArrayLookup node)

visit

Object visit(NegateExpression node)

visit

Object visit(NotExpression node)

visit

Object visit(ConcatenateExpression node)

visit

Object visit(ArithmeticExpression node)

visit

Object visit(RelationalExpression node)

visit

Object visit(AndExpression node)

visit

Object visit(OrExpression node)

visit

Object visit(TernaryExpression node)

visit

Object visit(CompareExpression node)

visit

Object visit(NoOpExpression node)

visit

Object visit(SpreadExpression node)

visit

Object visit(TypeExpression node)

visit

Object visit(NullLiteral node)

visit

Object visit(BooleanLiteral node)

visit

Object visit(StringLiteral node)

visit

Object visit(NumberLiteral node)

visit

Object visit(ImportDirective node)


Copyright © 1997-2012 TeaTrove.org. All Rights Reserved.