// generated by program in: // http://www.ccs.neu.edu/research/demeter/sources/DemeterJava/examples/j-gprint // output simplified A{ void g_print() to * (PrintVisitor); // should work but does not yet // instead use temporarily void g_print_temp() (@ StringWriter w = new StringWriter(); PrintVisitor p = new PrintVisitor(new PrintWriter(w)); this.universal_trv0(p); System.out.println(w); @) void display() to * (DisplayVisitor); int countG() to * { // use inlined visitor (@ int total; @) init (@ total = 0; @) before G (@ total = total + 1; @) return int (@ total @) } // traversal t(PrintingVisitor2 pv) {to *;} } Main { (@ static public void main(String args[]) throws Exception { A a = A.parse(System.in); System.out.println("print:"); a.g_print(); System.out.println("print again:"); a.g_print_temp(); System.out.println(" end of printing"); System.out.println("tree structure:"); a.display(); System.out.println("count:"); int result = a.countG(); System.out.println(result + " done "); } @) } // PrintingVisitor2{ // before A (@ System.out.print(" a "); @) // after A (@ System.out.print(" enda "); @) // before D (@ System.out.print(" d "); @) // before E (@ System.out.print(" e "); @) // before H (@ System.out.print(" h "); @) // }