core: import edu.neu.ccs.demeter.dj.*; import java.util.*; import edu.neu.ccs.demeter.*; add: class CheckCircleVisitor extends Visitor { public constructor CheckCircleVisitor() {{ super(); }} public static CheckCircleVisitor parse(java.io.Reader in) throws ParseException {{ return new Parser(in)._CheckCircleVisitor(); }} public static CheckCircleVisitor parse(java.io.InputStream in) throws ParseException {{ return new Parser(in)._CheckCircleVisitor(); }} public static CheckCircleVisitor parse(String s) {{ try { return parse(new java.io.StringReader(s)); } catch (ParseException e) { throw new RuntimeException(e.toString()); } }} {{ void before(ClassInfo host){ ClassInfo_List subList = host.get_subclass(); Vector nameV = new Vector(); Ident hostName = new Ident(host.get_name().get_ident()); nameV.addElement(hostName); // System.out.println(); System.out.print("hostName = " + hostName + "::"); if (subList != null) findCircle(nameV,subList); } }} {{ void findCircle(Vector nameV,ClassInfo_List subList){ ClassInfo subClass; Ident subName; java.util.Enumeration en = subList.elements(); int i,len; while(en.hasMoreElements()){ subClass = (ClassInfo)en.nextElement(); subName = subClass.get_name().get_ident(); // System.out.print("subName = " + subName + "; "); if(nameV.isEmpty() == false){ i = nameV.indexOf(subName); if(i == 0){ System.out.print("Error: cyclic inheritance from class "); System.out.print((Ident)nameV.elementAt(i)); i++; len = nameV.size(); while(i