1 17 package org.eclipse.emf.importer.rose.builder; 18 19 import java.util.List ; 20 21 import org.eclipse.emf.importer.rose.parser.RoseNode; 22 23 24 27 public class RoseWalker 28 { 29 private RoseNode roseNode; 30 private RoseVisitor visitor; 31 32 public RoseWalker(RoseNode roseNode) 33 { 34 this.roseNode = roseNode; 35 } 36 37 public void traverse(RoseVisitor visitor) 38 { 39 this.visitor = visitor; 40 traverseObject(roseNode); 41 } 42 43 private void traverseObject(RoseNode roseNode) 44 { 45 visitor.visitObject(roseNode); 46 traverse(roseNode); 47 } 48 49 private void traverseList(RoseNode roseNode) 50 { 51 visitor.visitList(roseNode); 52 traverse(roseNode); 53 } 54 55 private void traverse(RoseNode roseNode) 56 { 57 List nodes = roseNode.getNodes(); 58 for (int i = 0; i < nodes.size(); i++) 59 { 60 RoseNode node = (RoseNode)nodes.get(i); 61 if (node.getRoseNodeType() == RoseNode.OBJECT) 62 { 63 traverseObject(node); 64 } 65 else if (node.getRoseNodeType() == RoseNode.LIST) 66 { 67 traverseList(node); 68 } 69 } 70 } 71 } 72 | Popular Tags |