core: import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.lang.reflect.*; import edu.neu.ccs.demeter.*; add: class PrintVisitor extends UniversalVisitor { protected int indent; public int get_indent() {{ return indent; }} public void set_indent(int new_indent) {{ indent = new_indent; }} protected boolean needSpace; public boolean get_needSpace() {{ return needSpace; }} public void set_needSpace(boolean new_needSpace) {{ needSpace = new_needSpace; }} public constructor PrintVisitor() {{ super(); }} public constructor PrintVisitor(int indent, boolean needSpace) {{ super(); set_indent(indent); set_needSpace(needSpace); }} {{ protected java.io.PrintWriter out = new java.io.PrintWriter(System.out, true); java.io.PrintWriter get_out() { return out; } void set_out(java.io.PrintWriter new_out) { out = new_out; } PrintVisitor(java.io.PrintWriter out) { set_out(out); } PrintVisitor(java.io.PrintStream out) { set_out(new java.io.PrintWriter(out, true)); } }} public void finish() {{ out.flush(); }} protected void space() {{ if (needSpace) out.print(" "); needSpace = false; }} public void after_imports(GlobalImports source, Import_SList dest) {{ out.println(); for (int i = 0; i < indent; i++) out.print("\t"); needSpace = false; }} public void before_packagename(Import source, PackageName dest) {{ space(); out.print("import"); needSpace = true; }} public void after(Import host) {{ out.print(";"); needSpace = false; }} public void before(ImportAllClasses host) {{ out.print(".*"); needSpace = false; }} public void before_parameters(Adjacency source, Vertex_Comma_list dest) {{ out.print("("); needSpace = false; }} public void after_parameters(Adjacency source, Vertex_Comma_list dest) {{ out.print(")"); needSpace = false; }} public void after_ns(Adjacency source, Neighbors dest) {{ out.print("."); needSpace = false; }} public void before(Construct_ns host) {{ out.print("="); needSpace = false; }} public void before_alternat_ns(Alternat_ns source, Term_Bar_list dest) {{ out.print(":"); needSpace = false; }} public void before(Common host) {{ out.print("*common*"); needSpace = false; }} public void before_sandwiched(Repetit_n source, Kernel_Sandwich dest) {{ out.print("~"); needSpace = false; }} public void before_repeated(Kernel source, Term_Sandwich dest) {{ out.print("{"); needSpace = false; }} public void after_repeated(Kernel source, Term_Sandwich dest) {{ out.print("}"); needSpace = false; }} public void before_vertex_name(Vertex source, Ident dest) {{ space(); out.print(source.get_vertex_name()); needSpace = true; }} public void before(Print_indent host) {{ out.print("+"); needSpace = false; }} public void before(Print_unindent host) {{ out.print("-"); needSpace = false; }} public void before(Print_skip host) {{ out.print("*l"); needSpace = true; }} public void before(Print_space host) {{ out.print("*s"); needSpace = true; }} public void before_string(Regular_syntax source, String dest) {{ space(); out.print("\"" + source.get_string() + "\""); needSpace = true; }} public void before_label_name(Labeled source, Ident dest) {{ out.print("<"); needSpace = false; space(); out.print(source.get_label_name()); needSpace = true; }} public void after_label_name(Labeled source, Ident dest) {{ out.print(">"); needSpace = false; }} public void before_module_name(Term source, Module_name dest) {{ out.print("@"); needSpace = false; }} public void before_actual_parameters(Term source, Term_Comma_list dest) {{ out.print("("); needSpace = false; }} public void after_actual_parameters(Term source, Term_Comma_list dest) {{ out.print(")"); needSpace = false; }} public void before_module_name(Module_name source, Ident dest) {{ space(); out.print(source.get_module_name()); needSpace = true; }} public void before_opt(Optional_term source, Opt_labeled_term_Sandwich dest) {{ out.print("["); needSpace = false; }} public void after_opt(Optional_term source, Opt_labeled_term_Sandwich dest) {{ out.print("]"); needSpace = false; }} public void before_indent(PrintVisitor source, int dest) {{ space(); out.print(source.get_indent()); needSpace = true; }} public void before_needSpace(PrintVisitor source, boolean dest) {{ space(); out.print(source.get_needSpace()); needSpace = true; }} public void before_copy(CopyVisitor source, Object dest) {{ space(); out.print(source.get_copy()); needSpace = true; }} public void before_is_equal(SubgraphVisitor source, boolean dest) {{ space(); out.print(source.get_is_equal()); needSpace = true; }} public void before_is_equal(EqualVisitor source, boolean dest) {{ space(); out.print(source.get_is_equal()); needSpace = true; }} public void before_indent(DisplayVisitor source, int dest) {{ space(); out.print(source.get_indent()); needSpace = true; }} public void before_indent(TraceVisitor source, int dest) {{ space(); out.print(source.get_indent()); needSpace = true; }} public void before_it(Nonempty_PackageName source, Ident dest) {{ space(); out.print(source.get_it()); needSpace = true; }} public void before_next(Nonempty_PackageName source, Nonempty_PackageName dest) {{ out.print("."); needSpace = false; }} public void before_next(Nonempty_Import_SList source, Nonempty_Import_SList dest) {{ out.println(); for (int i = 0; i < indent; i++) out.print("\t"); needSpace = false; }} public void before_next(Nonempty_Vertex_Comma_list source, Nonempty_Vertex_Comma_list dest) {{ out.print(","); needSpace = false; }} public void before_next(Nonempty_Term_Bar_list source, Nonempty_Term_Bar_list dest) {{ out.print("|"); needSpace = false; }} public void before_next(Nonempty_Term_Comma_list source, Nonempty_Term_Comma_list dest) {{ out.print(","); needSpace = false; }} {{ void universal_trv0_bef(UniversalVisitor _v_) { super.universal_trv0_bef(_v_); } }} {{ void universal_trv0_aft(UniversalVisitor _v_) { super.universal_trv0_aft(_v_); } }} {{ void universal_trv0(UniversalVisitor _v_) { universal_trv0_bef(_v_); super.universal_trv0(_v_); universal_trv0_aft(_v_); } }} }