19
CS269: HW/SW Engineering of Embedded Systems, Winter02
Visitors
public class MetaModelVisitor {
   public MetamodelVisitor(int traversalMethod) { ...  }
   public Object visitCompileUnitNode(CompileUnitNode node, LinkedList args) {
      return _defaultVisit(node,args);
   }
   public Object visitProcessDeclNode(ProcessDeclNode node, LinkedList args) {
       return _defaultVisit(node,args);
    }
    ...
 
   protected Object _defaultVisit(TreeNode node, LinkedList args) {
       return null;
    }
}
public class MyVisitor extends MetaModelVisitor {
   // Implement visit methods and choose traversal method
 }
How to traverse the tree
e.g. preorder
What to do on each node
e.g. emit code