core: import edu.neu.ccs.demeter.dj.*; import java.util.*; import edu.neu.ccs.demeter.*; add: class Main { public constructor Main() {{ super(); }} public static Main parse(java.io.Reader in) throws ParseException {{ return new Parser(in)._Main(); }} public static Main parse(java.io.InputStream in) throws ParseException {{ return new Parser(in)._Main(); }} public static Main parse(String s) {{ try { return parse(new java.io.StringReader(s)); } catch (ParseException e) { throw new RuntimeException(e.toString()); } }} {{ static ClassGraph cg = new ClassGraph(true,false); static public void main(String args[]) throws Exception { Cd_graph graph = Cd_graph.parse(System.in); undefinedClasses(graph); uniqueParts(graph); } static public void FlattenGraph(Cd_graph graph) { Strategy s_Classes = new Strategy("from Cd_graph to Vertex"); TraversalGraph tg1 = new TraversalGraph(s_Classes, cg); tg1.traverse(graph, new FlattenVisitor(false)); } static public void uniqueParts(Cd_graph graph) { Strategy s_Classes = new Strategy("from Cd_graph to Vertex"); TraversalGraph tg1 = new TraversalGraph(s_Classes, cg); tg1.traverse(graph, new UniqueVisitor(false)); } static public void undefinedClasses(Cd_graph graph) { HashSet hs1 = new HashSet(); HashSet hs2 = new HashSet(); Strategy s_Parents = new Strategy("from Cd_graph bypassing Neighbors"+ " to Vertex"); Strategy s_Children = new Strategy("from Cd_graph through Neighbors"+ " to Vertex"); TraversalGraph tg1 = new TraversalGraph(s_Parents, cg); TraversalGraph tg2 = new TraversalGraph(s_Children, cg); tg1.traverse(graph, new UndefinedVisitor(hs1,false)); tg2.traverse(graph, new UndefinedVisitor(hs2,false)); Iterator step = hs2.iterator(); while (step.hasNext()) { String s = (String)step.next(); if (!hs1.contains(s)) System.out.println("Warning: class "+s+" not defined!"); } } }} {{ void universal_trv0_bef(UniversalVisitor _v_) { ((UniversalVisitor) _v_).before(this); } }} {{ void universal_trv0_aft(UniversalVisitor _v_) { ((UniversalVisitor) _v_).after(this); } }} {{ void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); universal_trv0_aft(_v_); } }} }