import edu.neu.ccs.demeter.dj.*; import java.util.*; import java.lang.reflect.*; import edu.neu.ccs.demeter.*; 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 PrintVisitor() { super(); } public 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_); } }