//Jonathan Kleiner 1/29/05 CSG110 HW2 import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.io.*; public class GenericVisitor extends Visitor{ int indent = 0; String lastClass = ""; Vector termList = new Vector(10); public void start(){ System.out.println(" start generic display "); termList.add("Integer"); termList.add("java.lang.Character"); termList.add("java.lang.Boolean"); termList.add("java.lang.Byte"); termList.add("java.lang.Short"); termList.add("java.lang.Long"); termList.add("java.lang.Float"); termList.add("java.lang.Double"); termList.add("java.lang.String"); termList.add("java.lang.Void"); try{ BufferedReader in = new BufferedReader(new FileReader("newterminals")); String str; while((str = in.readLine()) != null){ termList.add(str); } in.close(); } catch (IOException e){} } public void before(Object host){ indent++; String className = host.getClass().getName(); if(lastClass.compareTo(className)!=0){ for(int i=0; i 0 ) className = lastClass.substring(index+1); else className = lastClass; for(int i=0; i : " + className + " \"" + target + "\""); else System.out.println("<" + label + "> : " + lastClass); } public void after(Object host){ indent--; } public void after(Object source, String label, Object target){ indent--; } public void finish(){ System.out.println(" finish generic display "); } private boolean isTerminalWithInformation(Object obj){ ListIterator iter = termList.listIterator(); String next; String className = obj.getClass().getName(); while(iter.hasNext()){ next = (String)iter.next(); //if(next.compareTo(className)==0) if(className.endsWith(next)) return true; } return false; } }